您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Greasy Fork is available in English.
外星人论坛任务辅助,参考了一下别人的代码脚本介绍有详细写出。
当前为
// ==UserScript== // @name 外星人论坛任务辅助 // @namespace sourcewater // @version 0.33.54 // @description 外星人论坛任务辅助,参考了一下别人的代码脚本介绍有详细写出。 // @author sourcewater // @match https://*.alienwarearena.com/* // @exclude https://*.alienwarearena.com/account // @exclude https://*.alienwarearena.com/account/* // @grant none // ==/UserScript== (function() { 'use strict'; function getText(f){ return f.toString().replace(/^[^\/]+\/\*!?\s?/, '').replace(/\*\/[^\/]+$/, ''); } let logFunction=getText(function(){/* const S_S_S_S_LOG_DEBUG_LEVEL=0; const S_S_S_S_LOG_INFO_LEVEL=3; function s_s_s_s_log(level){ var logObj=new Object; var globalLogLevel=level; function log(msg,clevel){ clevel+=1; if(clevel>globalLogLevel){ console.log(msg); } } logObj.debug=function(msg){ log(msg,S_S_S_S_LOG_DEBUG_LEVEL); } logObj.info=function(msg){ log(msg,S_S_S_S_LOG_INFO_LEVEL); } return logObj; } const S_S_S_S_LOG=s_s_s_s_log(S_S_S_S_LOG_INFO_LEVEL); */}); var logScriptEle=document.head.appendChild(document.createElement("script")); logScriptEle.type="text/javascript"; logScriptEle.innerHTML=logFunction; var container=document.getElementById("mCSB_2_container"); if(!container) return; var sections=container.getElementsByTagName("section"); var mainSection; for(let i=0;i<sections.length;++i){ if(sections[i].className.indexOf("um-main")!=-1){ mainSection=sections[i]; } } var cssContent=getText(function(){/* .s-s-s-s-btn:focus { outline:0; box-shadow:0 0 0 3px #666666; } */}); var autoQuestFunction=getText(function(){/* function s_s_s_s_auto_quest_function(i){ const QUEST_LIST=["read_articles","post_replies","change_border","change_badge","share_page","add_video","change_avatar","visit_page","update_about_me","create_article","visit_leaderboard"]; let voteStatus=document.getElementById("s_s_s_s_vote_status"); let questCount=voteStatus.getAttribute("s_s_quest_count"); let questTitle=voteStatus.getAttribute("s_s_quest_title"+i); let questId=voteStatus.getAttribute("s_s_quest_id"+i); let questType=voteStatus.getAttribute("s_s_quest_type"+i); let questEarned=voteStatus.getAttribute("s_s_points_earned"+i); let questItems=document.getElementsByClassName("quest-item"); let questProgress=questItems[i].getElementsByClassName("quest-item-progress"); let progress,arpProgress=null,tcount=null; let questRepeated=0; let questRepeatedTotal=1; progress=questProgress[0]; arpProgress=questProgress[1]; tcount=progress.innerHTML.match(/([\d])+\/([\d]+)/); if(tcount){ questRepeated=tcount[1]*1; questRepeatedTotal=tcount[2]*1; //let arpCount=arpProgress.innerHTML.match(/([\d])+\/([\d]+)/); } function afterCompleted(){ if(arpProgress){ arpProgress.innerHTML=`${questEarned}/${questEarned}`; } } S_S_S_S_LOG.info(questTitle); //showFlashMessage("初始化任务,请等待!","info",false); if(QUEST_LIST[0]==questType){ //Extra Extra! Read all about it! showFlashMessage("初始化任务<阅读新闻>,请等待!","info",false); let url="/ucf/News"; $.ajax({url: url,type: 'get',success: function(html) { S_S_S_S_LOG.debug(questRepeated+" pieces of news already readed!"); S_S_S_S_LOG.debug(questRepeatedTotal+" pieces of news in total!"); showFlashMessage("开始阅读 "+(questRepeatedTotal-questRepeated)+" 篇文章!请耐心等待,每阅读一篇文章会随机等待数秒。","info",false); let frEle=document.createElement("frame"); frEle.innerHTML=html; let newsList=frEle.getElementsByClassName("news__listing-post"); let urls=[]; for(let i=0;i<newsList.length;++i){ urls[i]=newsList[i].href; } let i=questRepeated,j=questRepeated; function getHTML(url){ $.ajax({url: url,type: 'get',success: function(html) { if(tcount){ progress.innerHTML=(i+1)+"/"+questRepeatedTotal; }else{ arpProgress.innerHTML=(i+1)+"/"+questRepeatedTotal; } ++i; ++j; S_S_S_S_LOG.info(i+" pieces of news already readed!"); if(i<questRepeatedTotal&&j<urls.length){ let sleepTime=((Math.random()*10>>0)%6)*200; setTimeout(()=>{ getHTML(urls[j]);},sleepTime); }else{ if(tcount){ progress.innerHTML=i+"/"+questRepeatedTotal; }else{ arpProgress.innerHTML=i+"/"+questRepeatedTotal; } showFlashMessage(questRepeatedTotal+" 篇文章阅读完毕。","info",false); afterCompleted(); } }}).fail(function(xhr,textStatus){ if(xhr.status==404){ let sleepTime=((Math.random()*10>>0)%6)*200; ++j; setTimeout(()=>{ getHTML(urls[j]);},sleepTime); S_S_S_S_LOG.info("News 404 Error!"); }else{ showFlashMessage("请求错误,请稍后重试!","info",false); } }).always(function(){ // }); } getHTML(urls[j]); }}).fail(function(html){ showFlashMessage("请求错误,请稍后重试!","info",false); }); }else if(QUEST_LIST[1]==questType){ //Converse and be Merry! showFlashMessage("初始化任务<发表回复>,请等待!","info",false); let url="/forums/board/113/awa-on-topic"; $.ajax({url: url,type: 'get',success: function(html) { let keyword=questTitle.match(/([a-zA-Z]+ ?)+/g).join().replace(/ /g,"-").toLowerCase(); let questUrls=html.match(/href="(.*)".*data-topic-id/g); let questUrl=""; for(let i=0;i<questUrls.length;++i){ if(questUrls[i].lastIndexOf(keyword)>-1){ questUrl=questUrls[i].match(/"(.*)"/)[1]; break; } } S_S_S_S_LOG.debug(questUrl); if(questUrl!=""){ showFlashMessage(`点击 <a target="_blank" style="color:purple;font-weight:bold;text-decoration:underline;" href="`+questUrl+`">链接</a> 跳转到页面,然后回复 `+(questRepeatedTotal-questRepeated)+` 次即可!`,"info",false); }else{ showFlashMessage(`没有找到帖子,可以在论坛里面回复帖子 `+(questRepeatedTotal-questRepeated)+` 次,请勿灌水!`,"info",false); } }}).fail(function(html){ showFlashMessage("请求错误,请稍后重试!","info",false); }).always(function(){ // }); }else if(QUEST_LIST[2]==questType){ //Border Swap! showFlashMessage("初始化任务<更改边框>,请等待!","info",false); let url="/border/select"; let borderUrl="/account/personalization"; let orgData; $.ajax({url: borderUrl,type: 'get',success: function(html) { let frEle=document.createElement("frame"); frEle.innerHTML=html; let userborder=frEle.getElementsByClassName("account-borders__current")[0]; let userBorderImg=userborder.getElementsByClassName("border"); if(userBorderImg.length!=0){ userBorderImg=userBorderImg[0].src; S_S_S_S_LOG.debug(userBorderImg); let borderListEle=frEle.getElementsByClassName("account-borders__list")[0].getElementsByClassName("account-borders__list-border"); for(let i=0;i<borderListEle.length;++i){ if(borderListEle[i].firstElementChild.src==userBorderImg){ orgData=`{"id":`+borderListEle[i].getAttribute("data-border-id")+`}`; break; } } }else{ orgData=`{"id":1}`; } S_S_S_S_LOG.debug(orgData); $.ajax({url: url,data: orgData,type: 'post',success: function(html) { showFlashMessage("成功更改边框!","info",false); afterCompleted(); S_S_S_S_LOG.debug(html); }}).fail(function(html){ showFlashMessage("请求错误,请稍后重试!","info",false); }).always(function(){ // }); }}).fail(function(html){ //S_S_S_S_LOG.debug("failed"); }).always(function(){ // }); }else if(QUEST_LIST[3]==questType){ //Badge Swap! showFlashMessage("初始化任务<更改徽章>,请等待!","info",false); let url="/badges/update/"+user_id; let badgeUrl="/account/personalization"; let orgData; $.ajax({url: badgeUrl,type: 'get',success: function(html) { let orgData=html.match(/let.*?selectedBadges.*?=.*?(\[.*\]).*;/)[1]; S_S_S_S_LOG.debug(orgData); $.ajax({url: url,data: orgData,type: 'post',success: function(html) { if(html.success){ showFlashMessage("成功更改徽章!","info",false); afterCompleted(); }else{ showFlashMessage("更改徽章时发生错误,请稍后重试!","info",false); } //S_S_S_S_LOG.debug(html); }}).fail(function(html){ showFlashMessage("请求错误,请稍后重试!","info",false); }).always(function(){ // }); }}).fail(function(html){ //S_S_S_S_LOG.debug("failed"); }).always(function(){ // }); }else if(QUEST_LIST[4]==questType){ //Share a page to social media! showFlashMessage("初始化任务<分享帖子>,请等待!","info",false); let url="/ucf/News"; let shareUrl="/arp/quests/share/" $.ajax({url: url,type: 'get',success: function(html) { let frElement=document.createElement("frame"); frElement.innerHTML=html; let shareId=frElement.getElementsByClassName("news__top-widgets")[0].getElementsByClassName("news__top-widgets__box")[0].href.match(/\/ucf\/show\/(\d+)\//)[1]; shareUrl+=shareId; $.ajax({url: shareUrl,type: 'post',success: function(html) { showFlashMessage("分享成功!","info",false); afterCompleted(); }}).fail(function(html){ showFlashMessage("请求错误,请稍后重试!","info",false); }).always(function(){ // }); }}).fail(function(html){ showFlashMessage("请求错误,请稍后重试!","info",false); }).always(function(){ // }); }else if(QUEST_LIST[5]==questType){ // Add a video of ... showFlashMessage("初始化任务<提交视频>,请等待!","info",false); let url="/ucf/Video/new?boardId=0&groupId=0"; showFlashMessage(`请到这个<a target="_blank" style="color:purple;font-weight:bold;text-decoration:underline;" href="/ucf/Video/new?boardId=0&groupId=0">页面</a>添加一个油管视频!只需要复制粘贴油管视频的链接,然后其他文本域会自动填充(自动填充功能需要该电脑能上油管!),然后提交就行。`,"info",false); }else if(QUEST_LIST[6]==questType){ // New avatar showFlashMessage("初始化任务<更换头像>,请等待!","info",false); let url="/account/personalization"; $.ajax({url: url,type: 'get',success: function(html) { let frElement=html.match(/<div class="row account-avatar__history"(.|\n)+?div>/); let avaIdReg=/data-avatar-id="([0-9a-z\-]*?)"/; if(!avaIdReg.test(frElement[0])){ showFlashMessage(`请到这个<a target="_blank" style="color:purple;font-weight:bold;text-decoration:underline;" href="${url}">页面</a>更改一下头像。有了头像的历史记录才能自动完成任务!`,"info",false); }else{ let imgId=frElement[0].match(avaIdReg)[1]; let updateUrl="/account/profile/avatars/switch/"+imgId; function updateAvatar(count,total){ if(count<=total){ $.ajax({url: updateUrl,type: 'get',success: function(html) { updateAvatar(++count,total); if(count==total){ showFlashMessage("更改头像成功!","info",false); afterCompleted(); } }}).fail(function(html){ showFlashMessage("请求错误,请稍后重试!","info",false); }).always(function(){ // }); }else{ S_S_S_S_LOG.debug(`更改头像: ${count} - ${total}`); } } showFlashMessage(`开始任务:更改头像${questRepeatedTotal-questRepeated}次!`,"info",false); updateAvatar(questRepeated,questRepeatedTotal); } }}).fail(function(html){ showFlashMessage("请求错误,请稍后重试!","info",false); }).always(function(){ // }); }else if(QUEST_LIST[7]==questType||QUEST_LIST[10]==questType){ //Quiz: visit the page ... showFlashMessage("初始化任务<解谜>,请等待!","info",false); let url="/forums/board/113/awa-on-topic"; let reg1=/(\(.*?\))|([^\(\)]*)/g; let reg2=/[\da-zA-Z]+/g; let result=questTitle.match(reg1); let keywords; for(let i=0;i<result.length;++i){ if(result[i].lastIndexOf("(")<0){ keywords=result[i].match(reg2); if(keywords.length>0) break; } } S_S_S_S_LOG.debug(keywords); $.ajax({url: url,type: 'get',success: function(html){ let frEle=document.createElement("frame"); frEle.innerHTML=html; let threads=frEle.getElementsByClassName("forums__topic-link"); let questThreadUrl; for(let i=0;i<threads.length;++i){ let title=threads[i].getAttribute("title"); if(title.toLowerCase().lastIndexOf("quest")<0) continue; let thsKeywords=title.match(reg2); let keywordsCount=0; for(let j=0;j<thsKeywords.length;++j){ if(thsKeywords[j].toLowerCase()==keywords[keywordsCount].toLowerCase()){ ++keywordsCount; if(keywordsCount==keywords.length){ if(!questThreadUrl) questThreadUrl=threads[i].href; break; } }else{ keywordsCount=0; } if(questThreadUrl){ break; } } } if(questThreadUrl){ showFlashMessage(`解谜任务可以到这个<a target="_blank" style="color:purple;font-weight:bold;text-decoration:underline;" href="`+questThreadUrl+`">帖子</a>找到答案!`,"info",false); S_S_S_S_LOG.debug(questThreadUrl); }else{ showFlashMessage(`解谜任务可以到这个<a target="_blank" style="color:purple;font-weight:bold;text-decoration:underline;" href="`+url+`">版块</a>等到坛友发帖得到答案!`,"info",false); } }}).fail(function(html){ // }).always(function(html){ // }); }else if(QUEST_LIST[8]==questType){ showFlashMessage("初始化任务<更新简介>,请等待!","info",false); let url="/account"; showFlashMessage(`请到这个<a target="_blank" style="color:purple;font-weight:bold;text-decoration:underline;" href="`+url+`">页面</a>修改自己的简介。`,"info",false); }else if(QUEST_LIST[9]==questType){ showFlashMessage("初始化任务<写一篇文章>,请等待!","info",false); let url="/ucf/News/new?boardId=0&groupId=0"; showFlashMessage(`请到这个<a target="_blank" style="color:purple;font-weight:bold;text-decoration:underline;" href="`+url+`">页面</a>发表一篇文章。`,"info",false); }else{ let url="/forums/board/113/awa-on-topic"; showFlashMessage(`未知任务!可以到这个<a target="_blank" style="color:purple;font-weight:bold;text-decoration:underline;" href="`+url+`">版块</a>等到坛友发帖得到答案!`,"info",false); } } */});//// var autoQuestScriptEle=document.head.appendChild(document.createElement("script")); autoQuestScriptEle.type="text/javascript"; autoQuestScriptEle.innerHTML=autoQuestFunction; var upVoteContent=getText(function(){/* <section class="border-top mt-2" style="display:none;"> <div class="row py-3"> <div class="col-12 col-md-8 pr-0 align-self-center border-right border-light text-center"> <a href="javascript:s_s_s_s_voteUp_function();" class="btn btn-primary s-s-s-s-btn" style="color:#c0c2c4!important;border:1px solid #c0c2c4!important;">Up Vote</a> </div> <div id="s_s_s_s_vote_status" class="col-12 align-self-center col-md-4 pr-4 text-center"></div> </div> </section> */}); var cssEle=document.head.appendChild(document.createElement("style")); cssEle.type="text/css"; cssEle.innerHTML=cssContent; mainSection.outerHTML+=upVoteContent; function getContentId(){ $.getJSON("/esi/featured-tile-data/News", function(data){ let contentId=data.data[0].url.match(/\/ucf\/show\/([\d]+)/)[1]; document.getElementById("s_s_s_s_vote_status").setAttribute("s_s_s_s_contentId",contentId); S_S_S_S_LOG.debug(contentId); }); } getContentId(); var currentContentVotes,maximumContentVotes,questCompleted,pointsEarned; let questId,questTitle,questType,questCount; async function initStatus(){ let CC={"AD":"安道尔","AE":"阿联酋","AF":"阿富汗","AG":"安提瓜和巴布达","AI":"安圭拉","AL":"阿尔巴尼亚","AM":"亚美尼亚","AO":"安哥拉","AQ":"南极洲","AR":"阿根廷","AS":"美属萨摩亚","AT":"奥地利","AU":"澳大利亚","AW":"阿鲁巴","AX":"奥兰群岛","AZ":"阿塞拜疆","BA":"波黑","BB":"巴巴多斯","BD":"孟加拉","BE":"比利时","BF":"布基纳法索","BG":"保加利亚","BH":"巴林","BI":"布隆迪","BJ":"贝宁","BL":"圣巴泰勒米岛","BM":"百慕大","BN":"文莱","BO":"玻利维亚","BQ":"荷兰加勒比区","BR":"巴西","BS":"巴哈马","BT":"不丹","BV":"布韦岛","BW":"博茨瓦纳","BY":"白俄罗斯","BZ":"伯利兹","CA":"加拿大","CC":"科科斯群岛","CF":"中非","CH":"瑞士","CL":"智利","CM":"喀麦隆","CO":"哥伦比亚","CR":"哥斯达黎加","CU":"古巴","CV":"佛得角","CX":"圣诞岛","CY":"塞浦路斯","CZ":"捷克","DE":"德国","DJ":"吉布提","DK":"丹麦","DM":"多米尼克","DO":"多米尼加","DZ":"阿尔及利亚","EC":"厄瓜多尔","EE":"爱沙尼亚","EG":"埃及","EH":"西撒哈拉","ER":"厄立特里亚","ES":"西班牙","FI":"芬兰","FJ":"斐济群岛","FK":"马尔维纳斯群岛( 福克兰)","FM":"密克罗尼西亚联邦","FO":"法罗群岛","FR":"法国","GA":"加蓬","GD":"格林纳达","GE":"格鲁吉亚","GF":"法属圭亚那","GH":"加纳","GI":"直布罗陀","GL":"格陵兰","GN":"几内亚","GP":"瓜德罗普","GQ":"赤道几内亚","GR":"希腊","GS":"南乔治亚岛和南桑威奇群岛","GT":"危地马拉","GU":"关岛","GW":"几内亚比绍","GY":"圭亚那","HK":"中国香港","HM":"赫德岛和麦克唐纳群岛","HN":"洪都拉斯","HR":"克罗地亚","HT":"海地","HU":"匈牙利","ID":"印尼","IE":"爱尔兰","IL":"以色列","IM":"马恩岛","IN":"印度","IO":"英属印度洋领地","IQ":"伊拉克","IR":"伊朗","IS":"冰岛","IT":"意大利","JE":"泽西岛","JM":"牙买加","JO":"约旦","JP":"日本","KH":"柬埔寨","KI":"基里巴斯","KM":"科摩罗","KW":"科威特","KY":"开曼群岛","LB":"黎巴嫩","LI":"列支敦士登","LK":"斯里兰卡","LR":"利比里亚","LS":"莱索托","LT":"立陶宛","LU":"卢森堡","LV":"拉脱维亚","LY":"利比亚","MA":"摩洛哥","MC":"摩纳哥","MD":"摩尔多瓦","ME":"黑山","MF":"法属圣马丁","MG":"马达加斯加","MH":"马绍尔群岛","MK":"马其顿","ML":"马里","MM":"缅甸","MO":"中国澳门","MQ":"马提尼克","MR":"毛里塔尼亚","MS":"蒙塞拉特岛","MT":"马耳他","MV":"马尔代夫","MW":"马拉维","MX":"墨西哥","MY":"马来西亚","NA":"纳米比亚","NE":"尼日尔","NF":"诺福克岛","NG":"尼日利亚","NI":"尼加拉瓜","NL":"荷兰","NO":"挪威","NP":"尼泊尔","NR":"瑙鲁","OM":"阿曼","PA":"巴拿马","PE":"秘鲁","PF":"法属波利尼西亚","PG":"巴布亚新几内亚","PH":"菲律宾","PK":"巴基斯坦","PL":"波兰","PN":"皮特凯恩群岛","PR":"波多黎各","PS":"巴勒斯坦","PW":"帕劳","PY":"巴拉圭","QA":"卡塔尔","RE":"留尼汪","RO":"罗马尼亚","RS":"塞尔维亚","RU":"俄罗斯","RW":"卢旺达","SB":"所罗门群岛","SC":"塞舌尔","SD":"苏丹","SE":"瑞典","SG":"新加坡","SI":"斯洛文尼亚","SJ":"斯瓦尔巴群岛和扬马延岛","SK":"斯洛伐克","SL":"塞拉利昂","SM":"圣马力诺","SN":"塞内加尔","SO":"索马里","SR":"苏里南","SS":"南苏丹","ST":"圣多美和普林西比","SV":"萨尔瓦多","SY":"叙利亚","SZ":"斯威士兰","TC":"特克斯和凯科斯群岛","TD":"乍得","TG":"多哥","TH":"泰国","TK":"托克劳","TL":"东帝汶","TN":"突尼斯","TO":"汤加","TR":"土耳其","TV":"图瓦卢","TZ":"坦桑尼亚","UA":"乌克兰","UG":"乌干达","US":"美国","UY":"乌拉圭","VA":"梵蒂冈","VE":"委内瑞拉","VG":"英属维尔京群岛","VI":"美属维尔京群岛","VN":"越南","WF":"瓦利斯和富图纳","WS":"萨摩亚","YE":"也门","YT":"马约特","ZA":"南非","ZM":"赞比亚","ZW":"津巴布韦","CN":"中国内地","CG":"刚果(布)","CD":"刚果(金)","MZ":"莫桑比克","GG":"根西岛","GM":"冈比亚","MP":"北马里亚纳群岛","ET":"埃塞俄比亚","NC":"新喀里多尼亚","VU":"瓦努阿图","TF":"法属南部领地","NU":"纽埃","UM":"美国本土外小岛屿","CK":"库克群岛","GB":"英国","TT":"特立尼达和多巴哥","VC":"圣文森特和格林纳丁斯","TW":"中国台湾省","NZ":"新西兰","SA":"沙特阿拉伯","LA":"老挝","KP":"朝鲜 北朝鲜","KR":"韩国 南朝鲜","PT":"葡萄牙","KG":"吉尔吉斯斯坦","KZ":"哈萨克斯坦","TJ":"塔吉克斯坦","TM":"土库曼斯坦","UZ":"乌兹别克斯坦","KN":"圣基茨和尼维斯","PM":"圣皮埃尔和密克隆","SH":"圣赫勒拿","LC":"圣卢西亚","MU":"毛里求斯","CI":"科特迪瓦","KE":"肯尼亚","MN":"蒙古国"} let userCountry=user_country; if(userCountry){ let username=document.querySelector("#mCSB_2_container").querySelector(".um-username-link"); if(username){ username.outerHTML+=`<span style="font-size:0.67rem;color:#00baf8;font-family:Microsoft YaHei;"> - ${CC[userCountry]}</span>`; } } const response = await fetch('/api/v1/users/arp/status', {credentials: 'same-origin'}).catch((error) => {throw error}); const status = await response.json(); questCount=status.quests.length; const contentVotes = status.daily_arp[1].status.split(' '); currentContentVotes = parseInt(contentVotes[0], 10); maximumContentVotes = parseInt(contentVotes[2], 10); let voteStatus=document.getElementById("s_s_s_s_vote_status"); if(voteStatus)voteStatus.innerHTML=""+currentContentVotes+"/"+maximumContentVotes; for(let i=0;i<questCount;++i){ questId=status.quests[i].quest_id; questTitle=status.quests[i].title; questType=status.quests[i].type; questCompleted=status.quests[i].completed; pointsEarned=status.quests[i].points_earned; S_S_S_S_LOG.debug(status.quests[i]); S_S_S_S_LOG.debug(questTitle); S_S_S_S_LOG.debug(questType); let questEle=document.getElementsByClassName("quest-title")[i]; S_S_S_S_LOG.debug(questEle.outerHTML); let questProgressEle=document.getElementsByClassName("quest-item")[i].getElementsByClassName("quest-item-progress")[1]; S_S_S_S_LOG.debug("quest completed: "+questCompleted); if(!questCompleted){ if(questEle.tagName.toLowerCase()!="a"){ voteStatus.setAttribute("s_s_quest_id"+i,""+questId); voteStatus.setAttribute("s_s_quest_title"+i,""+questTitle); voteStatus.setAttribute("s_s_quest_type"+i,""+questType); voteStatus.setAttribute("s_s_points_earned"+i,""+pointsEarned); questEle.outerHTML=`<a href="javascript:s_s_s_s_auto_quest_function(${i});" style="text-decoration:underline;">`+questEle.outerHTML+`</a>`; }else{ let questEleStyle=questEle.getAttribute("style"); questEle.setAttribute("style", (questEleStyle ? questEleStyle : "")+"text-decoration:underline !important;"); } questProgressEle.innerHTML+="/"+pointsEarned; } } voteStatus.setAttribute("s_s_quest_count",""+questCount); S_S_S_S_LOG.info("Initialized status!"); } initStatus(); var upVoteFunction=getText(function(){/* function showFlashMessage(message, type, removeActions) { type = type || 'success'; removeActions = removeActions === undefined ? true : removeActions; // Close previous flash messages $.notifyClose(); $.notify({ type: type, message: message }, { delay: 0, template:`<div data-notify="container" class="col-xs-11 col-sm-3 alert alert-{0}" role="alert"> <button type="button" class="close" data-notify="dismiss" data-dismiss="alert" aria-label="Close"> <span aria-hidden="true">×</span> </button> <span data-notify="message">{2}</span> </div>` }); if (removeActions) { $('#giveaway-actions').remove(); } } function s_s_s_s_voteUp_function(){ let baseId=((parseInt($("#s_s_s_s_vote_status").attr("s_s_s_s_contentId"),10)/100000-3)>>0)*100000; S_S_S_S_LOG.debug("baseId: "+baseId); let voteStatus=$("#s_s_s_s_vote_status"); if(voteStatus.text()==""){ showFlashMessage("<p>请等待</p><p>投票系统尚未就绪!","info",false); return; } const MAX_COUNT=80; let voteStatusText=voteStatus.text().match(/^([\d]+)\/([\d]+)$/); let voteCount=parseInt(voteStatusText[1],10); let voteMax=parseInt(voteStatusText[2],10); let voteSuccessCount=0; let date=new Date(); let baseDate=((date.getMonth()+1)*100+date.getDate())*MAX_COUNT; //start! let baseContentId=baseId+baseDate; let notifyTitle=document.createElement("p"); let notifyMessage=document.createElement("p"); let notifyList=document.createElement("ul"); let upVoteButton=document.getElementsByClassName("s-s-s-s-btn")[0]; if(voteCount<voteMax){ notifyTitle.innerHTML="投票中..."; notifyMessage.innerHTML="正在投票!在投票完成前请不要点击当前页面的任何链接或者关闭当前页面。如果遇到投票失败,请手动投票!"; S_S_S_S_LOG.info("Start voting"); showFlashMessage(notifyTitle.outerHTML+notifyMessage.outerHTML,"info",false); upVoteButton.setAttribute("href","javascript:void(0);"); }else{ notifyTitle.innerHTML="错误"; notifyMessage.innerHTML="投票次数已达上限!"; showFlashMessage(notifyTitle.outerHTML+notifyMessage.outerHTML,"info",false); return; } function applyContentVoting() { if(voteSuccessCount<voteMax&&voteCount<MAX_COUNT){ let contentId=baseContentId+voteCount; S_S_S_S_LOG.debug(contentId); let votingURL = `/ucf/vote/up/${contentId}`; let contentList=notifyList.innerHTML; $.ajax({url: votingURL,type: 'post',success: function(data) { S_S_S_S_LOG.debug(data.message); if(data.success){ ++voteSuccessCount; voteStatus.text(voteSuccessCount+"/"+voteMax); contentList+=`<li><a target="_blank" href="/ucf/show/${contentId}">${contentId}</a>: 投票成功!</li>`; }else{ contentList+=`<li style="color:red"><a target="_blank" href="/ucf/show/${contentId}">${contentId}</a>: 失败,已经投过票了!</li>`; } notifyList.innerHTML=contentList; }}) .fail(function(data) { S_S_S_S_LOG.debug("up vote failed!"); S_S_S_S_LOG.debug(data); contentList+=`<li style="color:red"><a target="_blank" href="/ucf/show/${contentId}">${contentId}</a>: 投票失败,可能帖子被删除!</li>`; notifyList.innerHTML=contentList; }) .always(function() { ++voteCount; if(voteSuccessCount<voteMax){ let sleepTime=((Math.random()*10>>0)%8+5)*1000; S_S_S_S_LOG.debug("sleep: "+sleepTime); setTimeout(()=>{applyContentVoting()},sleepTime); }else{ S_S_S_S_LOG.info("Up vote done!"); notifyTitle.innerHTML="投票结束!"; notifyMessage.innerHTML="如果遇到投票失败,请手动投票!"; showFlashMessage(notifyTitle.outerHTML+notifyMessage.outerHTML+notifyList.outerHTML,"info",false); upVoteButton.setAttribute("href","javascript:s_s_s_s_voteUp_function();"); } }); } } applyContentVoting(); } */}); var scriptEle=document.head.appendChild(document.createElement("script")); scriptEle.type="text/javascript"; scriptEle.innerHTML=upVoteFunction; })();