github-repo-info

Add ⌛creation date/🍴forks/📁 repo size to repo search result page,code search page and repo detail page.

目前為 2022-11-12 提交的版本,檢視 最新版本

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name         github-repo-info
// @name:zh-CN   github显示仓库信息
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  Add ⌛creation date/🍴forks/📁 repo size to repo search result page,code search page and repo detail page.
// @description:zh-cn 向仓库搜索页,代码搜索页,仓库主页添加 ⌛创建时间/🍴fork数/📁文件大小显示
// @author       CXXN008
// @match        *://github.com/*/*
// @match        *://github.com/search*
// @source       https://github.com/CXXN008/github-repo-info
// @icon         https://www.google.com/s2/favicons?sz=64&domain=github.com
// @grant        window.onurlchange
// @license      MIT

// ==/UserScript==


(function () {
    'use strict';
    // github free rates are limited to 5000 / hour ,if u get some errors in console , try https://github.com/settings/tokens -> Generate new token & paste here
    const API_TOKEN = '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'
    const STYLE = ``

    const PAGE_SELECTOR = { 'search': 'li.repo-list-item> div > div> div > a.v-align-middle', 'repo': 'strong.mr-2 > a:nth-child(1)', 'code': '.Link--secondary' }

    const getPageType = (urlParams) => {
        const q = urlParams.get("q")?.toLocaleLowerCase();
        const type = urlParams.get("type")?.toLocaleLowerCase();
        if(q){
            if(type === 'code'){
                return 'code'
            }else{
                return 'search'
            }
        }else {
            return 'repo'
        }
    }


    window.onurlchange = (c) => {
        // console.log(c)
        const params = {
            "headers": {
                "authorization": `token ${API_TOKEN}`,
            }
        }

        const pageType = getPageType(new URLSearchParams(location.search))
        // console.log(pageType)
        document.querySelectorAll(PAGE_SELECTOR[pageType]).forEach(async e => {
            const p = e.parentElement
            let span = p.querySelector(`#my-span-tag`)
            if (span === null) {
                span = document.createElement('span')
                span.id = 'my-span-tag'
                span.style = STYLE
                span.innerText = '... ...'
                p.append(span)
            }

            const j = (await (await fetch(`https://api.github.com/repos${e.getAttribute('href')}`, params)).json())

            const date = j.created_at.split('T')[0]
            const size = (j.size / 1024).toFixed(2)
            const forks = j.forks_count

            span.innerText = `/⌛${date}/🍴${forks}/📁${size}MB`




        })
    }

})();