您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Shows account age next to usernames in subreddits that you moderate
// ==UserScript== // @name Reddit Show User Age // @namespace dub4u // @description Shows account age next to usernames in subreddits that you moderate // @include http://www.reddit.com/r/* // @include https://www.reddit.com/r/* // @require //code.jquery.com/jquery-2.2.4.min.js // @require //cdnjs.cloudflare.com/ajax/libs/protonet-jquery.inview/1.1.2/jquery.inview.min.js // @require //cdnjs.cloudflare.com/ajax/libs/moment.js/2.13.0/moment.min.js // @grant unsafeWindow // @version 1.4 // ==/UserScript== // @require //raw.githubusercontent.com/protonet/jquery.inview/5a4dc9f2537016a9dcf0acc4a2c469500021586c/jquery.inview.min.js var seen = new Object(), queue = new Array(), store = unsafeWindow.localStorage, cache = store.getItem('user_age_cache'), cache_is_dirty = false, offset = (new Date).getTimezoneOffset()*60, WAIT = 2100; // ms if (cache) { cache = JSON.parse(cache); } else { cache = {}; } $.get('/subreddits/mine/moderator.json', function(data) { if (!data.data) { return; } var url = window.location.pathname.split('/', 3).join('/') + '/'; var moderated = $.map(data.data.children, function(e, i) { return e.data.url; }); moderated.push('/r/mod/'); $.each(moderated, function(i, e) { if (e == url) { loadKarma(); return false; } }); }); function loadKarma() { $('.sitetable .tagline .author').bind('inview', function(e, isInView) { if (isInView && !seen[this]) { var user = this.toString().match(/\/([^\/]+)$/)[1]; seen[this] = 1; queue.push(user); } }); setTimeout(processQueue, 1000); } function processQueue() { if (cache_is_dirty) { store.setItem('user_age_cache', JSON.stringify(cache)); cache_is_dirty = false; } var i = 0, url; while (user = queue.shift()) { if (cache[user]) { showUserAge(cache[user]); } else { getAboutJson(user, i*WAIT); i++; } } i++; setTimeout(processQueue, i*WAIT); } function getAboutJson(user, delay) { setTimeout(function() { $.get('/user/' + user + '/about.json', function(response) { if (!response.data) { return; } cache[user] = { i: response.data.id, c: response.data.created }; cache_is_dirty = true; showUserAge(cache[user]); }); }, delay); } function showUserAge(user) { var created = moment((user.c+offset)*1000), text = 'redditor for ' + created.fromNow(true); if (created.isAfter(moment().subtract(30, 'days'))) { $('.sitetable .author.id-t2_' + user.i).closest('.entry') .css('background', '#dfc'); } $('.sitetable .tagline .author.id-t2_' + user.i + ' ~ .userattrs') .after(' (<span class="userkarma">' + text + '</span>)'); }