Github 仓库大小

在 github 搜索和存储库页面上的存储库名称旁边添加存储库大小

目前为 2024-09-25 提交的版本。查看 最新版本

  1. // ==UserScript==
  2. // @name Github Re备份po Size+
  3. // @name:zh-CN Github 仓库大小
  4. // @description:zh-CN 在 github 搜索和存储库页面上的存储库名称旁边添加存储库大小
  5. // @name:zh Github 仓库大小
  6. // @description:zh 在 github 搜索和存储库页面上的存储库名称旁边添加存储库大小
  7. // @name:ar Github حجم المستودع
  8. // @description:ar يخرج github أضف حجم المستودع بجوار اسم المستودع في صفحات البحث والمستودع
  9. // @name:bg Github Размер на склада
  10. // @description:bg съществуват github Добавете размер на хранилището до името на хранилището на страниците за търсене и хранилище
  11. // @name:cs Github Velikost skladu
  12. // @description:cs existovat github Přidejte velikost úložiště vedle názvu úložiště na stránkách vyhledávání a úložiště
  13. // @name:da Github Lagerstørrelse
  14. // @description:da eksistere github Tilføj lagerstørrelse ud for lagernavn på søge- og lagersider
  15. // @name:de Github Lagergröße
  16. // @description:de existieren github Fügen Sie auf Such- und Repository-Seiten neben dem Repository-Namen die Repository-Größe hinzu
  17. // @name:el Github Μέγεθος αποθήκης
  18. // @description:el υπάρχω github Προσθέστε μέγεθος αποθετηρίου δίπλα στο όνομα χώρου αποθήκευσης στις σελίδες αναζήτησης και αποθετηρίου
  19. // @name:en Github Warehouse size
  20. // @description:en exist github Add repository size next to repository name on search and repository pages
  21. // @name:eo Github Grando de magazeno
  22. // @description:eo ekzisti github Aldonu deponejan grandecon apud la nomo de deponejo sur serĉo kaj deponejo paĝoj
  23. // @name:es Github Tamaño del almacén
  24. // @description:es existir github Agregue el tamaño del repositorio junto al nombre del repositorio en las páginas de búsqueda y repositorio
  25. // @name:fi Github Varaston koko
  26. // @description:fi olemassa github Lisää arkiston koko arkiston nimen viereen haku- ja arkistosivuilla
  27. // @name:fr Github Taille de l’entrepôt
  28. // @description:fr exister github Ajouter la taille du référentiel à côté du nom du référentiel sur les pages de recherche et du référentiel
  29. // @name:he Github גודל המחסן
  30. // @description:he לְהִתְקַיֵם github הוסף גודל מאגר ליד שם המאגר בדפי החיפוש והמאגר
  31. // @name:hr Github Veličina skladišta
  32. // @description:hr postojati github Dodajte veličinu repozitorija pored naziva repozitorija na stranicama pretraživanja i repozitorija
  33. // @name:hu Github Raktár mérete
  34. // @description:hu létezik github Adja hozzá a lerakat méretét a lerakat neve mellett a keresési és lerakatoldalakon
  35. // @name:id Github Ukuran gudang
  36. // @description:id ada github Tambahkan ukuran repositori di sebelah nama repositori pada halaman pencarian dan repositori
  37. // @name:it Github Dimensioni del magazzino
  38. // @description:it esistere github Aggiungi la dimensione del repository accanto al nome del repository nelle pagine di ricerca e del repository
  39. // @name:ja Github 倉庫のサイズ
  40. // @description:ja 存在する github 検索ページとリポジトリ ページでリポジトリ名の横にリポジトリ サイズを追加します
  41. // @name:ka Github საწყობის ზომა
  42. // @description:ka არსებობს github საძიებო და საცავის გვერდებზე საცავის სახელის გვერდით დაამატეთ საცავის ზომა
  43. // @name:ko Github 창고 규모
  44. // @description:ko 존재하다 github 검색 및 저장소 페이지의 저장소 이름 옆에 저장소 크기 추가
  45. // @name:nl Github Grootte van magazijn
  46. // @description:nl bestaan github Voeg de repositorygrootte toe naast de repositorynaam op zoek- en repositorypagina’s
  47. // @name:nb Github Lagerstørrelse
  48. // @description:nb eksistere github Legg til depotstørrelse ved siden av depotnavnet på søke- og depotsidene
  49. // @name:pl Github Wielkość magazynu
  50. // @description:pl istnieć github Dodaj rozmiar repozytorium obok nazwy repozytorium na stronach wyszukiwania i repozytorium
  51. // @name:pt-BR Github Tamanho do armazém
  52. // @description:pt-BR existir github Adicione o tamanho do repositório próximo ao nome do repositório nas páginas de pesquisa e do repositório
  53. // @name:ro Github Dimensiunea depozitului
  54. // @description:ro exista github Adăugați dimensiunea depozitului lângă numele depozitului pe paginile de căutare și depozit
  55. // @name:ru Github Размер склада
  56. // @description:ru существовать github Добавьте размер репозитория рядом с именем репозитория на страницах поиска и репозитория.
  57. // @name:sk Github Veľkosť skladu
  58. // @description:sk existujú github Pridajte veľkosť úložiska vedľa názvu úložiska na stránkach vyhľadávania a úložiska
  59. // @name:sr Github Величина магацина
  60. // @description:sr постоје github Додајте величину спремишта поред имена спремишта на страницама претраге и спремишта
  61. // @name:sv Github Lagerstorlek
  62. // @description:sv existera github Lägg till förvarsstorlek bredvid förvarets namn på sök- och förvarssidor
  63. // @name:th Github ขนาดคลังสินค้า
  64. // @description:th มีอยู่ github เพิ่มขนาดที่เก็บถัดจากชื่อที่เก็บในหน้าการค้นหาและที่เก็บ
  65. // @name:tr Github Depo boyutu
  66. // @description:tr var olmak github Arama ve depo sayfalarında depo adının yanına depo boyutunu ekleyin
  67. // @name:ug Github ئامبارنىڭ چوڭلۇقى
  68. // @description:ug مەۋجۇت github ئىزدەش ۋە ئامبار بېتىدىكى ئامبار نامىنىڭ يېنىغا ئامبار چوڭلۇقى قوشۇڭ
  69. // @name:uk Github Розмір складу
  70. // @description:uk існують github Додайте розмір сховища поруч із назвою сховища на сторінках пошуку та сховища
  71. // @name:vi Github Kích thước kho
  72. // @description:vi hiện hữu github Thêm kích thước kho lưu trữ bên cạnh tên kho lưu trữ trên các trang tìm kiếm và kho lưu trữ
  73. // @name:zh-TW Github 倉庫大小
  74. // @description:zh-TW 在 github 搜尋和儲存庫頁面上的儲存庫名稱旁邊新增儲存庫大小
  75. // @name:zh-HK Github 倉庫大小
  76. // @description:zh-HK 在 github 搜尋和儲存庫頁面上的儲存庫名稱旁邊新增儲存庫大小
  77. // @name:fr-CA Github Taille de l’entrepôt
  78. // @description:fr-CA exister github Ajouter la taille du référentiel à côté du nom du référentiel sur les pages de recherche et du référentiel
  79. // @namespace https://github.com/ChinaGodMan/UserScripts
  80. // @description Adds the repo size next to the repo name on github search and repo pages
  81. // @version 0.1.3.1
  82. // @author mshll & 人民的勤务员 <toniaiwanowskiskr47@gmail.com>
  83. // @match https://github.com/*
  84. // @grant none
  85. // @run-at document-start
  86. // @grant GM_getValue
  87. // @grant GM_setValue
  88. // @grant GM_addStyle
  89. // @grant GM_registerMenuCommand
  90. // @grant none
  91. // @icon data:image/png;base64,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
  92. // @iconbak https://github.githubassets.com/pinned-octocat.svg
  93. // @license MIT
  94. // @source https://github.com/qinwuyuan-cn/UserScripts
  95. // @run-at document-start
  96. // @supportURL https://github.com/ChinaGodMan/UserScripts/issues
  97. // @homepageURL https://github.com/ChinaGodMan/UserScripts
  98. // ==/UserScript==
  99. "use strict"
  100. const userLang =
  101. (navigator.languages && navigator.languages[0]) ||
  102. navigator.language ||
  103. "en"
  104. const translations = {
  105. en: {
  106. save: "Save",
  107. cancel: "Cancel",
  108. modaltitle: "Set GitHub Token",
  109. description:
  110. 'Enter your GitHub personal access token with "repo" scope.',
  111. githubtokeninput: "Enter your GitHub personal access token",
  112. newtoken: "Click here to create a new token",
  113. warncheckbox: " Inactive Development Warning",
  114. menu: "Set GitHub Token",
  115. renderWarning: "WARNING: repo has not received an update in 1+ year(s)",
  116. renderCaution: "Caution: repo has not received an update in 6+ months",
  117. confirm:
  118. "You have not entered a Token, confirm to clear the GitHub Token?",
  119. },
  120. "zh-CN,zh,zh-SG": {
  121. save: "保存",
  122. cancel: "取消",
  123. modaltitle: "设置 GitHub 令牌",
  124. description: '请输入您的 GitHub 个人访问令牌,需具备 "repo" 权限。',
  125. githubtokeninput: "请输入您的 GitHub 个人访问令牌",
  126. newtoken: "点击此处创建新的令牌",
  127. warncheckbox: " 非活跃开发警告",
  128. menu: "设置 GitHub 令牌",
  129. renderWarning: "警告:该仓库在 1 年以上未更新",
  130. renderCaution: "注意:该仓库在 6 个月以上未更新",
  131. confirm: "你没有输入Token,确认清空GitHub Token?",
  132. },
  133. "zh-TW,zh-HK,zh-MO": {
  134. save: "保存",
  135. cancel: "取消",
  136. modaltitle: "設定 GitHub 令牌",
  137. description: '請輸入您的 GitHub 個人訪問令牌,需具備 "repo" 權限。',
  138. githubtokeninput: "請輸入您的 GitHub 個人訪問令牌",
  139. newtoken: "點擊此處創建新的令牌",
  140. warncheckbox: " 非活躍開發警告",
  141. menu: "設定 GitHub 令牌",
  142. renderWarning: "警告:該倉庫在 1 年以上未更新",
  143. renderCaution: "注意:該倉庫在 6 個月以上未更新",
  144. confirm: "你沒有輸入Token,確認清空GitHub Token?",
  145. },
  146. vi: {
  147. save: "Lưu",
  148. cancel: "Hủy",
  149. modaltitle: "Đặt Token GitHub",
  150. description:
  151. 'Nhập token truy cập cá nhân GitHub của bạn với phạm vi "repo".',
  152. githubtokeninput: "Nhập token truy cập cá nhân GitHub của bạn",
  153. newtoken: "Nhấn vào đây để tạo token mới",
  154. warncheckbox: " Cảnh báo phát triển không hoạt động",
  155. menu: "Đặt Token GitHub",
  156. renderWarning:
  157. "CẢNH BÁO: kho lưu trữ đã không nhận được cập nhật trong hơn 1 năm",
  158. renderCaution:
  159. "Cảnh báo: kho lưu trữ đã không nhận được cập nhật trong hơn 6 tháng",
  160. confirm: "Bạn chưa nhập Token, xác nhận xóa GitHub Token?",
  161. },
  162. ja: {
  163. save: "保存",
  164. cancel: "キャンセル",
  165. modaltitle: "GitHubトークンの設定",
  166. description:
  167. "「repo」スコープを持つGitHub個人アクセストークンを入力してください。",
  168. githubtokeninput: "GitHub個人アクセストークンを入力してください",
  169. newtoken: "新しいトークンを作成するにはここをクリックしてください",
  170. warncheckbox: " 非アクティブ開発警告",
  171. menu: "GitHubトークンの設定",
  172. renderWarning: "警告:リポジトリは1年以上更新されていません",
  173. renderCaution: "注意:リポジトリは6ヶ月以上更新されていません",
  174. confirm:
  175. "トークンが入力されていません。GitHubトークンをクリアしてもよろしいですか?",
  176. },
  177. ko: {
  178. save: "저장",
  179. cancel: "취소",
  180. modaltitle: "GitHub 토큰 설정",
  181. description: "“repo” 범위를 가진 GitHub 개인 액세스 토큰을 입력하세요.",
  182. githubtokeninput: "GitHub 개인 액세스 토큰을 입력하세요",
  183. newtoken: "여기를 클릭하여 새 토큰을 만드세요",
  184. warncheckbox: " 비활성 개발 경고",
  185. menu: "GitHub 토큰 설정",
  186. renderWarning: "경고: 이 저장소는 1년 이상 업데이트되지 않았습니다",
  187. renderCaution: "주의: 이 저장소는 6개월 이상 업데이트되지 않았습니다",
  188. confirm: "토큰을 입력하지 않았습니다. GitHub 토큰을 지우시겠습니까?",
  189. },
  190. }
  191. const getTranslations = (lang) => {
  192. for (const key in translations) {
  193. if (key === lang || key.split(",").includes(lang)) {
  194. return translations[key]
  195. }
  196. }
  197. return translations["en"]
  198. }
  199. const translate = new Proxy(
  200. function (key) {
  201. const lang = userLang
  202. const strings = getTranslations(lang)
  203. return strings[key] || translations["en"][key]
  204. },
  205. {
  206. get(target, prop) {
  207. const lang = userLang
  208. const strings = getTranslations(lang)
  209. return strings[prop] || translations["en"][prop]
  210. },
  211. }
  212. )
  213. //! Generate a new public access token from https://github.com/settings/tokens and insert it here
  214. //*Note: to be able to see the size of your private repos, you need to select the `repo` scope when generating the token
  215. let TOKEN = GM_getValue("githubToken", "")
  216. let WARNING = GM_getValue("warn", true)
  217. GM_addStyle(`
  218. .modal-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.5);display:flex;justify-content:center;align-items:center;z-index:1000;}
  219. .modal-content{background:white;padding:20px;border-radius:8px;width:400px;box-shadow:0 4px 15px rgba(0,0,0,0.2);position:relative;}
  220. .modal-title{margin:0 0 10px 0;font-size:20px;}
  221. .modal-description{margin-bottom:20px;font-size:14px;color:#666;}
  222. .modal-description a{color:#007bff;text-decoration:underline;}
  223. #github-token-input{width:100%;padding:8px;border:1px solid #ccc;border-radius:4px;margin-bottom:20px;font-size:14px;}
  224. #save-token{background-color:#28a745;color:white;border:none;padding:10px 20px;cursor:pointer;border-radius:4px;margin-right:10px;}
  225. #cancel-token{background-color:#dc3545;color:white;border:none;padding:10px 20px;cursor:pointer;border-radius:4px;}
  226. `)
  227. function createModal() {
  228. const modalHTML = `
  229. <div class="modal-overlay">
  230. <div class="modal-content">
  231. <h2 class="modal-title">${translate.modaltitle}</h2>
  232. <p class="modal-description">
  233. ${translate.description}
  234. <a href="https://github.com/settings/tokens/new?description=GitHub%20Repo%20Size%20UserScript&scopes=repo" target="_blank" rel="noopener noreferrer">
  235. ${translate.newtoken}
  236. </a>
  237. </p>
  238. <input type="text" id="github-token-input" placeholder="${translate.githubtokeninput}">
  239. <label><input type="checkbox" id="warn">${translate.warncheckbox}</label>
  240. <br>
  241. <hr>
  242. <button id="save-token">${translate.save}</button>
  243. <button id="cancel-token" class="cancel">${translate.cancel}</button>
  244. </div>
  245. </div>
  246. `
  247. const modalContainer = document.createElement("div")
  248. modalContainer.innerHTML = modalHTML
  249. document.body.appendChild(modalContainer)
  250. const input = document.getElementById("github-token-input")
  251. const warn = document.getElementById("warn")
  252. warn.checked = GM_getValue("warn", true)
  253. input.value = GM_getValue("githubToken", "")
  254. document.getElementById("save-token").addEventListener("click", () => {
  255. const token = input.value.trim()
  256. GM_setValue("warn", warn.checked)
  257. WARNING = warn.checked
  258. if (token) {
  259. GM_setValue("githubToken", token)
  260. modalContainer.remove()
  261. TOKEN = token
  262. } else {
  263. const userConfirmed = confirm(translate("confirm")) //提示是否删除
  264. if (userConfirmed) {
  265. GM_setValue("githubToken", token)
  266. modalContainer.remove()
  267. TOKEN = token
  268. }
  269. }
  270. })
  271. document
  272. .getElementById("cancel-token")
  273. .addEventListener("click", () => modalContainer.remove())
  274. }
  275. GM_registerMenuCommand(translate("menu"), function () {
  276. createModal()
  277. })
  278. const getPageType = () => {
  279. const { pathname, search } = window.location
  280. const params = new URLSearchParams(search)
  281. const [, username, repo] = pathname.split("/")
  282. const q = params.get("q")?.toLocaleLowerCase()
  283. const type = params.get("type")?.toLocaleLowerCase()
  284. if (window.location.pathname.split("/").pop() === "repositories")
  285. return "list-view-container"
  286. if (window.location.href.includes("?tab=repositories"))
  287. return "user-repositories"
  288. if (username && repo) return "repo"
  289. if (q && type === "code") return "code_search"
  290. if (q) return "search"
  291. }
  292. const addSizeToRepos = () => {
  293. const pageType = getPageType()
  294. // Get the repo selector based on the page type
  295. let repoSelector
  296. switch (pageType) {
  297. case "repo": //仓库详情界面
  298. repoSelector = "#repository-container-header strong a"
  299. break
  300. case "list-view-container": //ORG下的仓库列表
  301. repoSelector =
  302. 'div[data-testid="list-view-item-title-container"] h4 a'
  303. break
  304. case "user-repositories": //用户资料页面的仓库TAB
  305. repoSelector = "#user-repositories-list h3 a"
  306. break
  307. case "search": //搜索
  308. repoSelector = 'div[data-testid="results-list"] .search-title a'
  309. break
  310. case "code_search": //代码搜索
  311. repoSelector = 'div[data-testid="results-list"] .search-title a'
  312. break
  313. default:
  314. return
  315. }
  316. function extractPath(input) {
  317. const thirdSlashIndex = input.indexOf(
  318. "/",
  319. input.indexOf("/", input.indexOf("/") + 1) + 1
  320. )
  321. if (thirdSlashIndex !== -1) {
  322. return input.substring(0, thirdSlashIndex)
  323. }
  324. return input
  325. }
  326. // Get all the repo links
  327. document.querySelectorAll(repoSelector).forEach(async (elem) => {
  328. // Get json data from github api to extract the size
  329. const tkn = TOKEN
  330. var href = elem.getAttribute("href")
  331. href = extractPath(href)
  332. // console.log(href, elem)
  333. const headers = tkn ? { authorization: `token ${tkn}` } : {}
  334. const jsn = await (
  335. await fetch(`https://api.github.com/repos${href}`, {
  336. headers: headers,
  337. })
  338. ).json()
  339. if (
  340. repoSelector == "#repository-container-header strong a" &&
  341. WARNING
  342. ) {
  343. checkCommitDate(jsn.pushed_at)
  344. }
  345. // If JSON failed to load, skip
  346. if (jsn.message) return
  347. // Get parent element to append the size to
  348. let parent = elem.parentElement
  349. if (pageType === "repo") {
  350. parent = elem.parentElement.parentElement
  351. }
  352. // Create the size container
  353. let sizeContainer = parent.querySelector(`#mshll-repo-size`)
  354. if (sizeContainer === null) {
  355. sizeContainer = document.createElement("span")
  356. sizeContainer.id = "mshll-repo-size"
  357. sizeContainer.classList.add(
  358. "Label",
  359. "Label--info",
  360. "v-align-middle",
  361. "ml-1"
  362. )
  363. sizeContainer.setAttribute("title", "Repository size")
  364. sizeContainer.innerText = "-"
  365. // Create the size icon
  366. let sizeSVG = document.createElementNS(
  367. "http://www.w3.org/2000/svg",
  368. "svg"
  369. )
  370. sizeSVG.setAttribute("aria-hidden", "true")
  371. sizeSVG.setAttribute("viewBox", "-4 -4 22 22")
  372. sizeSVG.setAttribute("width", "16")
  373. sizeSVG.setAttribute("height", "16")
  374. sizeSVG.setAttribute("fill", "currentColor")
  375. sizeSVG.setAttribute("data-view-component", "true")
  376. sizeSVG.classList.add("octicon", "octicon-file-directory", "mr-1")
  377. let sizeSVGPath = document.createElementNS(
  378. "http://www.w3.org/2000/svg",
  379. "path"
  380. )
  381. sizeSVGPath.setAttribute("fill-rule", "evenodd")
  382. sizeSVGPath.setAttribute(
  383. "d",
  384. "M1 3.5c0-.626.292-1.165.7-1.59.406-.422.956-.767 1.579-1.041C4.525.32 6.195 0 8 0c1.805 0 3.475.32 4.722.869.622.274 1.172.62 1.578 1.04.408.426.7.965.7 1.591v9c0 .626-.292 1.165-.7 1.59-.406.422-.956.767-1.579 1.041C11.476 15.68 9.806 16 8 16c-1.805 0-3.475-.32-4.721-.869-.623-.274-1.173-.62-1.579-1.04-.408-.426-.7-.965-.7-1.591Zm1.5 0c0 .133.058.318.282.551.227.237.591.483 1.101.707C4.898 5.205 6.353 5.5 8 5.5c1.646 0 3.101-.295 4.118-.742.508-.224.873-.471 1.1-.708.224-.232.282-.417.282-.55 0-.133-.058-.318-.282-.551-.227-.237-.591-.483-1.101-.707C11.102 1.795 9.647 1.5 8 1.5c-1.646 0-3.101.295-4.118.742-.508.224-.873.471-1.1.708-.224.232-.282.417-.282.55Zm0 4.5c0 .133.058.318.282.551.227.237.591.483 1.101.707C4.898 9.705 6.353 10 8 10c1.646 0 3.101-.295 4.118-.742.508-.224.873-.471 1.1-.708.224-.232.282-.417.282-.55V5.724c-.241.15-.503.286-.778.407C11.475 6.68 9.805 7 8 7c-1.805 0-3.475-.32-4.721-.869a6.15 6.15 0 0 1-.779-.407Zm0 2.225V12.5c0 .133.058.318.282.55.227.237.592.484 1.1.708 1.016.447 2.471.742 4.118.742 1.647 0 3.102-.295 4.117-.742.51-.224.874-.47 1.101-.707.224-.233.282-.418.282-.551v-2.275c-.241.15-.503.285-.778.406-1.247.549-2.917.869-4.722.869-1.805 0-3.475-.32-4.721-.869a6.327 6.327 0 0 1-.779-.406Z"
  385. )
  386. sizeSVG.appendChild(sizeSVGPath)
  387. // Convert the size to human readable
  388. const sizes = ["B", "KB", "MB", "GB", "TB"]
  389. const size = jsn.size * 1024 // Github API returns size in KB so convert to bytes
  390. let i = parseInt(Math.floor(Math.log(size) / Math.log(1024)))
  391. const humanReadableSize =
  392. (size / Math.pow(1024, i)).toFixed(1) + " " + sizes[i]
  393. // Insert the size into the size container
  394. sizeContainer.innerHTML = `${humanReadableSize}`
  395. sizeContainer.prepend(sizeSVG)
  396. // Insert the size container into the DOM
  397. if (pageType === "code_search") {
  398. parent.style.direction = "ltr"
  399. }
  400. parent.appendChild(sizeContainer)
  401. }
  402. })
  403. }
  404. window.addSizeToRepos = addSizeToRepos
  405. // Add the size to the repos on the page
  406. window.onload = function () {
  407. //addSizeToRepos()
  408. }
  409. const selectors = [
  410. "#repository-container-header strong a", // 仓库详情界面
  411. 'div[data-testid="list-view-item-title-container"] h4 a', // ORG下的仓库列表
  412. "#user-repositories-list h3 a", // 用户资料页面的仓库TAB
  413. 'div[data-testid="results-list"] .search-title a', // 搜索
  414. // 'div[data-testid="results-list"] .search-title a' // 代码搜索
  415. ]
  416. document.addEventListener('DOMContentLoaded', () => {
  417. main()
  418. })
  419. observeUrlChanges(main)
  420. function main(delay = 0) {
  421. Promise.race(selectors.map((selector) => waitForElement(selector))).then(() => {
  422. setTimeout(() => {
  423. addSizeToRepos()
  424. }, delay)
  425. })
  426. }
  427. function observeUrlChanges(callback, delay = 10) {
  428. let lastUrl = location.href
  429. const observer = new MutationObserver(() => {
  430. const url = location.href
  431. if (url !== lastUrl) {
  432. lastUrl = url
  433. setTimeout(() => {
  434. console.log("链接改变,,,,,")
  435. callback()
  436. }, delay)
  437. }
  438. })
  439. observer.observe(document, { subtree: true, childList: true })
  440. return observer
  441. }
  442. function waitForElement(selector) {
  443. return new Promise((resolve) => {
  444. const observer = new MutationObserver(() => {
  445. if (document.querySelector(selector)) {
  446. resolve()
  447. observer.disconnect()
  448. } else {
  449. /* */
  450. }
  451. })
  452. observer.observe(document.body, { childList: true, subtree: true })
  453. })
  454. }
  455. function displayMessage(el) {
  456. document
  457. .querySelector("#js-repo-pjax-container")
  458. .insertAdjacentElement("beforebegin", el)
  459. }
  460. function renderWarning() {
  461. const banner = document.createElement("div")
  462. banner.id = "zh-banner-warning"
  463. banner.setAttribute(
  464. "style",
  465. `
  466. background-color: red;
  467. height: 100px;
  468. margin-bottom: 20px;
  469. display: flex;
  470. justify-content: center;
  471. align-items: center;
  472. color: white;
  473. font-size: 36px;
  474. `
  475. )
  476. banner.textContent = translate.renderWarning
  477. displayMessage(banner)
  478. }
  479. function renderCaution() {
  480. const banner = document.createElement("div")
  481. banner.id = "zh-banner-warning"
  482. banner.setAttribute(
  483. "style",
  484. `
  485. background-color: yellow;
  486. height: 50px;
  487. margin-bottom: 20px;
  488. display: flex;
  489. justify-content: center;
  490. align-items: center;
  491. font-size: 24px;
  492. `
  493. )
  494. banner.textContent = translate.renderCaution
  495. displayMessage(banner)
  496. }
  497. function checkCommitDate(datetimeString) {
  498. if (document.querySelector("#zh-banner-warning")) return
  499. const date = new Date(datetimeString)
  500. const daysSinceLastCommit =
  501. (Date.now() - date.getTime()) / 1000 / 60 / 60 / 24
  502. if (daysSinceLastCommit > 365) {
  503. renderWarning()
  504. } else if (daysSinceLastCommit > 182.5) {
  505. renderCaution()
  506. } else {
  507. /* noop */
  508. }
  509. }

QingJ © 2025

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