Skip to content

Commit 8a1387c

Browse files
committed
新增 [异次元软件、不死鸟] 支持
1 parent 8690d13 commit 8a1387c

1 file changed

Lines changed: 107 additions & 14 deletions

File tree

Autopage.user.js

Lines changed: 107 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
// ==UserScript==
22
// @name 自动无缝翻页
3-
// @version 1.1.5
3+
// @version 1.1.6
44
// @author X.I.U
5-
// @description 自动无缝翻页,目前支持:423Down、Apphot(原烈火汉化)、小众软件、PubMed、三国杀论坛
5+
// @description 自动无缝翻页,目前支持:423Down、Apphot、小众软件、PubMed、异次元软件、不死鸟、三国杀论坛
66
// @match *://www.423down.com/*
77
// @exclude *://www.423down.com/*.html
88
// @match *://apphot.cc/*
@@ -12,6 +12,8 @@
1212
// @match *://www.appinn.com/?s=*
1313
// @match *://pubmed.ncbi.nlm.nih.gov/?term=*
1414
// @match *://club.sanguosha.com/*
15+
// @match *://www.iplaysoft.com/*
16+
// @match *://iao.su/*
1517
// @icon https://i.loli.net/2021/03/07/rdijeYm83pznxWq.png
1618
// @grant GM_xmlhttpRequest
1719
// @grant GM_registerMenuCommand
@@ -30,16 +32,17 @@
3032

3133
// 自动翻页规则
3234
// type:1 = 脚本实现自动无缝翻页,2 = 网站自带了自动无缝翻页功能,只需要点击下一页按钮即可,这时 nextText 为按钮文本,避免一瞬间加载太多次下一页
33-
// HT_insert:1 = 插入元素前面;2 = 插入元素中的最后一个子元素后面
35+
// HT_insert:1 = 插入该元素本身的前面;2 = 插入该元素当中,第一个子元素前面;3 = 插入该元素当中,最后一个子元素后面;4 = 插入该元素本身的后面;
3436
// scrollDelta:数值越大,滚动条触发点越靠上(越早开始翻页)
37+
// beforeFunction = 插入前执行函数;afterFunction = 插入后执行函数
3538
let DBSite = {
3639
_423down_postslist: {
3740
SiteTypeID: 1,
3841
pager: {
3942
type: 1,
4043
nextLink: '//div[@class="paging"]//a[contains(text(),"下一页")][@href]',
4144
pageElement: 'css;div.content-wrap ul.excerpt > li',
42-
HT_insert: ['css;div.content-wrap ul.excerpt', 2],
45+
HT_insert: ['css;div.content-wrap ul.excerpt', 3],
4346
replaceE: 'css;div.paging',
4447
scrollDelta: 1500
4548
}
@@ -90,7 +93,7 @@
9093
type: 1,
9194
nextLink: '//a[@class="nxt"][@href]',
9295
pageElement: 'css;div#postlist > div[id^="post_"]',
93-
HT_insert: ['css;div#postlist', 2],
96+
HT_insert: ['css;div#postlist', 3],
9497
replaceE: 'css;div.pg',
9598
scrollDelta: 800
9699
}
@@ -101,11 +104,44 @@
101104
type: 1,
102105
nextLink: '//a[@class="nxt"][@href]',
103106
pageElement: 'css;div#threadlist > ul',
104-
HT_insert: ['css;div#threadlist', 2],
107+
HT_insert: ['css;div#threadlist', 3],
105108
replaceE: 'css;div.pg',
106109
scrollDelta: 800
107110
}
108-
}
111+
},
112+
iplaysoft_postslist: {
113+
SiteTypeID: 8,
114+
pager: {
115+
type: 1,
116+
nextLink: '//div[@class="pagenavi"]//a[@title="下一页"][@href]',
117+
pageElement: 'css;#postlist > div.entry',
118+
HT_insert: ['css;#postlist > .pagenavi-button', 1],
119+
replaceE: 'css;.pagenavi-button, .pagenavi',
120+
scrollDelta: 1200,
121+
beforeFunction: iplaysoft_postslist_beforeFunction
122+
}
123+
},
124+
iplaysoft_postcomments: {
125+
SiteTypeID: 9,
126+
pager: {
127+
type: 2,
128+
nextLink: '#loadHistoryComments',
129+
nextText: '展开后面',
130+
scrollDelta: 1200
131+
}
132+
},
133+
iao_su_postslist: {
134+
SiteTypeID: 10,
135+
pager: {
136+
type: 1,
137+
nextLink: '//li[@class="btn btn-primary next"]//a[@href]',
138+
pageElement: 'css;#index > article, #archive > article',
139+
HT_insert: ['css;ol.page-navigator', 1],
140+
replaceE: 'css;ol.page-navigator',
141+
scrollDelta: 1000,
142+
beforeFunction: iao_su_postslist_beforeFunction
143+
}
144+
},
109145
};
110146

111147

