自动签到、自动滚动翻页
当前为
// ==UserScript==
// @name NodeSeek增强
// @namespace http://www.nodeseek.com/
// @version 0.1
// @description 自动签到、自动滚动翻页
// @author dabao
// @match *://www.nodeseek.com/*
// @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAACz0lEQVR4Ae3B32tVdQAA8M85u7aVHObmzJVD0+ssiphstLEM62CBlCBEIAYhUoGGD/kiRUo+9CIEElFZgZJFSApBVhCUX2WFrVQKf5Qy26SgdK4pN7eZu+cbtyfJ/gLx83HD9SAhlEyXupiPhUSTeonRfNw1ws2aRJeN5jHcolFhJJ9M8Zj99piDTnv12SjzfzIb9dmrC7Pttt8ykjDVLsu8ZZ1GH1oqeDofJLtJh4fMEw3Y72jlCuEO2+W+sNJFr3vOZ1YIi8NIGA29hDWhGgZDJ2Rt2ZvZSBazmMUsZsPZ1qwVQmcYDNWwhtAbRsNIWJx6WLPDfgxNVkm9nR8hm+XduLba7F9RtcXztmUzyY/YJrUqNPvBYc0eSS3CwXxMl4WG7CarsyEuvU2HOkRNujSw3PosxR6DFurKxx3E/akFohPo0aDfEO61os5LdrtLVWG1TzxokifdiSH9GnTjuGhBqsWE39GOo3kVi8wsmeVW00SJ200zA9r0kFcdQzv+MKElVW/S+L5EE86pmUth3BV/SzCOCUjMVXMWzfsSYybVl1SlSlESkagpuOI1nzshFX1gyAF1UKhJEKOkJFVNXVBv+pJoBK1qBkh86z1/SaR+9o5zEgoDaloxsiSart6F1Bkl83ESHWEKvvEbqZJETaokgSH9hCk6cBLtSs6kDqEb/cZ0K+MnO0X/VdhRGUBZjzH9uA+HUl+a0BvmO+J7bVZSKWz1kehqhfe9oWalNoccDmW9JnyV+toxsy3PK3aY9Gx4gMp567ziV4WawpCXra+MEhZ5xqTtecVycxzXlxA22OK4ZYbt9LjvrM5PkNUp6zVPdNpBv1QKwt126Paxp8zwqXu8kG8pYZdHlT2Rvxo2aVG2ObyYn65UnXLKVULZZrP02ZRfCms1OmAXCSHRYqrLzuZFaDFV6s/8omuERs0Kl/LzITVTvTHDeXTD9eAftAsSYhXYOWUAAAAASUVORK5CYII=
// @grant GM_xmlhttpRequest
// @grant GM_getValue
// @grant GM_setValue
// @grant GM_notification
// @grant unsafeWindow
// @run-at document-end
// @license GPL-3.0 License
// @supportURL https://www.nodeseek.com/notification#/message?mode=talk&to=8110
// @homepageURL https://www.nodeseek.com/post-36263-1
// ==/UserScript==
(function () {
'use strict';
// 检查是否登陆
var loginStatus = false;
if (document.querySelector('#nsk-right-panel-container>.user-card')) {
loginStatus = true;
}
// 自动签到
function autoSignIn() {
if (!loginStatus) return
let timeNow = new Date().getFullYear() + "/" + (new Date().getMonth() + 1) + "/" + new Date().getDate(),
timeOld = GM_getValue('menu_signInTime');
if (!timeOld || timeOld != timeNow) { // 是新的一天
GM_setValue('menu_signInTime', timeNow); // 写入签到时间以供后续比较
GM_xmlhttpRequest({
url: '/api/attendance?random=true',
method: 'POST',
timeout: 4000
});
console.log(`[NodeSeek] 签到完成`);
GM_notification({ text: '签到完成!积分 +22 ~', timeout: 3500 });
}
}
// 自动翻页
function pageLoading() {
if (!/^\/(categories\/|page|$)/.test(location.pathname)) return;
let is_requesting = false;
windowScroll(function (direction, e) {
if (direction === 'down') { // 下滑才准备翻页
let scrollTop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;
if (document.body.scrollHeight <= document.body.clientHeight + scrollTop + 200 && !is_requesting) {
let nextPage = document.querySelector('.nsk-pager .pager-cur').nextSibling;
if (nextPage.nodeName !== 'A') return;
let nextUrl = nextPage.attributes.href.value;
is_requesting = true;
fetch(nextUrl)
.then(res => res.text())
.then(data => {
let doc = new DOMParser().parseFromString(data, "text/html");
document.querySelector('ul.post-list').append(...doc.querySelector('ul.post-list').childNodes);
document.querySelector('div.nsk-pager.pager-top').innerHTML = doc.querySelector('div.nsk-pager.pager-top').innerHTML;
document.querySelector('div.nsk-pager.pager-bottom').innerHTML = doc.querySelector('div.nsk-pager.pager-bottom').innerHTML;
history.pushState(null, null, nextUrl);
is_requesting = false;
}).catch(reason => {
is_requesting = false;
});
}
}
});
}
// 滚动条事件
function windowScroll(fn1) {
var beforeScrollTop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop,
fn = fn1 || function () { };
setTimeout(function () { // 延时执行,避免刚载入到页面就触发翻页事件
window.addEventListener('scroll', function (e) {
var afterScrollTop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop,
delta = afterScrollTop - beforeScrollTop;
if (delta == 0) return false;
fn(delta > 0 ? 'down' : 'up', e);
beforeScrollTop = afterScrollTop;
}, false);
}, 1000)
}
autoSignIn();
pageLoading();
})();