您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
方便使用一亩三分地
// ==UserScript== // @name 1p3a_script // @namespace https://github.com/eagleoflqj/p1a3_script // @version 0.7.0.74 // @description 方便使用一亩三分地 // @author Liumeo // @match https://www.1point3acres.com/bbs/* // @grant GM_setValue // @grant GM_getValue // @grant GM_deleteValue // @require https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js // @require https://cdn.bootcss.com/jquery-cookie/1.4.1/jquery.cookie.js // @require https://greasyfork.org/scripts/387976-1p3a-qa/code/1p3a_qa.js?version=743574 // ==/UserScript== (function () { 'use strict'; const jq = jQuery.noConflict(); const waitUntilElementLoaded = function (element, retryTimes = 20) { // 异步等待元素出现并返回 return new Promise((resolve, reject) => { const check = (ttl) => { const e = jq(element); if (!e.length && ttl) { // 未加载且未超时 setTimeout(check, 1000, ttl - 1); } else { resolve(e); // 已加载或超时,返回jQuery对象 } }; check(retryTimes); }); }; (() => { const search_ids = ['planyr', 'planterm', 'planmajor', 'plandegree', 'planfin', 'result', 'country']; // 过滤下拉菜单id const replaceCookie = (c) => jq.cookie(c) && (GM_setValue(c, jq.cookie(c)) || 1) && jq.removeCookie(c); // 替换cookie为本地存储 replaceCookie('searchoption'); search_ids.forEach(replaceCookie); })(); // 针对不同页面的操作 const url = window.location.href; if (url === 'https://www.1point3acres.com/bbs/' || url.search('forum.php') > 0) { // 可签到、答题的页面 // 自动签到 const sign = jq('.wp a:contains("签到领奖")')[0]; sign && sign.onclick && (sign.onclick() || 1) && (async () => { // 点击签到领奖 const qiandao = await waitUntilElementLoaded('#qiandao'); if (!qiandao.length) { return; } const faces = qiandao.find('.qdsmilea>li'); // 所有表情 const selected_face = faces[Math.floor(Math.random() * faces.length)]; // 随机选择表情 selected_face.onclick(); const todaysay = qiandao.find('#todaysay'); // 文字框 todaysay.val('今天把论坛帖子介绍给好基友了~'); // 快速签到的第一句 const button = qiandao.find('button')[0]; button.onclick(); })(); // 保证签到对话框加载 // 签到后自动答题 const dayquestion = jq('#um img[src*=ahome_dayquestion]').parent()[0]; !sign && dayquestion && dayquestion.onclick && (dayquestion.onclick() || 1) && (async () => { const fwin_pop = await waitUntilElementLoaded('#fwin_pop form'); const question = fwin_pop.find('font:contains(【题目】)').text().slice(5); const prompt = '尚未收录此题答案。如果您知道答案,请将\n"\n' + question + '\n{您的答案}\n"\n以issue形式提交至https://github.com/eagleoflqj/p1a3_script/issues'; const answer = QA[question]; if (!answer) { // 题库不含此题 console.log(prompt); return; } // 自动回答 const option_list = []; const answer_list = typeof answer === 'string' ? [answer] : answer; // 答案和选项取交集 fwin_pop.find('.qs_option').toArray() .forEach(option => answer_list .filter(answer => option.textContent.trim() === answer) .forEach(() => option_list.push(option))); if (!option_list.length) { console.log(prompt); return; } if (option_list.length > 1) { alert('[Warning] 多个选项与题库答案匹配'); return; } option_list[0].onclick(); jq('#seccodeverify_SA00')[0].focus(); const button = fwin_pop.find('button')[0]; // button.click(); // 提交答案 console.log(question + '\n答案为:' + answer); })(); // 保证答题对话框加载 } if (url.search('thread') > 0) { // 详情页 // 自动查看学校、三维 const elements = jq('.typeoption a:contains(点击查看)'); elements.toArray().forEach(element => element.onclick()); } else if (url.search('forum-82-1') > 0 || url.search('forum.php\\?mod=forumdisplay&fid=82') > 0) { // 结果汇报列表页 // 按上次的筛选条件过滤录取结果 const search_ids = ['planyr', 'planterm', 'planmajor', 'plandegree', 'planfin', 'result', 'country']; // 过滤下拉菜单id const search_button = jq('#searhsort > div.ptm.cl > button'); // 搜索按钮 if (GM_getValue('searchoption')) { // 上次过滤了 search_ids.forEach(id => jq('#' + id).val(GM_getValue(id)));// 自动填充下拉菜单 if (url.search('filter') < 0) { // 当前页面没有过滤 search_button.click(); // 自动过滤 return; } } search_button.click(() => { // 如果不全是默认值,记下当前选项 search_ids.some(id => jq('#' + id).val() !== '0') && GM_setValue('searchoption', 1); GM_getValue('searchoption') && search_ids.forEach(id => GM_setValue(id, jq('#' + id).val())); }); // 添加重置按钮 const reset_button = jq('<button type="button" class="pn pnc"><em>重置</em></button>'); reset_button.click(() => { // 重置、清存储 GM_deleteValue('searchoption'); search_ids.forEach(id => { jq('#' + id).val('0'); GM_deleteValue(id); }); }); search_button.after(reset_button); // 折叠占空间的提示 const img = jq('#forum_rules_82_img')[0]; img && img.src.search('collapsed_no') > 0 && img.onclick(); } })();