forum

【让我们来互相伤害】 快速删除所有非mu好友js脚本

posted
Total Posts
9

你会使用这个脚本吗?

2
18.18%
不会
9
81.82%
Total votes: 11
Topic Starter
ts8zs
快速删除全部非mu好友(复制文本框内全部 F12控制台运行在 osu.ppy.sh/forum/ucp.php 删不干净刷新之后多试几次 ):
$('.profile_friend:not(.mutual)').children().each(function (index, element) {setTimeout(function(){$.post($(element).attr('href'), 'a=remove&localUserCheck=' + localUserCheck)}, index * 500);})

快速删除所有好友
$('.profile_friend').children().each(function (index, element) {setTimeout(function(){$.post($(element).attr('href'), 'a=remove&localUserCheck=' + localUserCheck)}, index * 500);})
lslqtz
滋此,带上个我的脚本(批量列出好友PP/Rank)求dalao帮忙优化。。写的又臭又长,想听听dalao的思路(主要是当时脑抽没写上异步也没啥思路,然后就经常卡。。然后好像是感觉有一些步骤多余了
if ($('.paddingboth').length > 5) {
domfriends=$('.paddingboth');
onlinefriends=domfriends[domfriends.length-2].children;
offlinefriends=domfriends[domfriends.length-1].children;
friends=[];
for (let i=0;i<onlinefriends.length;i++) {
if (onlinefriends[i].innerText !== 'No friends online') {
friends.push(onlinefriends[i].innerText);
}
}
for (let i=0;i<offlinefriends.length;i++) {
friends.push(offlinefriends[i].innerText);
}
document.body.innerText='';
document.write('已获取全部好友列表!<br>');
userdata={};
for (let i=0;i<friends.length;i++) {
$.ajax({
url:'https://osu.ppy.sh/u/'+friends[i],
async:false,
success:function(data) {
data=data.match(/var userId = (\d*)/)[1];
userdata[friends[i]]='-';
if (data !== null) {
userdata[friends[i]]=data;
}
}
});
}
document.write('已获取全部好友的osu! ID<br>');
userstdrank={};
usertaikorank={};
userctbrank={};
usermaniarank={};
idstart=0;
idend=friends.length;
document.write('共 '+idend+' 个好友<br>');
function getrank(mode,uid,uname) {
$.ajax({
url:'https://osu.ppy.sh/pages/include/profile-general.php?u='+uid+'&m='+mode,
async:false,
success:function(data) {
data=data.match(/Performance<\/a>: (.*?)<\/b>/);
if (data === null) {
data=[];
data[1]='-';
}
switch (mode) {
case 0:
userstdrank[uname]=data[1];
break;
case 1:
usertaikorank[uname]=data[1];
break;
case 2:
userctbrank[uname]=data[1];
break;
case 3:
usermaniarank[uname]=data[1];
break;
}
}
});
}
function writerank() {
if (idstart < idend) {
idstart++;
getrank(0,userdata[friends[idstart]],friends[idstart]);
getrank(1,userdata[friends[idstart]],friends[idstart]);
getrank(2,userdata[friends[idstart]],friends[idstart]);
getrank(3,userdata[friends[idstart]],friends[idstart]);
document.write(friends[idstart]+' Rank:STD '+userstdrank[friends[idstart]]+' Taiko '+usertaikorank[friends[idstart]]+' CTB '+userctbrank[friends[idstart]]+' Mania '+usermaniarank[friends[idstart]]+'<br>');
} else {
clearInterval(iid);
$('body').css('background-color','#009ACD');
}
}
iid=setInterval(writerank,300);
}
Topic Starter
ts8zs

lslqtz wrote:

滋此,带上个我的脚本(批量列出好友PP/Rank)求dalao帮忙优化。。写的又臭又长,想听听dalao的思路(主要是当时脑抽没写上异步也没啥思路,然后就经常卡。。然后好像是感觉有一些步骤多余了
1.全没加var,这不是好习惯
2.获取全部好友的osu! ID不需要去翻那个页面 方法如顶楼代码 做个字符串操作就ok
3.getRank(friendId){return friendInfo;}getrank所有模式直接全来一遍 返回一个好友对象如{'123':{Std:'3000',Taiko:'2000',Ctb:'',Mania:'1000'}} 这样然后把这个对象存进friendsInfo数组,不要把好友拆开放。调用形式为for(friendId in friendsInfo){friendsInfo[friendId]=getrank(friendId);document.write(blablabala);}
学会试着面向对象;)
4.ajax操作最好不要用setInterval(),试试用then(),其实用锁比较好,但是好麻烦……
ps:顶楼垃圾代码each想不到好办法延迟执行又特么想写进一句里所以才是这个鬼样子,请不要学习。
lslqtz

ts8zs wrote:

lslqtz wrote:

滋此,带上个我的脚本(批量列出好友PP/Rank)求dalao帮忙优化。。写的又臭又长,想听听dalao的思路(主要是当时脑抽没写上异步也没啥思路,然后就经常卡。。然后好像是感觉有一些步骤多余了
1.全没加var,这不是好习惯
2.获取全部好友的osu! ID不需要去翻那个页面 方法如顶楼代码 做个字符串操作就ok
3.getRank(friendId){return friendInfo;}getrank所有模式直接全来一遍 返回一个好友对象如{'123':{Std:'3000',Taiko:'2000',Ctb:'',Mania:'1000'}} 这样然后把这个对象存进friendsInfo数组,不要把好友拆开放。调用形式为for(friendId in friendsInfo){friendsInfo[friendId]=getrank(friendId);document.write(blablabala);}
学会试着面向对象;)
4.ajax操作最好不要用setInterval(),试试用then(),其实用锁比较好,但是好麻烦……
ps:顶楼垃圾代码each想不到好办法延迟执行又特么想写进一句里所以才是这个鬼样子,请不要学习。
我知道不是好习惯。。主要是为了减少字符,感谢 :)
我发现我脑抽在哪里了,那个页面的URL就有osu! ID...
然后同步的考虑主要是想按好友顺序输出列表,异步获取rank的话感觉还要单独判断是不是有全部模式的了。。
然后关于第三点还是受用的,第四点其实是因为我当时想改成异步还是并发,然而忘了是同步。。(历史遗留,大概

改过后大概是这样的,暂时没有按照顺序来:
if ($('.paddingboth').length > 5) {
domfriends=$('.paddingboth');
onlinefriends=domfriends[domfriends.length-2].children;
offlinefriends=domfriends[domfriends.length-1].children;
friends={};
friends.length=onlinefriends.length+offlinefriends.length;
for (let i=0;i<onlinefriends.length;i++) {
if (onlinefriends[i].innerText !== 'No friends online') {
friends[onlinefriends[i].innerText]={};
friends[onlinefriends[i].innerText].uid=onlinefriends[i].children[0].href.split('/').pop();
} else {
friends.length--;
}
}
for (let i=0;i<offlinefriends.length;i++) {
friends[offlinefriends[i].innerText]={};
friends[offlinefriends[i].innerText].uid=offlinefriends[i].children[0].href.split('/').pop();
}
document.body.innerText='';
document.write('已获取全部好友列表!<br>共 '+friends.length+' 个好友<br>');
for (user in friends) {
friends[user].rank={};
for (let i=0;i<4;i++) {
$.ajax({
url:'https://osu.ppy.sh/pages/include/profile-general.php?u='+friends[user].uid+'&m='+i,
async:false,
success:function(data) {
data=data.match(/Performance<\/a>: (.*?)<\/b>/);
if (data === null) {
data=[];
data[1]='-';
}
switch (i) {
case 0:
document.write(user+' Rank:STD '+data[1]);
break;
case 1:
document.write(',Taiko '+data[1]);
break;
case 2:
document.write(',CTB '+data[1]);
break;
case 3:
document.write(',Mania '+data[1]+'<br>');
break;
}
}
});
}
}
$('body').css('background-color','#009ACD');
}
Kiai Time
有快速举报全部非mu好友的脚本吗
lslqtz

Kiai Time wrote:

有快速举报全部非mu好友的脚本吗
要我现写一个吗
dazzulay
与其用F12复制粘贴运行,不如加个按钮做成userscript放到greasyfork上,安装起来方便些
Topic Starter
ts8zs

dazzulay wrote:

与其用F12复制粘贴运行,不如加个按钮做成userscript放到greasyfork上,安装起来方便些
需求太小
做成收藏栏按钮似乎可以但是没啥必要。
F12可以起到多次确认的作用_(:3」∠)_
lslqtz

dazzulay wrote:

与其用F12复制粘贴运行,不如加个按钮做成userscript放到greasyfork上,安装起来方便些
不用greasyfork,而且平常也没啥人删来删去,或者说也没多少非mu好友/好友
Please sign in to reply.

New reply