您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
如果你的脚本
当前为
// ==UserScript== // @name Display GreasyFork user registration time // @name:ar Greasyfork عرض وقت تسجيل المستخدم // @name:bg GreasyforkПоказване на времето за регистрация // @name:cs Greasyfork Zobrazit dobu registrace // @name:da Greasyfork Vis registreringstid // @name:de Greasyfork Zeigen Sie Registrierungszeit // @name:el Greasyfork Εμφάνιση χρόνου εγγραφής // @name:en Greasyfork Display registration time // @name:eo Greasyfork Montru registran tempon // @name:es Greasyfork Muestra tiempo de registro // @name:fi Greasyfork Näytä rekisteröintiaika // @name:fr Greasyfork Afficher temps d’inscription // @name:fr-CA Greasyfork Afficher temps d’inscription // @name:he Greasyfork הצג זמן הרשמה // @name:hr Greasyfork Prikažite vrijeme registracije // @name:hu Greasyfork Jelenítse meg regisztrációs időt // @name:id Greasyfork Tampilkan waktu pendaftaran // @name:it Greasyfork Visualizza tempo di registrazione // @name:ja Greasyfork 登録時間を表示 // @name:ka Greasyforkაჩვენეთ რეგისტრაციის დრო // @name:ko Greasyfork등록 시간을 표시 // @name:nb Greasyfork Vis registreringstid // @name:nl Greasyfork Geef registratietijd weer // @name:pl Greasyfork Wyświetl czas rejestracji // @name:pt-BR Greasyfork Exibir tempo de registro // @name:ro Greasyfork Afișați timpul de înregistrare // @name:ru Greasyfork Показать время регистрации // @name:sk Greasyfork Zobraziť čas registrácie // @name:sr Greasyfork Прикажите време регистрације // @name:sv Greasyfork Visa registreringstid // @name:th Greasyfork แสดงเวลาลงทะเบียน // @name:tr Greasyfork Görüntüle kayıt süresi // @name:ug Greasyfork تىزىملىتىش ۋاقتىنى كۆرستۈڭ // @name:uk Greasyfork Відобразити час реєстрації // @name:vi Greasyfork Hiển thị thời gian đăng ký // @name:zh 显示Greasyfork用户注册时间,识别恶意评论 // @name:zh-CN 显示Greasyfork用户注册时间,识别恶意评论 // @name:zh-HK 顯示Greasyfork用戶註冊時間,識別惡意評論 // @name:zh-SG 显示Greasyfork用户注册时间,识别恶意评论 // @name:zh-TW 顯示Greasyfork用戶註冊時間,識別惡意評論 // @description If your script interfere // @description:ar إذا كان اب تلقي مراجأن الحساب عادة ما يكون أن يكون المستخدم حسابًا ضارًا مسجلاً. // @description:bg Ако вашият сценарий пречи на интеотрицатееристики на злонамеренитент. // @description:cs Pokud váš skript narušuje zájmy některých lidí, není divu, že obdrží škodlivé negativní recenze. t. // @description:da Hvis dit script forstyrrer nogle menneskers interesser, er det ikke streret. // @description:de Wenn Ihr Skript die Interessen einiger Menschen beeinträch // @description:el Εάν το σενάριό σας παρεμβαίνει στα συμφέροντα ορισι δίπλα στο όνομα χρ έχει καταχωρηθεί. // @description:en Ifbe a malicious account registered. // @description:eo Se via skr negativajn recenzporita. // @description:es Si suiiosn registrada,de usuario. Si el tiempo que se muestra junto al no // @description:fi Jos käsiää ja näkyy käyttäjänimen vieressä. Jos käyttäjänimen vieressä näkyv // @description:fr Si votre scs rebtient le temps d’enregistrement // @description:fr-CA Si votre script interfère avec lesps aprèe temps d’enregis // @description:he אם התסריט שלך מפריע // @description:nb dada // @description:hr Ako vaša skripta ometa interese nekih registrirani, a drugi je da će se negativni pregledi dati // @description:hu Ha a szkript zavarja néhány ember érdeke: az egyik az, gisz // @description:id Jika skrip Anda mengganggu minat beberapa oradalah bahwa akun biasanya baru terdafta // @description:it Se la tua sceneggiatura interferisce con censioni negative dannose. Esistono due caratteristiche di recensioni negative d // @description:ja スクリプトが一部の人々の利益を妨げている場合、悪意否定的なレビューには2つの特徴があります。1つは通常、 // @description:ka თუ თქვენი სკრიპტი ერევა ზოგიერთი ადამიანის ინტერესებში, გასაკვირი არ არის, რომ მიიღოთ // @description:ko 스크립트가 일부 사람들의 관심사를 방해한다면 악의적 인 부정적인 리뷰 // @description:nl Als uw script de belangen van sommige mensen belemmert, is het niet // @description:pl Jeśli twój skrypt zakłóca interesy niektórych osób, nie jest zaskakujące, że ot // @description:pt-BR Se o seu script interferir nos interesses de alguma // @description:ro Dacă scriptul dvs. interfereaz // @description:ru Если ваш сценарий мешает интересам некоторых людей, неудивительно получать вредоносные негативные отзывы. Есть две характ // @description:sk Ak váš scenár narúša záujmy niektorých ľudí, nie je prekvapujúce, že dostávajú škodlivé negatívne recen // @description:sr Ако ваша сценариј омета интересе неких људи, то није изненађујуће примање // @description:sv Om ditt skript stör vissa människors intressen är det inte förvånande // @description:th หากสคริปต์ // @description:tr Komut dosyanız bazı insanların çıkarlarına müdahale ederse // @description:ug ئەگەر سىزنىڭ قوليازما بەزى كىشىلەرنىڭ مەنپەئەتىگە دەخلى-تەرۇز قىلغان بولسا, يامان غەرڭىدىن كېيىن, تىزىم // @description:uk Якщо ваш сценарій з // @description:vi Nếu kịch bản của bạn can thiệp vào l // @description:zh 如果你的脚本 // @description:zh-CN 如果你的脚本 // @description:zh-HK 如果你的腳本 // @description:zh-SG 如果 // @description:zh-TW registro // @grant GM_setValue // @grant GM_getValue // @grant GM_xmlhttpRequest // @match *://greasyfork.org/* // @require https://code.jquery.com/jquery-3.7.1.min.js // @author yysk.org,人民的勤务员 <[email protected]> // @namespace https://github.com/ChinaGodMan/UserScripts // @supportURL https://github.com/ChinaGodMan/UserScripts/issues // @homepageURL https://github.com/ChinaGodMan/UserScripts // @license MIT // @icon https://raw.githubusercontent.com/ChinaGodMan/UserScriptsHistory/main/scriptsIcon/greasyfork-webhook-sync-enhanced.svg // @compatible chrome // @compatible firefox // @compatible edge // @compatible opera // @compatible safari // @compatible kiwi // @version 2025.6.2.1 // @created 2025-03-10 09:59:11 // @modified 2025-03-10 09:59:11 // ==/UserScript== /** * File: greasyfork-user-registration-time.user.js * Project: UserScripts * File Created: 2025/03/10,Monday 09:59:36 * Author: 人民的勤务员@ChinaGodMan ([email protected]) * ----- * Last Modified: 2025/06/02,Monday 09:39:23 * Modified By: 人民的勤务员@ChinaGodMan ([email protected]) * ----- * License: MIT License * Copyright © 2024 - 2025 ChinaGodMan,Inc */ (function () { 'use strict' const interval = 3000 const absoluteTime = 'relative-time1'//随便修改个类名,显示精确时间.比如relative-time1 var lang = document.querySelector('html').lang.toLowerCase() || navigator.language.toLowerCase() if (!['en', 'zh-cn', 'zh-tw', 'ja', 'ru', 'kr', 'fr', 'fr-CA'].includes(lang)) lang = 'en' const i18n = { en: { title: 'Registration time', prefix: 'R' }, 'zh-cn': { title: '注册时间', prefix: '注' }, 'zh-tw': { title: '註冊時間', prefix: '注' }, ja: { title: '登録時間', prefix: 'R' }, ru: { title: 'время регистрации', prefix: 'R' }, kr: { title: '등록 시간', prefix: 'R' }, fr: { title: 'Heure d\'inscription', prefix: 'R' }, 'fr-CA': { title: 'Heure d\'inscription', prefix: 'Heure d\'inscription' } } const title = i18n[lang].title const prefix = i18n[lang].prefix function pad(s, d) { s = `000000${s}` return s.substring(s.length - d) } const formatUFn = (dt) => { return `${dt.getFullYear()}.${pad(dt.getMonth() + 1, 2)}.${pad(dt.getDate(), 2)} ${pad(dt.getHours(), 2)}:${pad(dt.getMinutes(), 2)}:${pad(dt.getSeconds(), 2)}` } const formatFrFn = (dt) => { return `${pad(dt.getDate(), 2)}.${pad(dt.getMonth() + 1, 2)}.${dt.getFullYear()} ${pad(dt.getHours(), 2)}:${pad(dt.getMinutes(), 2)}:${pad(dt.getSeconds(), 2)}` } function formatTime(utcTime, lang = 'en') { const dt = new Date(utcTime) let formatFn = (lang === 'fr' || lang.startsWith('fr-')) ? formatFrFn : formatUFn return formatFn(dt) } async function genregtime(uid) { if (GM_getValue(uid) !== undefined && GM_getValue(uid) !== null) { return GM_getValue(uid) } const user_api = `https://api.greasyfork.org/users/${uid}.json` var created_at try { const response = await fetch(user_api) const data = await response.json() created_at = data.created_at console.log('🔍 ~ created_at:', created_at) } catch (error) { console.error('请求失败:', error) } GM_setValue(uid, created_at) return created_at } function gensnippet(regtime, uid) { return `<span class="regtime" style="margin-left: 10px; font-weight: bold; color: red;" title="uid ${uid} ${title}">${prefix} <${absoluteTime} datetime="${regtime}+00:00" prefix="">${regtime}</${absoluteTime}></span>` } let isProcessing = false function run() { if (isProcessing) return isProcessing = true var maxuid = 0 const uids = document.documentElement.innerHTML.matchAll(/\/users\/(\d+)/g) for (const uid of uids) { if (parseInt(uid[1]) > maxuid) maxuid = parseInt(uid[1]) } if (window.location.href.match(/(greasyfork|sleazyfork).org\/\w+-\w+\/users\/\d+(-[^/]*)?$/) && jQuery('section#about-user > span.regtime').length === 0) { let uid = jQuery('section#about-user > a.report-link').attr('href').match(/item_id=(\d+)/)[1] genregtime(uid).then(regtime => { regtime = formatTime(regtime, lang) jQuery('section#about-user > h2').after(gensnippet(regtime, uid)) }) } jQuery('a.user-link, dd.script-list-author > span > a, dd.script-show-author > span > a, table.log-table > tbody > tr > td > a, i:contains(\'Deleted user \')').each(function (i, el) { var lastele = jQuery(el).parent().children().last() if (lastele.attr('class') === 'regtime' || lastele.attr('class') === 'small-btn') return var button = jQuery('<button>').text(i18n[lang].prefix).addClass('small-btn') var m = (el.tagName === 'A') ? jQuery(el).attr('href').match(/\/users\/(\d+)/) : jQuery(el).text().match(/Deleted user (\d+)/) if (!m) return button.on('click', function () { isProcessing = true genregtime(m[1]).then(regtime => { regtime = formatTime(regtime, lang) lastele.after(gensnippet(regtime, m[1])) }) button.remove() }) // 如果存在时间就直接插入,不存在显示按钮 if (GM_getValue(m[1]) !== undefined && GM_getValue(m[1]) !== null) { lastele.after(gensnippet(formatTime(GM_getValue(m[1]), lang), m[1])) } else { lastele.after(button) } }) isProcessing = false return run } setInterval(run(), interval) })()