GithubPlusPlus

高速下载 Git Release、Raw、Code(ZIP) 等文件

Per 12-03-2022. Zie de nieuwste versie.

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey, Greasemonkey of Violentmonkey.

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey of Violentmonkey.

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey of Violentmonkey.

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey of Userscripts.

Voor het installeren van scripts heb je een extensie nodig, zoals {tampermonkey_link:Tampermonkey}.

Voor het installeren van scripts heb je een gebruikersscriptbeheerder nodig.

(Ik heb al een user script manager, laat me het downloaden!)

Voor het installeren van gebruikersstijlen heb je een extensie nodig, zoals {stylus_link:Stylus}.

Voor het installeren van gebruikersstijlen heb je een extensie nodig, zoals {stylus_link:Stylus}.

Voor het installeren van gebruikersstijlen heb je een extensie nodig, zoals {stylus_link:Stylus}.

Voor het installeren van gebruikersstijlen heb je een gebruikersstijlbeheerder nodig.

Voor het installeren van gebruikersstijlen heb je een gebruikersstijlbeheerder nodig.

Voor het installeren van gebruikersstijlen heb je een gebruikersstijlbeheerder nodig.

(Ik heb al een beheerder - laat me doorgaan met de installatie!)

// ==UserScript==
// @name         GithubPlusPlus
// @name:zh-CN   GithubPlusPlus - 高速下载GitHub资源
// @name:en      GithubPlusPlus
// @version      0.1.0
// @author       HackPig520
// @description  高速下载 Git Release、Raw、Code(ZIP) 等文件
// @description:zh-CN  高速下载 Git Release、Raw、Code(ZIP) 等文件
// @description:en  High-speed download of Git Release, Raw, Code(ZIP) and other files.
// @match        *://github.com/*
// @match        *://hub.fastgit.xyz/*
// @match        *://hub.fastgit.org/*
// @match        *://github.com.cnpmjs.org/*
// @icon         https://i.loli.net/2021/03/30/ULV9XunaHesqGIR.png
// @require      https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js
// @resource     gpp_css https://gitee.com/Botme/UserScript/raw/master/index.css
// @grant        GM_registerMenuCommand
// @grant        GM_unregisterMenuCommand
// @grant        GM_openInTab
// @grant        GM_getValue
// @grant        GM_setValue
// @grant        GM_notification
// @grant        window.onurlchange
// @license      WTFPL
// @run-at       document-end
// @namespace    https://greasyfork.org/scripts/441278
// @supportURL   https://gitee.com/botme/UserScript/issues
// @homepageURL  https://gitee.com/Botme/UserScript
// ==/UserScript==
(function () {
    var clone = true; //克隆相关
    var depth = true; //自动添加'--depth 1'参数,有助于提高Clone速度
    var hide = true;

    var location = window.location.href; //当前页面地址
    /////////////////////
    var mirror_url1 = "https://github.com.cnpmjs.org"; //阿里云 - 已失效
    var mirror_url2 = "https://hub.fastgit.xyz"; //日本 - 正常 - 请先阅读:https://doc.fastgit.org/zh-cn/tos.html
    var mirror_url3 = "https://index.pig2333.workers.dev"; //CloudFlare - 正常
    var mirror_url4 = "https://gh.xiu.workers.dev/https://github.com"; //CloudFlare - 正常
    var mirror_url5 = "https://ghgo.feizhuqwq.workers.dev/https://github.com"; //CloudFlare - 正常
    /////////////////////
    var download_url1 = "https://download.fastgit.org"; //美国 - 正常
    var download_url2 = "https://gh.ddlc.top/https://github.com"; //美国 - 正常
    var download_url3 = "https://git.yumenaka.net/https://github.com"; //美国 - 正常
    var str1 = ""; //定义空

    if (clone) {
        str1 += "git clone "; //前缀
        if (depth) {
            str1 += "--depth=1 "; //自动添加'--depth 1'参数
        }
    }

    var a = location.split("/"); //以'/'分割
    var b = a[5] === "wiki" ? ".wiki" : ""; //如果是WIKI
    var str2 = "/" + a[3] + "/" + a[4] + b + ".git"; //拼接 Git Clone 链接
    var clone_utl1 = str1 + mirror_url1 + str2; //Clone1链接拼接
    var clone_utl2 = str1 + mirror_url2 + str2; //Clone2链接拼接
    var clone_utl3 = str1 + mirror_url3 + str2; //Clone3链接拼接
    var clone_utl4 = str1 + mirror_url4 + str2; //Clone4链接拼接
    var str3 = window.location.pathname;
    var web_url1 = mirror_url1 + str3; //Web1链接拼接
    var web_url2 = mirror_url2 + str3; //Web2链接拼接
    var web_url3 = mirror_url3 + str3; //Web3链接拼接
    var web_url3 = mirror_url4 + str3; //Web4链接拼接
    // 镜像面板代码
    var info = `
        <div class="user-ment">
        <button class="btn btn-primary" type="button" id="mirror-btn">镜像网址</button>
        <div class="collapse multi-collapse" id="collapse">
            <div class="user-card user-card-body">
                <div class="user-alert user-alert-warning" role="alert">clone、depth命令的插入可手动编辑代码关闭</div>
                <div class="user-alert user-alert-danger" role="alert">镜像地址请不要登陆自己的账户,造成损失作者和镜像网站管理员均概不负责</div>
                <div class="user-input-group user-mb-3">
                    <div class="user-input-group-prepend"><span class="user-input-group-text" id="inputGroup-sizing-default">快速克隆1:</span></div>
                    <input id="clone_case_1" type="text" value="${clone_utl1}" data-autoselect="" class="user-form-control" aria-label="将此存储库克隆到 ${clone_utl1}" readonly aria-describedby="inputGroup-sizing-default">
                    <div class="user-input-group-append">
                        <button class="btn btn-outline-secondary" type="button" id="button-copy1" data-container="body" data-toggle="popover" data-placement="bottom" data-content="复制成功">复制</button>
                    </div>
                    <button class="btn btn-outline-secondary" type="button" id="quickView1" href="${web_url1}" class="btn">快速浏览1</button>
                </div>
                <div class="user-input-group user-mb-3">
                    <div class="user-input-group-prepend">
                        <span class="user-input-group-text" id="inputGroup-sizing-default">快速克隆2:</span>
                    </div>
                    <input id="clone_case_2" type="text" value="${clone_utl2}" data-autoselect="" class="user-form-control" aria-label="将此存储库克隆到 ${clone_utl2}" readonly aria-describedby="inputGroup-sizing-default">
                    <div class="user-input-group-append">
                        <button class="btn btn-outline-secondary" type="button" id="button-copy2" data-container="body" data-toggle="popover" data-placement="bottom" data-content="复制成功">复制</button>
                    </div>
                    <button class="btn btn-outline-secondary" type="button" id="quickView2" class="btn">快速浏览2</button>
                </div>
                <div class="user-input-group user-mb-3">
                    <div class="user-input-group-prepend">
                        <span class="user-input-group-text" id="inputGroup-sizing-default">快速克隆3:</span>
                    </div>
                    <input type="text" data-autoselect="" class="user-form-control" aria-describedby="inputGroup-sizing-default" value="不支持clone,直接跳转--->" aria-label="" readonly="">
                    <button type="button" id="quickView3" class="btn">快速浏览3</button>
                </div>
                <div class="user-input-group user-mb-3">
                    <div class="user-input-group-prepend">
                        <span class="user-input-group-text" id="inputGroup-sizing-default">快速克隆4:</span>
                    </div>
                    <input type="text" data-autoselect="" class="user-form-control" aria-describedby="inputGroup-sizing-default" value="不支持clone,直接跳转--->" aria-label="" readonly="">
                    <button type="button" id="quickView4" class="btn">快速浏览4</button>
                </div>
            </div>
        </div>
    </div>`;

    // 菜单数字图标
    function menu_num(num) {
        return ['0️⃣', '1️⃣', '2️⃣', '3️⃣', '4️⃣', '5️⃣', '6️⃣', '7️⃣', '8️⃣', '9️⃣', '🔟'][num]
    }
    $(".repository-content").prepend(info);
    $(".Box.Box--condensed").each(function () {
        // 修改源代码下载栏样式
        $(this).find(".d-block.py-1.py-md-2.Box-body.px-2").addClass("d-flex flex-justify-between")
        // 修改文件大小对齐方式
        $(".pl-2.color-text-secondary.flex-shrink-0").css({ "display": "flex", "flex-grow": 1, "justify-content": "flex-end" })
        $(this).find(".d-flex.Box-body").each(function () {
            var href = $(this).children("a").attr("href");
            var url1 = download_url1 + href;
            var url2 = mirror_url3 + href;
            var div1 = `<div class="user_download" style="display: flex;justify-content: flex-end;margin-left:9px"><div><a style="padding:4px;"  class="btn user-btn-link"  href="${url1}" rel="nofollow">快速下载1</a></div><div><a style="padding:4px"   class="btn user-btn-link" href="${url2}" rel="nofollow">快速下载2(推荐)</a></div></div>`
            $(this).append(div1);
        });
    });
    // Fast Download下载按钮
    $(".dropdown-menu .list-style-none li:last").each(function () {
        var url1 = mirror_url3 + "/" + a[3] + "/" + a[4] + "/archive/master.zip";
        var span1 = `<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="nofollow" href="${url1}">Fast Download ZIP</a></li>`;
        $(this).after(span1);
    });
    // 复制按钮
    $("#button-copy1").on("click", function () {
        GM_setClipboard($("#clone_case_1").val())
        alert("复制成功")
    })
    $("#button-copy2").on("click", function () {
        GM_setClipboard($("#clone_case_2").val())
        alert("复制成功")
    })
    // 页面跳转
    $("#quickView1").on("click", function () {
        window.location.href = web_url1
    });
    $("#quickView2").on("click", function () {
        window.location.href = web_url2
    })
    $("#quickView3").on("click", function () {
        window.location.href = web_url3
    })
    $("#quickView4").on("click", function () {
        window.location.href = web_url4
    })
    // 隐藏面板
    $("#mirror-btn").on("click", function () {
        if (!hide) {
            $("#collapse").hide();
        } else {
            $("#collapse").show();
        }
        hide = !hide;
    })
    function mirrorBtnEvent() {
        if (!GM_getValue('mirror')) {
            $("#collapse").hide()
        } else {
            $("#collapse").show();
        }
    }
    function menuHideMirrorCollapse() {
        GM_setValue('mirror', !GM_getValue('mirror'))
        mirrorBtnEvent()
        console.log(GM_getValue('mirror'))
    }
    function init() {
        mirrorBtnEvent()
    }
    // 注册菜单
    GM_registerMenuCommand(`[🔔Hide & Show Mirror DashBoard]`, menuHideMirrorCollapse)
    GM_registerMenuCommand(`[📢FeedBack]`, function () { window.GM_openInTab('https://gitee.com/Botme/UserScript/issues', { active: true, insert: true, setParent: true }); })
    // 初始化面板
    init()
    GM_addStyle(GM_getResourceText("gpp_css"));
})();