您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
shows user statistics as total installs, total scripts and etc.
当前为
// ==UserScript== // @name Greasy Fork User Statistics+ // @namespace - // @version 0.1 // @description shows user statistics as total installs, total scripts and etc. // @author NotYou // @include *greasyfork.org/*/users/* // @require https://code.jquery.com/jquery-3.3.1.min.js // @license GPL-3.0 // @license-link https://www.gnu.org/licenses/gpl-3.0.txt // @grant GM_addStyle // ==/UserScript== (function() { let css = ` .numStat { margin-left: 0px; font-weight: 700 !important; font-size: 14px; } .columnStat { background-color: rgba(0, 0, 0, 0.17); user-select: none !important; transition: 380ms; padding-left: 5px; padding-top: 5px; margin-top: 3px; display: block; height: 40px; border-radius: 0px 4px 4px 0px; } .showMore { background: rgba(0, 0, 0, 0.17); color: currentColor !important; position: absolute; transition: 100ms; border-radius: 0px 5px 5px 0px; left: 92.4%; margin-top: -37px; cursor: default; padding: 8px; border-left: 2px solid currentColor; } #user-statistics > span { font-weight: 700; } #user-statistics > h3:nth-of-type(1):lang(ar)::before { content: "إحصائيات المستخدم"; } #user-statistics > h3:nth-of-type(2):lang(ar)::before { content: "يعمل المستخدم"; } #user-statistics > h3:nth-of-type(1):lang(bg)::before { content: "Потребителска статистика"; } #user-statistics > h3:nth-of-type(2):lang(bg)::before { content: "Потребителят работи"; } #user-statistics > h3:nth-of-type(1):lang(cs)::before { content: "Statistiky uživatelů"; } #user-statistics > h3:nth-of-type(2):lang(cs)::before { content: "Uživatel pracuje"; } #user-statistics > h3:nth-of-type(1):lang(da)::before { content: "Brugerstatistik"; } #user-statistics > h3:nth-of-type(2):lang(da)::before { content: "Brugeren fungerer"; } #user-statistics > h3:nth-of-type(1):lang(de)::before { content: "Benutzerstatistiken"; } #user-statistics > h3:nth-of-type(2):lang(de)::before { content: "Benutzer funktioniert"; } #user-statistics > h3:nth-of-type(1):lang(el)::before { content: "Στατιστικά στοιχεία χρηστών"; } #user-statistics > h3:nth-of-type(2):lang(el)::before { content: "Ο χρήστης λειτουργεί"; } #user-statistics > h3:nth-of-type(1):lang(en)::before { content: "User statistics"; } #user-statistics > h3:nth-of-type(2):lang(en)::before { content: "User works"; } #user-statistics > h3:nth-of-type(1):lang(eo)::before { content: "Statistiko de uzantoj"; } #user-statistics > h3:nth-of-type(2):lang(eo)::before { content: "Uzanto funkcias"; } #user-statistics > h3:nth-of-type(1):lang(es)::before { content: "Estadísticas de usuario"; } #user-statistics > h3:nth-of-type(2):lang(es)::before { content: "El usuario trabaja"; } #user-statistics > h3:nth-of-type(1):lang(fi)::before { content: "Käyttäjätilastot"; } #user-statistics > h3:nth-of-type(2):lang(fi)::before { content: "Käyttäjä toimii"; } #user-statistics > h3:nth-of-type(1):lang(fr)::before { content: "Statistiques d'utilisateurs"; } #user-statistics > h3:nth-of-type(2):lang(fr)::before { content: "L'utilisateur travaille"; } #user-statistics > h3:nth-of-type(1):lang(he)::before { content: "סטטיסטיקות משתמשים"; } #user-statistics > h3:nth-of-type(2):lang(he)::before { content: "משתמש עובד"; } #user-statistics > h3:nth-of-type(1):lang(hu)::before { content: "Felhasználói statisztikák"; } #user-statistics > h3:nth-of-type(2):lang(hu)::before { content: "Felhasználó működik"; } #user-statistics > h3:nth-of-type(1):lang(id)::before { content: "Statistik pengguna"; } #user-statistics > h3:nth-of-type(2):lang(id)::before { content: "Pengguna bekerja"; } #user-statistics > h3:nth-of-type(1):lang(it)::before { content: "Statistiche utente"; } #user-statistics > h3:nth-of-type(2):lang(it)::before { content: "L'utente lavora"; } #user-statistics > h3:nth-of-type(1):lang(ja)::before { content: "ユーザー統計"; } #user-statistics > h3:nth-of-type(2):lang(ja)::before { content: "ユーザーは動作します"; } #user-statistics > h3:nth-of-type(1):lang(ko)::before { content: "사용자 통계"; } #user-statistics > h3:nth-of-type(2):lang(ko)::before { content: "사용자 작품"; } #user-statistics > h3:nth-of-type(1):lang(ne)::before { content: "Gebruikersstatistieken"; } #user-statistics > h3:nth-of-type(2):lang(ne)::before { content: "Gebruiker werkt"; } #user-statistics > h3:nth-of-type(1):lang(pl)::before { content: "Statystyki użytkowników"; } #user-statistics > h3:nth-of-type(2):lang(pl)::before { content: "Użytkownik pracuje"; } #user-statistics > h3:nth-of-type(1):lang(ro)::before { content: "Statistici utilizatori"; } #user-statistics > h3:nth-of-type(2):lang(ro)::before { content: "Utilizatorul lucrează"; } #user-statistics > h3:nth-of-type(1):lang(ru)::before { content: "Статистика пользователей"; } #user-statistics > h3:nth-of-type(2):lang(ru)::before { content: "Пользовательские работы"; } #user-statistics > h3:nth-of-type(1):lang(tr)::before { content: "Kullanıcı istatistikleri"; } #user-statistics > h3:nth-of-type(2):lang(tr)::before { content: "Kullanıcı işleri"; } #user-statistics > h3:nth-of-type(1):lang(uk)::before { content: "Статистика користувачів"; } #user-statistics > h3:nth-of-type(2):lang(uk)::before { content: "Користувач працює"; } #user-statistics > h3:nth-of-type(1):lang(vi)::before { content: "Thống kê người dùng"; } #user-statistics > h3:nth-of-type(2):lang(vi)::before { content: "Người dùng hoạt động"; } #user-statistics > h3:nth-of-type(1):lang(zh-CN)::before { content: "用户统计"; } #user-statistics > h3:nth-of-type(2):lang(zh-CN)::before { content: "用户作品"; } #user-statistics > h3:nth-of-type(1):lang(zh-TW)::before { content: "用戶統計"; } #user-statistics > h3:nth-of-type(2):lang(zh-TW)::before { content: "用戶作品"; } #user-statistics > h3:nth-of-type(1)::before { content: "User statistics"; } #user-statistics > h3:nth-of-type(2)::before { content: "User works"; } `; if (typeof GM_addStyle !== "undefined") { GM_addStyle(css); } else { let styleNode = document.createElement("style"); styleNode.appendChild(document.createTextNode(css)); (document.querySelector("head") || document.documentElement).appendChild(styleNode); } })(); /* START OF MIT LICENSE | Source: https://greasyfork.org/scripts/438584/code */ const wrapper = document.querySelector("#browse-script-list, #user-script-list"); const els = [...wrapper.querySelectorAll("dd.script-list-total-installs")]; const els2 = [...wrapper.querySelectorAll("dd.script-list-daily-installs")]; const nonDigits = /[^\d]/g; const getNum = txt => parseFloat(txt.replace(nonDigits, "")); const totalDownloads = els.reduce((acc, el) => acc + getNum(el.textContent), 0); const totalDailyDownloads = els2.reduce((acc, el) => acc + getNum(el.textContent), 0); const totalDownloadsStat = els.reduce((acc, el) => acc + getNum(el.textContent), 0); const totalDailyDownloadsStat = els2.reduce((acc, el) => acc + getNum(el.textContent), 0); /* END OF MIT LICENSE */ if(totalDownloads > 800) { var totalDownloadsTotal = ''; } else if(totalDownloads == 0) { var totalDownloadsTotal = '0' } else if(totalDownloads < 800) { var totalDownloadsTotal = totalDownloads; } if(totalDailyDownloads > 800) { var totalDailyDownloadsTotal = ''; } else if(totalDailyDownloads == 0) { var totalDailyDownloadsTotal = '0' } else if(totalDailyDownloads < 800) { var totalDailyDownloadsTotal = totalDailyDownloads; } let cssStat = document.querySelectorAll('[data-css-available-as-js="true"]').length; var cssTotal = cssStat * 4; let libStat = document.querySelectorAll('#user-library-script-list > li').length; var libTotal = libStat * 4; let jsStat = document.querySelectorAll('#user-script-list > [data-css-available-as-js="false"]').length; var jsTotal = jsStat * 4; $('#about-user').append(`<section id="user-statistics"> <h3></h3> <span id="column0" class="columnStat">Total Installs</span><span id="column0More" class="showMore">`+totalDownloadsStat+`</span> <span id="column1" class="columnStat">Daily Installs</span><span id="column1More" class="showMore">`+totalDailyDownloadsStat+`</span> <h3></h3> <span id="column2" class="columnStat">Total Scripts</span><span id="column2More" class="showMore">`+jsStat+`</span> <span id="column3" class="columnStat">Total Styles</span><span id="column3More" class="showMore">`+cssStat+`</span> <span id="column4" class="columnStat">Total Libraries</span><span id="column4More" class="showMore">`+libStat+`</span> </section>`); (function() { let css = ` #column0 { width: 0px; } #column1 { width: 0px; } #column2 { width: 0px; } #column3 { width: 0px; } #column4 { width: 0px; } `; if (typeof GM_addStyle !== "undefined") { GM_addStyle(css); } else { let styleNode = document.createElement("style"); styleNode.appendChild(document.createTextNode(css)); (document.querySelector("head") || document.documentElement).appendChild(styleNode); } })(); if(totalDownloadsTotal == "") { totalDownloadsTotal = '92%' } else { totalDownloadsTotal = totalDownloadsTotal+'px' } if(totalDailyDownloadsTotal == "") { totalDailyDownloadsTotal = '92%' } else { totalDailyDownloadsTotal = totalDailyDownloadsTotal+'px' } function columnsStart() { (function() { let css = ` #column0 { width: `+totalDownloadsTotal+` !important; } #column1 { width: `+totalDailyDownloadsTotal+` !important; } #column2 { width: `+jsTotal+`px; } #column3 { width: `+cssTotal+`px; } #column4 { width: `+libTotal+`px; } `; if (typeof GM_addStyle !== "undefined") { GM_addStyle(css); } else { let styleNode = document.createElement("style"); styleNode.appendChild(document.createTextNode(css)); (document.querySelector("head") || document.documentElement).appendChild(styleNode); }})(); } setTimeout(columnsStart, 300)