洛谷粉丝统计脚本
分享洛谷賬戶統計腳本。腳本基于JavaScript語言,適用于洛谷。該腳本非洛谷官方制作,與洛谷官方無關。
腳本采用異步處理技術,由鏡音リン制作并授權轉載。
function f_request_sync(url) {var xhr = new XMLHttpRequest();xhr.open("GET", url, false);xhr.send(null);if (xhr.status != 200) return;return JSON.parse(xhr.response); } function f_request(url, id) {var xhr = new XMLHttpRequest();xhr.onreadystatechange = function() {if (xhr.readyState == 4) {if (xhr.status == 200)f_handle(JSON.parse(xhr.response));else f_error(id);}}xhr.open("GET", url, true);xhr.send(null); } const f_uid = 108103; var f_users = []; var f_queue = []; var f_id; var f_succ = 0, f_pages; function f_handle(data) {f_users.push.apply(f_users, data.users.result);f_succ++; } function f_error(id) {f_queue.push(id); } function f_work() {console.log(f_succ+'/'+f_pages);if (f_pages == f_succ) {clearInterval(f_id);f_info();return;}var t = 10;while (t > 0 && f_queue.length > 0) {t--;var id = f_queue.pop();f_request('https://www.luogu.com.cn/fe/api/user/followers?user='+f_uid+'&page='+id, id);} } function f_main() {var data = f_request_sync('https://www.luogu.com.cn/fe/api/user/followers?user='+f_uid+'&page=1');var count = data.users.count, per_page = data.users.perPage;f_pages = Math.ceil(data.users.count / data.users.perPage);for (var i = 1; i <= f_pages; i++)f_queue.push(i);f_id = setInterval(f_work, 1000); } function f_info() {var f_followers = f_users.length;var f_color = {Cheater:0,Gray:0,Blue:0,Green:0,Orange:0,Red:0,Purple:0};var f_ccflevel = {'0':0,'3':0,'4':0,'5':0,'6':0,'7':0,'8':0,'9':0,'10':0};var f_badge = 0;var f_banned = 0;var f_sum_follower = 0;var f_sum_following = 0;var f_sum_uid = 0;var f_friends = 0;for (var i = 0; i < f_followers; i++) {var c = f_users[i];f_color[c.color]++;f_ccflevel[c.ccfLevel]++;if (c.badge) f_badge++;if (c.isBanned) f_banned++;f_sum_follower += c.followerCount;f_sum_following += c.followingCount;f_sum_uid += c.uid;if (c.userRelationship) f_friends++;}console.log('followers: '+f_followers);console.log('color: ');for (var x in f_color)console.log('\t'+x+': '+f_color[x]);console.log('ccflevel: ');for (var x in f_ccflevel)console.log('\t'+x+': '+f_ccflevel[x]);console.log('has badge: '+f_badge);console.log('banned: '+f_banned);console.log('average follower count: '+f_sum_follower/f_followers);console.log('average following count: '+f_sum_following/f_followers);console.log('average uid: '+f_sum_uid/f_followers);console.log('friends: '+f_friends); } f_main();
使用方法:將 const f_uid = 108103; 中的 108103 改為你自己的用戶id,將腳本復制到browser的console里運行。
注意:
-
在Google Chrome macOS中console出于安全考慮自覺拒絕運行腳本。原因是:
[Deprecation] Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user’s experience. For more help, check https://xhr.spec.whatwg.org/.
總結
- 上一篇: java 泰国_游记:泰国之旅
- 下一篇: huge形式_huge什么意思怎么读