您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Displays Gists (including private ones) in a compact view with clickable links, visibility status, and last update date
// ==UserScript== // @name Github Gist Compact View (With Private Gists) // @namespace http://tampermonkey.net/ // @version 2.0 // @description Displays Gists (including private ones) in a compact view with clickable links, visibility status, and last update date // @author Sergi0 // @match https://gist.github.com/* // @grant none // @icon https://gist.github.com/favicon.ico // @license MIT // @homepageURL https://greasyforks.org/en/scripts/529737-github-gist-compact-view // @supportURL https://greasyforks.org/en/scripts/529737-github-gist-compact-view/feedback // ==/UserScript== (function() { 'use strict'; console.log("UserScript GitHub Gist Compact View started..."); // Replace with your personal access token (PAT) const personalAccessToken = 'YOUR_PERSONAL_ACCESS_TOKEN_HERE'; // Wait until the page has fully loaded window.addEventListener('load', () => { // Extract the username from the URL const pathParts = window.location.pathname.split("/").filter(Boolean); const username = pathParts.length > 0 ? pathParts[0] : null; if (!username) { console.warn("No username found in the URL."); return; } console.log(`Detected user: ${username}`); // Function to load the Gists and display them in the container function loadGists() { fetch(`https://api.github.com/users/${username}/gists`, { method: 'GET', headers: { 'Authorization': `token ${personalAccessToken}` // Authenticate with the token } }) .then(response => { if (!response.ok) { throw new Error(`Request error: ${response.status} ${response.statusText}`); } return response.json(); }) .then(gists => { if (gists.length === 0) { console.warn("The user has no Gists."); return; } // Find the container to display the information const container = document.querySelector("#gist-pjax-container > div > div > div.col-9.col-md-9.col-12"); if (!container) { console.warn("Container not found."); return; } // Clear the container container.innerHTML = ""; // Create a new container for the Gists const newContainer = document.createElement("div"); newContainer.className = "custom-gist-container"; newContainer.innerHTML = `<h3>Gists of ${username} (${gists.length})</h3><ul>`; // Add each Gist as a clickable link with visibility and last update date gists.forEach(gist => { const listItem = document.createElement("li"); const gistLink = document.createElement("a"); gistLink.href = gist.html_url; gistLink.target = "_blank"; // Open link in a new tab gistLink.textContent = gist.description || "No description"; // Determine visibility (public or private) const visibility = gist.public ? 'Public' : 'Private'; // Get the last update date or creation date const lastUpdated = new Date(gist.updated_at); const lastUpdatedDate = lastUpdated.toLocaleDateString('en-US', { year: 'numeric', month: 'long', day: 'numeric' }); // Append visibility and last update date listItem.innerHTML = ` ${gistLink.outerHTML} <span>(${visibility})</span> <span>Last updated: ${lastUpdatedDate}</span> `; newContainer.appendChild(listItem); }); // Close the list and insert the new container into the page newContainer.innerHTML += "</ul>"; container.appendChild(newContainer); console.log("New Gist view successfully inserted."); }) .catch(error => console.error("Error loading Gists:", error)); } // Execute the function to load Gists loadGists(); }); })();