您需要先安装一个扩展,例如 篡改猴、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://greasyfork.org/en/scripts/529737-github-gist-compact-view
- // @supportURL https://greasyfork.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();
- });
- })();