您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Counts the total downloads of all published releases in a Search Result and in Repository view.
当前为
- // ==UserScript==
- // @name [New] GitHub Downloads Counter
- // @namespace https://greasyfork.org/users/1162863
- // @version 1.0
- // @description Counts the total downloads of all published releases in a Search Result and in Repository view.
- // @author Andrewblood
- // @match *://*.github.com/*
- // @icon https://www.google.com/s2/favicons?sz=64&domain=github.com
- // @grant GM_xmlhttpRequest
- // @connect api.github.com
- // @license Andrewblood
- // ==/UserScript==
- (function() {
- 'use strict';
- // Here your Access Token if you have one
- const accessToken = ''; // 'ghp_your_access_token_here'
- setTimeout(function() {
- getRepoDownloads();
- processSearchResults();
- }, 1000 * 3);
- // Funktion zum Abrufen der Downloads über die GitHub API
- function getDownloads(repoPath, callback) {
- const apiUrl = `https://api.github.com/repos/${repoPath}/releases`;
- let totalDownloads = 0;
- // API-Anfrage senden
- GM_xmlhttpRequest({
- method: "GET",
- url: apiUrl,
- headers: accessToken ? { 'Authorization': `token ${accessToken}` } : {}, // Token hinzufügen, falls vorhanden
- onload: function(res) {
- if (res.status === 200) {
- const releases = JSON.parse(res.responseText);
- // Downloads zählen
- releases.forEach(release => {
- release.assets.forEach(asset => {
- totalDownloads += asset.download_count || 0; // Zähle die Downloads
- });
- });
- // Rückgabe der Gesamtzahl der Downloads
- callback(totalDownloads);
- } else {
- console.error(`Error fetching downloads: ${res.status}`); // Fehlermeldung
- callback(0); // Rückgabe 0 bei Fehler
- }
- }
- });
- }
- // Funktion zum Anzeigen der Gesamtzahl der Downloads für jedes Repository
- function displayTotalDownloads(repoElement, total) {
- const totalElement = document.createElement('div');
- totalElement.textContent = `Total Downloads: ${total}`; // Anzeige der Gesamtzahl
- totalElement.style.marginTop = '5px';
- totalElement.style.fontWeight = 'bold';
- repoElement.appendChild(totalElement);
- }
- // Funktion zum Verarbeiten der Suchergebnisse
- function processSearchResults() {
- const repoElements = document.querySelectorAll('.Box-sc-g0xbh4-0.iwUbcA');
- repoElements.forEach(repo => {
- const repoLink = repo.querySelector('.prc-Link-Link-85e08'); // Link zum Repository
- if (repoLink) {
- const repoPath = repoLink.href.replace('https://github.com/', ''); // Repository-Pfad
- // Downloads abrufen und anzeigen
- getDownloads(repoPath, function(totalDownloads) {
- displayTotalDownloads(repo, totalDownloads); // Gesamtzahl anzeigen
- });
- }
- });
- }
- // Funktion zum Abrufen der Downloads über die GitHub API
- function getRepoDownloads() {
- const header = document.querySelector('#repo-title-component');
- const repoPath = window.location.pathname.replace('/releases', '');
- const apiUrl = `https://api.github.com/repos${repoPath}/releases`;
- let totalDownloads = 0;
- if (header) {
- // API-Anfrage senden
- GM_xmlhttpRequest({
- method: "GET",
- url: apiUrl,
- onload: function(res) {
- if (res.status === 200) {
- const releases = JSON.parse(res.responseText);
- // Downloads zählen
- releases.forEach(release => {
- release.assets.forEach(asset => {
- totalDownloads += asset.download_count || 0; // Zähle die Downloads
- });
- });
- const totalElement = document.createElement('div');
- totalElement.textContent = `Total Downloads: ${totalDownloads}`; // Anzeige der Gesamtzahl
- totalElement.style.marginLeft = '10px';
- header.appendChild(totalElement);
- } else {
- console.error(`Error: ${res.status}`);
- }
- }
- });
- }
- }
- })();