|
1 | 1 | // ==UserScript== |
2 | 2 | // @name Github 增强 - 高速下载 |
3 | | -// @version 1.2.4 |
| 3 | +// @version 1.2.5 |
4 | 4 | // @author X.I.U |
5 | 5 | // @description 高速下载 Clone、Release、Raw、Code(ZIP) 等文件、项目列表单文件快捷下载 (☁) |
6 | 6 | // @match https://github.com/*/* |
|
21 | 21 |
|
22 | 22 | (function() { |
23 | 23 | var download_url = [ |
24 | | - 'https://gh.con.sh', |
25 | | - 'https://gh.api.99988866.xyz', |
26 | | - 'https://download.fastgit.org', |
27 | | - 'https://pd.zwc365.com/seturl', |
28 | | - 'https://g.ioiox.com', |
29 | | - 'https://git.yumenaka.net' |
| 24 | + ['https://gh.con.sh','美国'], |
| 25 | + ['https://gh.api.99988866.xyz','美国'], |
| 26 | + ['https://download.fastgit.org','日本东京'], |
| 27 | + ['https://pd.zwc365.com/seturl','中国香港'], |
| 28 | + ['https://g.ioiox.com','中国香港'], |
| 29 | + ['https://git.yumenaka.net','美国洛杉矶'] |
30 | 30 | ], |
31 | | - download_url_name = ['美国','美国','日本东京','中国香港','中国香港','美国洛杉矶'], |
32 | 31 | clone_url = [ |
33 | 32 | 'https://hub.fastgit.org', |
34 | 33 | 'https://gitclone.com', |
35 | 34 | 'https://ghp.lvmhsh.cn.cnpmjs.org' |
36 | 35 | ], |
37 | 36 | raw_url = [ |
38 | | - 'https://raw.githubusercontent.com', |
39 | | - 'https://cdn.jsdelivr.net', |
40 | | - 'https://raw.fastgit.org' |
41 | | - ], |
42 | | - raw_url_name = ['Github 原生','中国国内','中国香港','美国洛杉矶'], |
43 | | - raw_url_tip = [ |
44 | | - '', |
45 | | - '注意:该加速源存在缓存机制(24小时),所以文件可能不是最新。 注意:当前分支所有文件总文件大小超过 50MB 时,该加速源不可用。 注意:当前分支名为版本号格式时(如 v1.2.3),该高速下载链接因格式限制不可用。 ', |
46 | | - '注意:单个文件太大时可能会提示超时(实时获取中),请重试。 ', |
47 | | - '注意:经过测试,该加速源存在文件格式限制,如果无法下载说明不支持该文件格式。 ' |
| 37 | + ['https://raw.githubusercontent.com','Github 原生',''], |
| 38 | + ['https://cdn.jsdelivr.net','中国国内','注意:该加速源存在缓存机制(24小时),所以文件可能不是最新。 注意:当前分支所有文件总文件大小超过 50MB 时,该加速源不可用。 注意:当前分支名为版本号格式时(如 v1.2.3),该高速下载链接因格式限制不可用。 '], |
| 39 | + ['https://raw.fastgit.org','中国香港','注意:单个文件太大时可能会提示超时(实时获取中),请重试。 '], |
| 40 | + ['https://git.yumenaka.net','美国洛杉矶','注意:经过测试,该加速源存在文件格式限制,如果无法下载说明不支持该文件格式。 '] |
48 | 41 | ], |
49 | 42 | svg = [ |
50 | 43 | '<svg class="octicon octicon-file-zip mr-3" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M3.5 1.75a.25.25 0 01.25-.25h3a.75.75 0 000 1.5h.5a.75.75 0 000-1.5h2.086a.25.25 0 01.177.073l2.914 2.914a.25.25 0 01.073.177v8.586a.25.25 0 01-.25.25h-.5a.75.75 0 000 1.5h.5A1.75 1.75 0 0014 13.25V4.664c0-.464-.184-.909-.513-1.237L10.573.513A1.75 1.75 0 009.336 0H3.75A1.75 1.75 0 002 1.75v11.5c0 .649.353 1.214.874 1.515a.75.75 0 10.752-1.298.25.25 0 01-.126-.217V1.75zM8.75 3a.75.75 0 000 1.5h.5a.75.75 0 000-1.5h-.5zM6 5.25a.75.75 0 01.75-.75h.5a.75.75 0 010 1.5h-.5A.75.75 0 016 5.25zm2 1.5A.75.75 0 018.75 6h.5a.75.75 0 010 1.5h-.5A.75.75 0 018 6.75zm-1.25.75a.75.75 0 000 1.5h.5a.75.75 0 000-1.5h-.5zM8 9.75A.75.75 0 018.75 9h.5a.75.75 0 010 1.5h-.5A.75.75 0 018 9.75zm-.75.75a1.75 1.75 0 00-1.75 1.75v3c0 .414.336.75.75.75h2.5a.75.75 0 00.75-.75v-3a1.75 1.75 0 00-1.75-1.75h-.5zM7 12.25a.25.25 0 01.25-.25h.5a.25.25 0 01.25.25v2.25H7v-2.25z"></path></svg>', |
|
65 | 58 | GM_unregisterMenuCommand(menu_feedBack_ID); |
66 | 59 | menu_raw_fast = GM_getValue('xiu2_menu_raw_fast'); |
67 | 60 | } |
68 | | - menu_menu_raw_fast_ID = GM_registerMenuCommand(`🔄 [ ${raw_url_name[menu_raw_fast]} ] 加速源 (☁) - 点击切换`, menu_toggle_raw_fast); |
| 61 | + menu_menu_raw_fast_ID = GM_registerMenuCommand(`🔄 [ ${raw_url[menu_raw_fast][1]} ] 加速源 (☁) - 点击切换`, menu_toggle_raw_fast); |
69 | 62 | menu_feedBack_ID = GM_registerMenuCommand('💬 反馈 & 建议 [Github]', function () {window.GM_openInTab('https://github.com/XIU2/UserScript', {active: true,insert: true,setParent: true});}); |
70 | 63 | } |
71 | 64 |
|
72 | 65 | // 切换加速源 |
73 | 66 | function menu_toggle_raw_fast() { |
74 | | - if (menu_raw_fast >= raw_url_name.length - 1){ // 如果当前加速源位置大于等于加速源总数,则改为第一个加速源,反之递增下一个加速源 |
| 67 | + if (menu_raw_fast >= raw_url.length - 1){ // 如果当前加速源位置大于等于加速源总数,则改为第一个加速源,反之递增下一个加速源 |
75 | 68 | menu_raw_fast = 0; |
76 | 69 | }else{ |
77 | 70 | menu_raw_fast += 1; |
78 | 71 | } |
79 | 72 | GM_setValue('xiu2_menu_raw_fast', menu_raw_fast); |
80 | | - console.log(11111) |
81 | 73 | delDownLink(); // 删除旧加速源 |
82 | | - console.log(22222) |
83 | 74 | addDownLink(); // 添加新加速源 |
84 | | - console.log(33333) |
85 | | - GM_notification(`已切换加速源为:${raw_url_name[menu_raw_fast]}`); // 提示消息 |
| 75 | + GM_notification(`已切换加速源为:${raw_url[menu_raw_fast][1]}`); // 提示消息 |
86 | 76 | registerMenuCommand(); // 重新注册脚本菜单 |
87 | 77 | }; |
88 | 78 |
|
|
107 | 97 | $(this).find(".d-flex.Box-body>a").each(function () { |
108 | 98 | var href = $(this).attr("href"), |
109 | 99 | url = [ |
110 | | - download_url[0] + '/https://github.com' + href, |
111 | | - download_url[1] + '/https://github.com' + href, |
112 | | - download_url[2] + href, |
113 | | - download_url[3] + '/https://github.com' + href, |
114 | | - download_url[4] + '/https://github.com' + href, |
115 | | - download_url[5] + '/https://github.com' + href |
| 100 | + download_url[0][0] + '/https://github.com' + href, |
| 101 | + download_url[1][0] + '/https://github.com' + href, |
| 102 | + download_url[2][0] + href, |
| 103 | + download_url[3][0] + '/https://github.com' + href, |
| 104 | + download_url[4][0] + '/https://github.com' + href, |
| 105 | + download_url[5][0] + '/https://github.com' + href |
116 | 106 | ], |
117 | 107 | html = `<div style="display: flex;justify-content: flex-end;"> |
118 | | -<div><a style="${style[0]}" class="btn" href="${url[0]}" rel="noreferrer noopener nofollow">${download_url_name[0]}</a></div> |
119 | | -<div><a style="${style[0]}" class="btn" href="${url[1]}" rel="noreferrer noopener nofollow">${download_url_name[1]}</a></div> |
120 | | -<div><a style="${style[0]}" class="btn" href="${url[2]}" rel="noreferrer noopener nofollow">${download_url_name[2]}</a></div> |
121 | | -<div><a style="${style[0]}" class="btn" href="${url[3]}" rel="noreferrer noopener nofollow">${download_url_name[3]}</a></div> |
122 | | -<div><a style="${style[0]}" class="btn" href="${url[4]}" rel="noreferrer noopener nofollow">${download_url_name[4]}</a></div> |
123 | | -<div><a style="${style[0]}" class="btn" href="${url[5]}" rel="noreferrer noopener nofollow">${download_url_name[5]}</a></div> |
| 108 | +<div><a style="${style[0]}" class="btn" href="${url[0]}" rel="noreferrer noopener nofollow">${download_url[0][1]}</a></div> |
| 109 | +<div><a style="${style[0]}" class="btn" href="${url[1]}" rel="noreferrer noopener nofollow">${download_url[1][1]}</a></div> |
| 110 | +<div><a style="${style[0]}" class="btn" href="${url[2]}" rel="noreferrer noopener nofollow">${download_url[2][1]}</a></div> |
| 111 | +<div><a style="${style[0]}" class="btn" href="${url[3]}" rel="noreferrer noopener nofollow">${download_url[3][1]}</a></div> |
| 112 | +<div><a style="${style[0]}" class="btn" href="${url[4]}" rel="noreferrer noopener nofollow">${download_url[4][1]}</a></div> |
| 113 | +<div><a style="${style[0]}" class="btn" href="${url[5]}" rel="noreferrer noopener nofollow">${download_url[5][1]}</a></div> |
124 | 114 | </div>`; |
125 | 115 | $(this).next().after(html); |
126 | 116 | }); |
|
132 | 122 | $(this).find(".d-block.Box-body>a").each(function () { |
133 | 123 | var href = $(this).attr("href"), |
134 | 124 | url = [ |
135 | | - download_url[0] + '/https://github.com' + href, |
136 | | - download_url[1] + '/https://github.com' + href, |
137 | | - download_url[2] + href, |
138 | | - download_url[3] + '/https://github.com' + href, |
139 | | - download_url[4] + '/https://github.com' + href, |
140 | | - download_url[5] + '/https://github.com' + href |
| 125 | + download_url[0][0] + '/https://github.com' + href, |
| 126 | + download_url[1][0] + '/https://github.com' + href, |
| 127 | + download_url[2][0] + href, |
| 128 | + download_url[3][0] + '/https://github.com' + href, |
| 129 | + download_url[4][0] + '/https://github.com' + href, |
| 130 | + download_url[5][0] + '/https://github.com' + href |
141 | 131 | ], |
142 | 132 | html = `<div style="display: flex;justify-content: flex-end;flex-grow: 1;"> |
143 | | -<div><a style="${style[0]}" class="btn" href="${url[0]}" rel="noreferrer noopener nofollow">${download_url_name[0]}</a></div> |
144 | | -<div><a style="${style[0]}" class="btn" href="${url[1]}" rel="noreferrer noopener nofollow">${download_url_name[1]}</a></div> |
145 | | -<div><a style="${style[0]}" class="btn" href="${url[2]}" rel="noreferrer noopener nofollow">${download_url_name[2]}</a></div> |
146 | | -<div><a style="${style[0]}" class="btn" href="${url[3]}" rel="noreferrer noopener nofollow">${download_url_name[3]}</a></div> |
147 | | -<div><a style="${style[0]}" class="btn" href="${url[4]}" rel="noreferrer noopener nofollow">${download_url_name[4]}</a></div> |
148 | | -<div><a style="${style[0]}" class="btn" href="${url[5]}" rel="noreferrer noopener nofollow">${download_url_name[5]}</a></div> |
| 133 | +<div><a style="${style[0]}" class="btn" href="${url[0]}" rel="noreferrer noopener nofollow">${download_url[0][1]}</a></div> |
| 134 | +<div><a style="${style[0]}" class="btn" href="${url[1]}" rel="noreferrer noopener nofollow">${download_url[1][1]}</a></div> |
| 135 | +<div><a style="${style[0]}" class="btn" href="${url[2]}" rel="noreferrer noopener nofollow">${download_url[2][1]}</a></div> |
| 136 | +<div><a style="${style[0]}" class="btn" href="${url[3]}" rel="noreferrer noopener nofollow">${download_url[3][1]}</a></div> |
| 137 | +<div><a style="${style[0]}" class="btn" href="${url[4]}" rel="noreferrer noopener nofollow">${download_url[4][1]}</a></div> |
| 138 | +<div><a style="${style[0]}" class="btn" href="${url[5]}" rel="noreferrer noopener nofollow">${download_url[5][1]}</a></div> |
149 | 139 | </div>`; |
150 | 140 | $(this).after(html); |
151 | 141 | }); |
|
160 | 150 | $(".dropdown-menu.dropdown-menu-sw.p-0 ul li:last-child").each(function () { |
161 | 151 | var href = $(this).children("a").attr("href"), |
162 | 152 | url = [ |
163 | | - download_url[0] + "/https://github.com" + href, |
164 | | - download_url[1] + "/https://github.com" + href, |
165 | | - download_url[2] + href, |
166 | | - download_url[3] + "/https://github.com" + href, |
167 | | - download_url[4] + "/https://github.com" + href, |
168 | | - download_url[5] + '/https://github.com' + href |
| 153 | + download_url[0][0] + "/https://github.com" + href, |
| 154 | + download_url[1][0] + "/https://github.com" + href, |
| 155 | + download_url[2][0] + href, |
| 156 | + download_url[3][0] + "/https://github.com" + href, |
| 157 | + download_url[4][0] + "/https://github.com" + href, |
| 158 | + download_url[5][0] + '/https://github.com' + href |
169 | 159 | ], |
170 | 160 | html = ` |
171 | | -<li class="Box-row Box-row--hover-gray p-0"><a class="d-flex flex-items-center text-gray-dark text-bold no-underline p-3" rel="noreferrer noopener nofollow" href="${url[0]}">${svg[0]}Download ZIP ${download_url_name[0]}</a></li> |
172 | | -<li class="Box-row Box-row--hover-gray p-0"><a class="d-flex flex-items-center text-gray-dark text-bold no-underline p-3" rel="noreferrer noopener nofollow" href="${url[1]}">${svg[0]}Download ZIP ${download_url_name[1]}</a></li> |
173 | | -<li class="Box-row Box-row--hover-gray p-0"><a class="d-flex flex-items-center text-gray-dark text-bold no-underline p-3" rel="noreferrer noopener nofollow" href="${url[2]}">${svg[0]}Download ZIP ${download_url_name[2]}</a></li> |
174 | | -<li class="Box-row Box-row--hover-gray p-0"><a class="d-flex flex-items-center text-gray-dark text-bold no-underline p-3" rel="noreferrer noopener nofollow" href="${url[3]}">${svg[0]}Download ZIP ${download_url_name[3]}</a></li> |
175 | | -<li class="Box-row Box-row--hover-gray p-0"><a class="d-flex flex-items-center text-gray-dark text-bold no-underline p-3" rel="noreferrer noopener nofollow" href="${url[4]}">${svg[0]}Download ZIP ${download_url_name[4]}</a></li> |
176 | | -<li class="Box-row Box-row--hover-gray p-0"><a class="d-flex flex-items-center text-gray-dark text-bold no-underline p-3" rel="noreferrer noopener nofollow" href="${url[5]}">${svg[0]}Download ZIP ${download_url_name[5]}</a></li> |
| 161 | +<li class="Box-row Box-row--hover-gray p-0"><a class="d-flex flex-items-center text-gray-dark text-bold no-underline p-3" rel="noreferrer noopener nofollow" href="${url[0]}">${svg[0]}Download ZIP ${download_url[0][1]}</a></li> |
| 162 | +<li class="Box-row Box-row--hover-gray p-0"><a class="d-flex flex-items-center text-gray-dark text-bold no-underline p-3" rel="noreferrer noopener nofollow" href="${url[1]}">${svg[0]}Download ZIP ${download_url[1][1]}</a></li> |
| 163 | +<li class="Box-row Box-row--hover-gray p-0"><a class="d-flex flex-items-center text-gray-dark text-bold no-underline p-3" rel="noreferrer noopener nofollow" href="${url[2]}">${svg[0]}Download ZIP ${download_url[2][1]}</a></li> |
| 164 | +<li class="Box-row Box-row--hover-gray p-0"><a class="d-flex flex-items-center text-gray-dark text-bold no-underline p-3" rel="noreferrer noopener nofollow" href="${url[3]}">${svg[0]}Download ZIP ${download_url[3][1]}</a></li> |
| 165 | +<li class="Box-row Box-row--hover-gray p-0"><a class="d-flex flex-items-center text-gray-dark text-bold no-underline p-3" rel="noreferrer noopener nofollow" href="${url[4]}">${svg[0]}Download ZIP ${download_url[4][1]}</a></li> |
| 166 | +<li class="Box-row Box-row--hover-gray p-0"><a class="d-flex flex-items-center text-gray-dark text-bold no-underline p-3" rel="noreferrer noopener nofollow" href="${url[5]}">${svg[0]}Download ZIP ${download_url[5][1]}</a></li> |
177 | 167 | `; |
178 | 168 | $(this).after(html); |
179 | 169 | }); |
|
205 | 195 | var href = location.href.replace('https://github.com',''), |
206 | 196 | href2 = href.replace('/blob/','/'), |
207 | 197 | url = [ |
208 | | - raw_url[1] + "/gh" + href.replace('/blob/','@'), |
209 | | - raw_url[2] + href2, |
210 | | - download_url[5] + "/" + raw_url[0] + href2 |
| 198 | + raw_url[1][0] + "/gh" + href.replace('/blob/','@'), |
| 199 | + raw_url[2][0] + href2, |
| 200 | + download_url[5] + "/" + raw_url[0][0] + href2 |
211 | 201 | ], |
212 | 202 | html = ` |
213 | | -<a href="${url[0]}" title="${raw_url_tip[1]}" role="button" rel="noreferrer noopener nofollow" class="btn btn-sm BtnGroup-item">${raw_url_name[1]}</a> |
214 | | -<a href="${url[1]}" title="${raw_url_tip[2]}" role="button" rel="noreferrer noopener nofollow" class="btn btn-sm BtnGroup-item">${raw_url_name[2]}</a> |
215 | | -<a href="${url[2]}" title="${raw_url_tip[3]}" role="button" rel="noreferrer noopener nofollow" class="btn btn-sm BtnGroup-item">${raw_url_name[3]}</a> |
| 203 | +<a href="${url[0]}" title="${raw_url[1][2]}" role="button" rel="noreferrer noopener nofollow" class="btn btn-sm BtnGroup-item">${raw_url[1][1]}</a> |
| 204 | +<a href="${url[1]}" title="${raw_url[2][2]}" role="button" rel="noreferrer noopener nofollow" class="btn btn-sm BtnGroup-item">${raw_url[2][1]}</a> |
| 205 | +<a href="${url[2]}" title="${raw_url[3][2]}" role="button" rel="noreferrer noopener nofollow" class="btn btn-sm BtnGroup-item">${raw_url[3][1]}</a> |
216 | 206 | `; |
217 | 207 | $(this).after(html); |
218 | 208 | }); |
|
256 | 246 | switch(menu_raw_fast) |
257 | 247 | { |
258 | 248 | case 0: |
259 | | - url = raw_url[0] + href2; |
260 | | - url_name = raw_url_name[0]; |
261 | | - url_tip = raw_url_tip[0]; |
| 249 | + url = raw_url[0][0] + href2; |
| 250 | + url_name = raw_url[0][1]; |
| 251 | + url_tip = raw_url[0][2]; |
262 | 252 | break; |
263 | 253 | case 1: |
264 | | - url = raw_url[1] + '/gh' + href.replace('/blob/','@'); |
265 | | - url_name = raw_url_name[1]; |
266 | | - url_tip = raw_url_tip[1]; |
| 254 | + url = raw_url[1][0] + '/gh' + href.replace('/blob/','@'); |
| 255 | + url_name = raw_url[1][1]; |
| 256 | + url_tip = raw_url[1][2]; |
267 | 257 | break; |
268 | 258 | case 2: |
269 | | - url = raw_url[2] + href2; |
270 | | - url_name = raw_url_name[2]; |
271 | | - url_tip = raw_url_tip[2]; |
| 259 | + url = raw_url[2][0] + href2; |
| 260 | + url_name = raw_url[2][1]; |
| 261 | + url_tip = raw_url[2][2]; |
272 | 262 | break; |
273 | 263 | case 3: |
274 | | - url = download_url[5] + '/' + raw_url[0] + href2; |
275 | | - url_name = download_url_name[5]; |
276 | | - url_tip = raw_url_tip[3]; |
| 264 | + url = raw_url[3][0] + '/' + raw_url[0][0] + href2; |
| 265 | + url_name = raw_url[3][1]; |
| 266 | + url_tip = raw_url[3][2]; |
277 | 267 | break; |
278 | 268 | } |
279 | | - var html = ` <a href="${url}" download="${Name}" target="_blank" rel="noreferrer noopener nofollow" class="fileDownLink" style="display: none;" title="「${url_name}」 [Alt + 左键] 或 [右键 - 另存为...] 下载文件。 注意:鼠标点击 [☁] 图标,而不是左侧的文件名! ${url_tip}提示:点击浏览器右上角 Tampermonkey 扩展图标 - [ ${raw_url_name[menu_raw_fast]} ] 加速源 (☁) 即可切换。">${svg[2]}</a>`; |
| 269 | + var html = ` <a href="${url}" download="${Name}" target="_blank" rel="noreferrer noopener nofollow" class="fileDownLink" style="display: none;" title="「${url_name}」 [Alt + 左键] 或 [右键 - 另存为...] 下载文件。 注意:鼠标点击 [☁] 图标,而不是左侧的文件名! ${url_tip}提示:点击浏览器右上角 Tampermonkey 扩展图标 - [ ${raw_url[menu_raw_fast][1]} ] 加速源 (☁) 即可切换。">${svg[2]}</a>`; |
280 | 270 | $(cntElm_svg).after(html); |
281 | 271 | // 绑定鼠标事件 |
282 | 272 | trElm.onmouseover=mouseOverHandler; |
|
0 commit comments