GitHub Actions secrets 自动填写及更新(改)

基于Aerozb的代码进行了简单地更改 点击按钮触发脚本执行,当脚本未设置env数据或者脚本env与本地不同时 弹窗提示恢复或者覆盖

// ==UserScript==
// @name         GitHub Actions secrets 自动填写及更新(改)
// @namespace    https://gf.qytechs.cn/zh-CN/scripts/427698
// @version      1.0.3
// @description  基于Aerozb的代码进行了简单地更改 点击按钮触发脚本执行,当脚本未设置env数据或者脚本env与本地不同时 弹窗提示恢复或者覆盖
// @author       lukey
// @match        https://github.com/*/settings/secrets/actions*
// @grant        GM_notification
// ==/UserScript==

;(function () {
	'use strict'
	var Subhead = document.getElementsByClassName('Subhead')[0]
	Subhead.style.justifyContent = 'space-between'
	var button = document.createElement('div')
	button.className = 'Subhead-actions btn'
	button.innerText = '自动注入secrets'
	Subhead.appendChild(button)
	var flag = null

	button.onclick = function () {
		star()
	}

	function star() {
		console.clear()
		let env = new Object()
		let suffix = null
		let envKeys = []
		/*
    在此注释以下面添加secrets
    格式: env.机密名 = ‘机密值',如有多个机密值请使用&符号分开
    ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓*/
    //示例:
    //换成自己的助力码即可
    env.DDFACTORY_SHARECODES = 'T0225KkcRU8Y9FaEIh_3wPAKcQCjVWnYaS5kRrbA&T0225KkcRU8Y9FaEIh_3wPAKcQCjVWnYaS5kRrbA&T0225KkcRU8Y9FaEIh_3wPAKcQCjVWnYaS5kRrbA&T0225KkcRU8Y9FaEIh_3wPAKcQCjVWnYaS5kRrbA'
    env.FRUITSHARECODES = '9bfe7b5b330f4af0b1f979fc87fe2944&9bfe7b5b330f4af0b1f979fc87fe2944&9bfe7b5b330f4af0b1f979fc87fe2944&9bfe7b5b330f4af0b1f979fc87fe2944&9bfe7b5b330f4af0b1f979fc87fe2944'
    env.PETSHARECODES = 'MTE1NDAxNzcwMDAwMDAwMzg5NTg4NTk=&MTE1NDAxNzcwMDAwMDAwMzg5NTg4NTk=&MTE1NDAxNzcwMDAwMDAwMzg5NTg4NTk=&MTE1NDAxNzcwMDAwMDAwMzg5NTg4NTk='
    env.PLANT_BEAN_SHARECODES = 'mlrdw3aw26j3wflpva4usauts5ecdk3fted7y5q&mlrdw3aw26j3wflpva4usauts5ecdk3fted7y5q&mlrdw3aw26j3wflpva4usauts5ecdk3fted7y5q&mlrdw3aw26j3wflpva4usauts5ecdk3fted7y5q'
    env.DREAM_FACTORY_SHARE_CODES = 'xE2FHpwP8-NFxEoASj29sw==&xE2FHpwP8-NFxEoASj29sw==&xE2FHpwP8-NFxEoASj29sw==&xE2FHpwP8-NFxEoASj29sw=='
    env.JDJOY_SHARECODES = 'A1c07QOFPcgMt1FYRLhlmKt9zd5YaBeE&A1c07QOFPcgMt1FYRLhlmKt9zd5YaBeE&A1c07QOFPcgMt1FYRLhlmKt9zd5YaBeE&A1c07QOFPcgMt1FYRLhlmKt9zd5YaBeE'
    env.JXNC_SHARECODES = '{"smp":"a591e640e867399f627a8e2b47d6f903","active":"jdnc_1_3yuanganju210601_2","joinnum":1}&{"smp":"a591e640e867399f627a8e2b47d6f903","active":"jdnc_1_3yuanganju210601_2","joinnum":1}&{"smp":"a591e640e867399f627a8e2b47d6f903","active":"jdnc_1_3yuanganju210601_2","joinnum":1}&{"smp":"a591e640e867399f627a8e2b47d6f903","active":"jdnc_1_3yuanganju210601_2","joinnum":1}'
    env.JDSGMH_SHARECODES = 'T0225KkcRU8Y9FaEIh_3wPAKcQCjVQmoaT5kRrbA&T0225KkcRU8Y9FaEIh_3wPAKcQCjVQmoaT5kRrbA&T0225KkcRU8Y9FaEIh_3wPAKcQCjVQmoaT5kRrbA&T0225KkcRU8Y9FaEIh_3wPAKcQCjVQmoaT5kRrbA'
    env.JD_CASH_SHARECODES = 'eU9Yab2zZ_5182vWn3QT0w&eU9Yab2zZ_5182vWn3QT0w&eU9Yab2zZ_5182vWn3QT0w&eU9Yab2zZ_5182vWn3QT0w'
		//↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
	 let newObj = Object.keys(env);

		if (localStorage.getItem('env')&&newObj.length==0) {
			if (confirm('本地储存中存在secrets,是否恢复?')) env = JSON.parse(localStorage.getItem('env'))
		} else if (!localStorage.getItem('env')||localStorage.getItem('env')!=JSON.stringify(env)) {
			if (confirm('脚本与本地数据不一致,是否更新到本地nev数据?'))	localStorage.setItem('env', JSON.stringify(env))
		} else {
			GM_notification({text: `当前脚本与本地储存env一致`, title: '不需要同步env', timeout: 3000});
		}
		envKeys = Object.keys(env);
		let keyLen = envKeys.length
		let index = localStorage.getItem('index')
		let url = window.location.href
		let rex = url.lastIndexOf('/')
    suffix = url.substring(rex + 1, url.length)
    
		//通过截取URL斜杠后的字符串,判断当前页,是添加还是修改或者secret页面
   
		//在secret页面才进行失败的secret判断
		if (isSecretPage()) {
			//判断是否有设置失败的secret
			let failedDiv = document.querySelectorAll('div')
			let isDel = true
			for (let i = 0; i < failedDiv.length; i++) {
				if (macth(failedDiv[i].innerHTML, 'Please try again')) {
					isDel = false
					if (localStorage.getItem('resetSecret') == null) {
						localStorage.setItem('resetSecret', envKeys[index - 1])
					}
					break
				}
			}

			//成功设置,则移除resetSecret
			if (isDel) {
				localStorage.removeItem('resetSecret')
			}
		}

		if (index == keyLen) {
			if (confirm('已设置完所有secrets或已设置完新增的secrets,是否从头开始设置')) {
				if (confirm('真的确定从头开始设置?')) {
					index = setIndex(index)
				}
			}
		} else if (!index || index > keyLen) {
			index = setIndex(index)
		}

		//获取设置失败的secret
		let resetSecret = localStorage.getItem('resetSecret')
		if (isSecretPage()) {
			//获取页面secrets
			let keynameList = []
			document.querySelectorAll('code').forEach(e => {
				if (macth(e.className, 'f5')) {
					keynameList.push(e.innerText)
				}
			})

			//是否进入更新页
			let isUpdate = false

			//遍历页面secrets,进行下一步动作
			for (let i = index; i < keyLen; i++) {
				for (let j = 0; j < keynameList.length; j++) {
					//先进入需要重新设置secret的修改页面
					if (resetSecret != null) {
						if (resetSecret == keynameList[j]) {
							window.location.href += '/' + resetSecret
							isUpdate = true
							break
						}
					} else {
						if (envKeys[i] == keynameList[j]) {
							localStorage.setItem('index', i)
							window.location.href += '/' + envKeys[i]
							isUpdate = true
							break
						}
					}
				}
				if (isUpdate) {
					break
				}
				window.location.href += '/new'
				break
			}
		} else if (suffix === 'new') {
			if (resetSecret == null) {
				document.querySelector('#secret_name').value = envKeys[index]
			}
			// 处理设置失败的secret
			else {
				document.querySelector('#secret_name').value = resetSecret
			}
			addOrUpadteValue(true)
		} else {
			addOrUpadteValue(false)
		}

		function addOrUpadteValue(isAdd) {
			//先处理设置失败的secret
			if (resetSecret != null) {
				document.querySelector('#secret_value').value = env[resetSecret]
			} else if (isAdd) {
				document.querySelector('#secret_value').value = env[envKeys[index]]
      } else {
        if(!env[suffix]) return alert('未查询到当前name的值')
				document.querySelector('#secret_value').value = env[suffix]
			}
			localStorage.setItem('index', parseInt(index) + 1)
			let submit = document.querySelector('.form-group > button')
			submit.removeAttribute('disabled')
			submit.click()
		}

		function macth(str, macthStr) {
			return str.indexOf(macthStr) != -1
		}

		function setIndex(index) {
			localStorage.setItem('index', 0)
			index = localStorage.getItem('index')
			return index
		}

		function isSecretPage() {
			return macth(suffix, 'actions')
		}
	}
})()

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址