From 3faaff0c0eba5d4f6cf0a4d8056cdc3c5c394044 Mon Sep 17 00:00:00 2001 From: xiu2 <54703944+XIU2@users.noreply.github.com> Date: Sun, 3 Oct 2021 09:07:30 +0800 Subject: [PATCH 0001/1763] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20[Qwant]=20?= =?UTF-8?q?=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Autopage.user.js | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/Autopage.user.js b/Autopage.user.js index 7f9d091d8..ab675ea2c 100644 --- a/Autopage.user.js +++ b/Autopage.user.js @@ -1,6 +1,6 @@ // ==UserScript== // @name 自动无缝翻页 -// @version 2.6.5 +// @version 2.6.6 // @author X.I.U // @description 无缝拼接下一页内容(瀑布流),目前支持:[所有使用「Discuz!、Flarum、DUX(WordPress)」的网站]、百度、谷歌、必应、搜狗、头条搜索、360 搜索、微信搜索、贴吧、豆瓣、微博、NGA、V2EX、龙的天空、起点小说、煎蛋网、IT之家、千图网、Pixabay、3DM、游侠网、游民星空、NexusMods、Steam 创意工坊、CS.RIN.RU、FitGirl、片库、茶杯狐、NO视频、低端影视、奈菲影视、91美剧网、真不卡影院、音范丝、BT之家、萌番组、动漫花园、樱花动漫、爱恋动漫、AGE 动漫、Nyaa、SrkBT、RARBG、SubHD、423Down、不死鸟、扩展迷、极简插件、小众软件、动漫狂、漫画猫、漫画DB、HiComic、动漫之家、古风漫画网、PubMed、wikiHow、GreasyFork、Github、StackOverflow(以上仅一部分,更多的写不下了... // @match *://*/* @@ -352,6 +352,17 @@ scrollDelta: 1500 } }, // Yandex 搜索 + qwant: { + SiteTypeID: 0, + host: 'www.qwant.com', + functionStart: function() {locationchange = true; if (location.search.indexOf('q=') > -1 && location.search.indexOf('t=web') > -1) {curSite = DBSite.qwant;}}, + pager: { + type: 2, + nextLink: 'button[data-testid="buttonShowMore"]', + intervals: 500, + scrollDelta: 1500 + } + }, // Qwant 搜索 magi: { SiteTypeID: 0, host: 'magi.com', @@ -4473,10 +4484,13 @@ // 避免重复点击翻页按钮 if (curSite.pager.nextText) { // 按钮文本,当按钮文本 = 该文本时,才会点击按钮加载下一页 if (autopbn.innerText === curSite.pager.nextText) {autopbn.click(); pageNum.now = pageNum._now + 1;} // 当前页码 + 1 + } else if (curSite.pager.nextTextOf) { // 按钮文本的一部分,当按钮文本包含该文本时,才会点击按钮加载下一页 if (autopbn.innerText.indexOf(curSite.pager.nextTextOf) > -1) {autopbn.click(); pageNum.now = pageNum._now + 1;} // 当前页码 + 1 + } else if (curSite.pager.nextHTML) { // 按钮内元素,当按钮内元素 = 该元素内容时,才会点击按钮加载下一页 if (autopbn.innerHTML === curSite.pager.nextHTML) {autopbn.click(); pageNum.now = pageNum._now + 1;} // 当前页码 + 1 + } else { // 如果没有指定按钮文字就直接点击 autopbn.click(); pageNum.now = pageNum._now + 1; // 当前页码 + 1 // 对于没有按钮文字变化的按钮,可以指定间隔时间(默认 300ms) From b82a508a59b36b7536beaf853ed05cde086d1111 Mon Sep 17 00:00:00 2001 From: xiu2 <54703944+XIU2@users.noreply.github.com> Date: Sun, 3 Oct 2021 14:20:05 +0800 Subject: [PATCH 0002/1763] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20[=E8=8A=A5?= =?UTF-8?q?=E5=AD=90=E7=A9=BA=E9=97=B4=E8=AE=BA=E5=9D=9B=E3=80=81Ecosia?= =?UTF-8?q?=E3=80=81Yahoo=E3=80=81Startpage]=20=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Autopage.user.js | 298 ++++++++++++++++++++++++++++++----------------- 1 file changed, 192 insertions(+), 106 deletions(-) diff --git a/Autopage.user.js b/Autopage.user.js index ab675ea2c..939e59970 100644 --- a/Autopage.user.js +++ b/Autopage.user.js @@ -1,6 +1,6 @@ // ==UserScript== // @name 自动无缝翻页 -// @version 2.6.6 +// @version 2.6.7 // @author X.I.U // @description 无缝拼接下一页内容(瀑布流),目前支持:[所有使用「Discuz!、Flarum、DUX(WordPress)」的网站]、百度、谷歌、必应、搜狗、头条搜索、360 搜索、微信搜索、贴吧、豆瓣、微博、NGA、V2EX、龙的天空、起点小说、煎蛋网、IT之家、千图网、Pixabay、3DM、游侠网、游民星空、NexusMods、Steam 创意工坊、CS.RIN.RU、FitGirl、片库、茶杯狐、NO视频、低端影视、奈菲影视、91美剧网、真不卡影院、音范丝、BT之家、萌番组、动漫花园、樱花动漫、爱恋动漫、AGE 动漫、Nyaa、SrkBT、RARBG、SubHD、423Down、不死鸟、扩展迷、极简插件、小众软件、动漫狂、漫画猫、漫画DB、HiComic、动漫之家、古风漫画网、PubMed、wikiHow、GreasyFork、Github、StackOverflow(以上仅一部分,更多的写不下了... // @match *://*/* @@ -339,6 +339,19 @@ } }, }, // DuckDuckGo 搜索 + startpage: { + SiteTypeID: 0, + host: 'www.startpage.com', + functionStart: function() {if (location.pathname.indexOf('/search') > -1) {curSite = DBSite.startpage;}}, + pager: { + type: 1, + nextLink: startpage_functionNext, + pageElement: 'css;section.w-gl--desktop > div', + insertPosition: ['css;section.w-gl--desktop', 3], + replaceE: 'css;.pagination', + scrollDelta: 1500 + } + }, // Startpage 搜索 yandex: { SiteTypeID: 0, host: 'yandex.com', @@ -352,6 +365,32 @@ scrollDelta: 1500 } }, // Yandex 搜索 + yahoo: { + SiteTypeID: 0, + host: 'search.yahoo.com', + functionStart: function() {if (location.pathname.indexOf('/search') > -1) {curSite = DBSite.yahoo;}}, + pager: { + type: 1, + nextLink: 'css;.pagination a.next[href]', + pageElement: 'css;#web ol > li', + insertPosition: ['css;#web ol', 3], + replaceE: 'css;.pagination', + scrollDelta: 1500 + } + }, // Yahoo 搜索 + yahoo_jp: { + SiteTypeID: 0, + host: 'search.yahoo.co.jp', + functionStart: function() {if (location.pathname.indexOf('/search') > -1) {curSite = DBSite.yahoo_jp;}}, + pager: { + type: 1, + nextLink: 'css;.Pagenation__next > a[href]', + pageElement: 'css;.Contents__innerGroupBody > div', + insertPosition: ['css;.Contents__innerGroupBody', 3], + replaceE: 'css;.Pagenation', + scrollDelta: 1500 + } + }, // Yahoo 搜索 (JP) qwant: { SiteTypeID: 0, host: 'www.qwant.com', @@ -363,6 +402,19 @@ scrollDelta: 1500 } }, // Qwant 搜索 + ecosia: { + SiteTypeID: 0, + host: 'www.ecosia.org', + functionStart: function() {if (location.pathname === '/search') {curSite = DBSite.ecosia;}}, + pager: { + type: 1, + nextLink: 'css;nav.pagination a[href][aria-label="Next page"]', + pageElement: 'css;section.mainline > div:not(.related-queries)', + insertPosition: ['css;nav.pagination', 1], + replaceE: 'css;nav.pagination', + scrollDelta: 1500 + } + }, // Ecosia 搜索 magi: { SiteTypeID: 0, host: 'magi.com', @@ -823,6 +875,22 @@ scrollDelta: 1200 } }, // 篱笆网论坛 - 搜索页 + lieyou: { + SiteTypeID: 0, + host: 'bbs.lieyou888.com', + functionStart: function() {if (location.pathname.indexOf('/forum') > -1) {curSite = DBSite.lieyou888;}}, + pager: { + type: 1, + nextLink: '//div[contains(@class, "_pageNav")]/a[@href][contains(text(), "下一页")]', + pageElement: 'css;ul.gb-bbs-list > li', + insertPosition: ['css;ul.gb-bbs-list', 3], + replaceE: 'css;._pageNav', + scrollDelta: 1000 + }, + function: { + before: src_original_2_functionBefore + } + }, // 芥子空间论坛 xcar_forumdisplay: { SiteTypeID: 0, host: 'www.xcar.com.cn', @@ -3533,20 +3601,27 @@ // 通用型插入前函数(加载图片 data-original => src) function src_original_functionBefore(pageElems) { pageElems.forEach(function (one) { - let now = one.querySelector('img[data-original]') - if (now) { + one.querySelectorAll('img[data-original]').forEach(function (now) { now.src = now.dataset.original; - } + }); + }); + return pageElems + } + // 通用型插入前函数(加载图片 original => src) + function src_original_2_functionBefore(pageElems) { + pageElems.forEach(function (one) { + one.querySelectorAll('img[original]').forEach(function (now) { + now.src = now.getAttribute('original'); + }); }); return pageElems } // 通用型插入前函数(加载图片 data-src => src) function src_src_functionBefore(pageElems) { pageElems.forEach(function (one) { - let now = one.querySelector('img[data-src]') - if (now) { + let now = one.querySelectorAll('img[data-src]').forEach(function (now) { now.src = now.dataset.src; - } + }); }); return pageElems } @@ -3586,6 +3661,19 @@ } + // [Startpage] 获取下一页地址 + function startpage_functionNext() { + let form = getElementByXpath('//div[contains(@class, "pagination ")]/form[./button[@class="pagination__next-prev-button next"]]'); + if (form) { + let action = form.action, value = ''; // 获取提交表单 URL + form.querySelectorAll('input[name]').forEach(function(input) {value += input.name + '=' + input.value + '&';}) // 生成表单参数 + value = encodeURI(value.replace(/&$/,'')); // 清理最后一个 & 符号,并替换页码 + if (action && value) return (action + '?' + value) + } + return ''; + } + + // [百度贴吧](发帖按钮点击事件) function baidu_tieba_1() { let button = document.querySelector('.tbui_aside_fbar_button.tbui_fbar_post > a'); @@ -3865,14 +3953,9 @@ if (page) {page = /(?<=\()\d+(?=\))/.exec(page.onclick)[0];} else {return '';} // 获取下一页页码 if (page) { let action = document.getElementById('search-form').action, value = ''; // 获取提交表单 URL - document.querySelectorAll('#search-form input[name]').forEach(function(input) { // 生成表单参数 - value += input.name + '=' + input.value + '&' - }) + document.querySelectorAll('#search-form input[name]').forEach(function(input) {value += input.name + '=' + input.value + '&';}) // 生成表单参数 value = encodeURI(value.replace(/&$/,'').replace(/p=\d+/,'p=' + page)); // 清理最后一个 & 符号,并替换页码 - if (action && value) { - //console.log(action + '?' + value) - return (action + '?' + value) - } + if (action && value) return (action + '?' + value) } return ''; } @@ -4842,98 +4925,7 @@ timeout: 5000, onload: function (response) { try { - //console.log('最终 URL:' + response.finalUrl, '返回内容:' + response.responseText) - var newBody = ShowPager.createDocumentByString(response.responseText); - let pageElems = getAllElements(curSite.pager.pageElement, newBody, newBody), - toElement = getAllElements(curSite.pager.insertPosition[0])[0]; - //console.log(curSite.pager.pageElement, pageElems, curSite.pager.insertPosition, toElement) - - if (pageElems.length >= 0) { - // 如果有插入前函数就执行函数 - if (curSite.function && curSite.function.before) { - if (curSite.function.parameter) { // 如果指定了参数 - pageElems = curSite.function.before(curSite.function.parameter); - } else { - pageElems = curSite.function.before(pageElems); - } - } - - // 插入位置 - let addTo1 = addTo(curSite.pager.insertPosition[1]); - - // 插入新页面元素 - if (curSite.pager.insertPosition[1] === 4) { // 插入到目标本身后面,需要合并后一起插入 - let afterend = ''; - pageElems.forEach(function (one) {afterend += one.outerHTML;}); - toElement.insertAdjacentHTML(addTo1, afterend); - } else if (curSite.pager.insertPosition[1] === 5) { // 插入到目标内部末尾(针对文本) - let afterend = ''; - pageElems.forEach(function (one) {afterend += one.innerHTML;}); - toElement.insertAdjacentHTML(addTo1, afterend); - } else { - pageElems.forEach(function (one) {toElement.insertAdjacentElement(addTo1, one);}); - } - - // 当前页码 + 1 - pageNum.now = pageNum._now + 1 - - // 插入