const script = document.createElement('script')
script.setAttribute('src', 'https://lib.sinaapp.com/js/jquery/2.0.3/jquery-2.0.3.min.js')
script.onload = function() {
var latestTime = Date.now()
async function scrollToBottom() {
$('html, body').scrollTop($(document).height())
await sleep(800) // 等下一页加载完,(微博@当时我就没憋住)
// 往下拉,拉到底部
if ($('[node-type="lazyload"]').length && !$('a.page.prev').length) {
scrollToBottom()
return
}
console.log('加载完毕。')
$('html, body').scrollTop(0)
console.log('开始删除。')
deleteWeibo()
}
async function deleteWeibo() {
if ($('a[action-type="feed_list_delete"]').length > 1) {
const $date = $('.WB_detail:first a[date]')
const time = +$date.attr('date')
// 设定一个时间,当删除程序发现要删除的微博发布时间大于这个时间时,删除程序直接停止
const date = +new Date('2016-01-01 00:00:00')
if (time > date) {
console.log('到达了设定的时间,停止删除。')
clearInterval(timer)
return
}
$('a[action-type="feed_list_delete"]')[0].click()
await sleep(500) // 等删除确认窗口打开
$('a[action-type="ok"]').each(function() { this.click() })
await sleep(500) // 等待删除请求完毕
latestTime = Date.now() // 记录最后一次删除操作时间
deleteWeibo()
}
else {
// 处理最后一条
var mid = $('div[mid]').last().attr('mid')
// 进入下一页之后,上一页的最后一条没有被删掉,用 ajax 将它删除
const deleteLastOne = () => $.post('https://weibo.com/aj/mblog/del', { mid: mid }).fail(async () => {
console.log('删除最后一条失败,正在尝试重新删除。')
await sleep(1000)
deleteLastOne()
})
deleteLastOne()
console.log('进入上一页。')
$('a.page.prev')[0].click()
await sleep(1000) // 确保下一页已经加载
scrollToBottom()
}
}
scrollToBottom()
// // 心跳检测,是否还在正常跑,如果没有跑了,就重启服务
const heartbeat = 30000
var timer = setInterval(() => {
const currentTime = Date.now()
if (currentTime - latestTime < heartbeat * 1.5) {
return
}
console.log('检测到任务失败,正在尝试重新启动。')
$('[action-type="feed_list_page_morelist"] ul li:first a')[0].click() // 通过点击全部按钮来恢复加载微博
$('html, body').scrollTop(0)
}, heartbeat)
}
document.head.appendChild(script)
var wb_url = "https://www.weibo.com/";
// 这个本人做了处理 我只做有筛选条件的 才会调用删除方法 如果不需要删除搜索结果的微博把下面这行改成即可(只要复制 /** **/ 中间的代码就可以 )
/**
if(window.location.host == "weibo.com" ){
wb_url = "https://weibo.com/";
}else{
wb_url = "";
}
**/
if(window.location.host == "weibo.com" && window.location.search.indexOf('key_word') != -1){
wb_url = "https://weibo.com/";
}else{
wb_url = "";
}
//删除本条微博
function del_weibo(id){
console.log(id);
var postdata = "mid="+id;
delwb_url = wb_url + "aj/mblog/del?ajwvr=6";
fetch(delwb_url,
{
"credentials":"include",
"headers":{
"content-type":"application/x-www-form-urlencoded",
},
"body":postdata,
"method":"POST","mode":"cors"
}).then(response => console.log(response) )
.then(data => console.log(data))
.catch(error => console.log(error));
}
//删除本页全部微博
function del_page(){
var wb_list = document.querySelectorAll(".S_txt2");
if(wb_list.length == 0){
console.log("暂无可删除微博");
}
var i = 1;
for(var t of wb_list){
if(t.name){
//限制请求速度
setTimeout(function(t) {
del_weibo(t.name);
var pppp_node = t.parentNode.parentNode.parentNode.parentNode;
pppp_node.parentNode.removeChild(pppp_node);
}, 200*i,t);
i++;
}
}
if(i == 1){
console.log("暂无可删除微博:");
// 正在加载中,请稍候...(滚动鼠标) #
// 第几页,下一页(点击翻页) #
//查看更早微博 #
}
}
// 刷新微博页面
function auto_update_page(){
var pages = document.querySelectorAll(".W_pages > a");
if(pages.length > 0){
var next_page = pages[pages.length-1];
console.log("下一页");//or上一页...
next_page.click();
}else{
//
var more_arr = document.getElementsByClassName("WB_cardmore");
if((more_arr.length != 0) && more_arr[more_arr.length-1].innerText.trim().startsWith("查看更早微博")){
more_arr[more_arr.length-1].click();
}
var wait_load = document.getElementsByClassName("W_loading");
if(wait_load.length != 0){
console.log(new Date().toLocaleTimeString() + ":" + wait_load[0].parentNode.innerText.trim());
window.scrollTo(0, 100000);//滚动到最低部(触发自动加载微博)
setTimeout(function(){
window.scrollTo(0, 100);
},800);
}
}
}
function del_all_weibo(){
if(window.del === false){
return;
}
del_page();
auto_update_page();//尝试自动刷新
}
// 开始运行程序
if(document.URL.startsWith(wb_url)){
var may_url = wb_url + $CONFIG.uid + "?is_all=1";
console.log("如果微博未被删除,请点击下面链接重试:");
console.log(may_url)
// 定时执行删除
window.setInterval(del_all_weibo,4000);
}else{
alert("请在 " + wb_url + " 站点下的微博列表中重新执行删除脚本。");
if(navigator.userAgent.includes("Mobile")){
alert("Chrome 用户请回到控制台,按下 Ctrl+Shift+M 切换回电脑版完整视图");
}
window.location.replace(wb_url);
}
网友评论