@@ -132,6 +168,16 @@
132168
curSite = DBSite.sanguosha_search;
133169
}
134170
break;
171+
case "www.iplaysoft.com":
172+
if(location.pathname.indexOf(".html") > -1 || location.pathname.indexOf("/p/") > -1){ // 文章内
173+
curSite = DBSite.iplaysoft_postcomments;
174+
}else{ // 其他页面
175+
curSite = DBSite.iplaysoft_postslist;
176+
}
177+
break;
178+
case "iao.su":
179+
curSite = DBSite.iao_su_postslist;
180+
break;
135181
}
136182
curSite.pageUrl = ""; // 下一页URL
137183
pageLoading(); // 自动无缝翻页
@@ -143,15 +189,18 @@
143189
windowScroll(function (direction, e) {
144190
if (direction === "down") { // 下滑才准备翻页
145191
let scrollTop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;
146-
//console.log(document.documentElement.scrollHeight)
147192
let scrollDelta = curSite.pager.scrollDelta;
148193
if (document.documentElement.scrollHeight <= document.documentElement.clientHeight + scrollTop + scrollDelta) {
149194
if (curSite.pager.type === 1) {
150195
ShowPager.loadMorePage();
151196
}else{
152197
let autopbn = document.querySelector(curSite.pager.nextLink);
153-
if (autopbn && autopbn.innerText == curSite.pager.nextText){ // 如果正在加载,就不再点击
154-
autopbn.click();
198+
if (autopbn){ // 如果正在加载,就不再点击
199+
if (!curSite.pager.nextText){ // 如果没有指定 nextText 就直接点击
200+
autopbn.click();
201+
}else if (autopbn.innerText.indexOf(curSite.pager.nextText) > -1){ // 如果指定了 nextText 就需要判断后再点击(避免已经在加载了,还重复点击)
202+
autopbn.click();
203+
}
155204
}
156205
}
157206
}
@@ -169,6 +218,32 @@
169218
}
170219

171220

221+
// iplaysoft 的插入前函数
222+
function iplaysoft_postslist_beforeFunction(pageElems) {
223+
pageElems.forEach(function (one) {
224+
let now = one.querySelector("img.lazyload")
225+
if (now && !now.getAttribute('src')) {
226+
now.setAttribute("src",now.getAttribute('data-src'))
227+
now.setAttribute("srcset",now.getAttribute('data-src'))
228+
now.setAttribute("class","lazyloaded")
229+
}
230+
});
231+
return pageElems
232+
}
233+
234+
235+
// iao.su 的插入前函数
236+
function iao_su_postslist_beforeFunction(pageElems) {
237+
pageElems.forEach(function (one) {
238+
let now = one.getElementsByClassName("post-card")[0]
239+
if (now) {
240+
now.getElementsByClassName("blog-background")[0].style.backgroundImage = 'url("' + RegExp("(?<=loadBannerDirect\\(').*(?=', '',)").exec(now.getElementsByTagName("script")[0].innerText)[0]; + '")';
241+
}
242+
});
243+
return pageElems
244+
}
245+
246+
172247
// 滚动条事件
173248
function windowScroll(fn1) {
174249
var beforeScrollTop = document.documentElement.scrollTop,
@@ -226,9 +301,9 @@
226301
if (curSite.pager) {
227302
let curPageEle = getElementByXpath(curSite.pager.nextLink);
228303
var url = this.getFullHref(curPageEle);
229-
//console.log(`${url} ${curPageEle} ${curSite.pageUrl}`);
304+
console.log(`${url} ${curPageEle} ${curSite.pageUrl}`);
230305
if(url === '') return;
231-
if(curSite.pageUrl === url) return;// 不会重复加载相同的页面
306+
if(curSite.pageUrl === url) return;// 避免重复加载相同的页面
232307
curSite.pageUrl = url;
233308
// 读取下一页的数据
234309
curSite.pager.startFilter && curSite.pager.startFilter();
@@ -243,8 +318,24 @@
243318
let pageElems = getAllElements(curSite.pager.pageElement, newBody, newBody);
244319
let toElement = getAllElements(curSite.pager.HT_insert[0])[0];
245320
if (pageElems.length >= 0) {
246-
let addTo = "beforeend";
247-
if (curSite.pager.HT_insert[1] == 1) addTo = "beforebegin";
321+
// 如果有插入前函数就执行函数
322+
if (curSite.pager.beforeFunction)pageElems = curSite.pager.beforeFunction(pageElems);
323+
// 插入位置
324+
let addTo;
325+
switch (curSite.pager.HT_insert[1]) {
326+
case 1:
327+
addTo = "beforebegin"
328+
break;
329+
case 2:
330+
addTo = "afterbegin"
331+
break;
332+
case 3:
333+
addTo = "beforeend"
334+
break;
335+
case 4:
336+
addTo = "afterend"
337+
break;
338+
}
248339
// 插入新页面元素
249340
pageElems.forEach(function (one) {
250341
toElement.insertAdjacentElement(addTo, one);
@@ -261,6 +352,8 @@
261352
} catch (e) {
262353
console.log(e);
263354
}
355+
// 如果有插入后函数就执行函数
356+
if (curSite.pager.afterFunction)curSite.pager.afterFunction();
264357
}
265358
} catch (e) {
266359
console.log(e);

0 commit comments

Comments
 (0)