|
4 | 4 | // @name:zh-TW 怠惰小説下載器 |
5 | 5 | // @name:ja 怠惰者小説ダウンロードツール |
6 | 6 | // @namespace hoothin |
7 | | -// @version 2.7.3.2 |
| 7 | +// @version 2.7.3.3 |
8 | 8 | // @description Fetch and download main content on current page, provide special support for chinese novel |
9 | 9 | // @description:zh-CN 通用网站内容抓取工具,可批量抓取任意站点的小说、论坛内容等并保存为TXT文档 |
10 | 10 | // @description:zh-TW 通用網站內容抓取工具,可批量抓取任意站點的小說、論壇內容等並保存為TXT文檔 |
|
133 | 133 | tempSavebtn.onclick = function(){ |
134 | 134 | var blob = new Blob([i18n.info+"\r\n\r\n"+document.title+"\r\n\r\n"+rCats.join("\r\n\r\n")], {type: "text/plain;charset=utf-8"}); |
135 | 135 | _GM_download(blob, document.title+".txt"); |
| 136 | + console.log(curRequests); |
136 | 137 | } |
137 | 138 | abortbtn.onclick = function(){ |
138 | 139 | let curRequest = curRequests.pop(); |
|
169 | 170 | timeout:15000, |
170 | 171 | overrideMimeType:"text/html;charset="+document.charset, |
171 | 172 | onload: function(result) { |
| 173 | + downIndex++; |
| 174 | + downNum++; |
172 | 175 | var doc = getDocEle(result.responseText); |
173 | 176 | let nextPage=checkNextPage(doc); |
174 | 177 | if(nextPage){ |
|
202 | 205 | insertSigns[targetIndex].push(aEles.length-1); |
203 | 206 | } |
204 | 207 | } |
205 | | - downIndex++; |
206 | | - downNum++; |
207 | 208 | processDoc(curIndex, aTag, doc); |
208 | 209 | let request=downOnce(); |
209 | 210 | if(request)curRequests.push(request); |
|
230 | 231 | if(request)curRequests.push(request); |
231 | 232 | } |
232 | 233 | }; |
233 | | - return [curIndex,GM_xmlhttpRequest(requestBody)]; |
| 234 | + return [curIndex,GM_xmlhttpRequest(requestBody),aTag.href]; |
234 | 235 | } |
235 | 236 | if(!aTag){ |
236 | 237 | let waitAtagReadyInterval=setInterval(function(){ |
|
500 | 501 | processFunc=null; |
501 | 502 | var customRules=GM_getValue("DACrules_"+document.domain); |
502 | 503 | var urls=window.prompt(i18n.customInfo,customRules?customRules:"https://xxx.xxx/book-[20-99].html, https://xxx.xxx/book-[01-10].html"); |
| 504 | + urls=decodeURIComponent(urls); |
503 | 505 | if(urls){ |
504 | 506 | GM_setValue("DACrules_"+document.domain, urls); |
505 | 507 | var processEles=[]; |
506 | | - if(/^http|^ftp/.test(urls)){ |
507 | | - [].forEach.call(urls.split(","),function(i){ |
| 508 | + let urlsArr=urls.split("@@"),eles=[]; |
| 509 | + if(/^http|^ftp/.test(urlsArr[0])){ |
| 510 | + [].forEach.call(urlsArr[0].split(","),function(i){ |
508 | 511 | var curEle; |
509 | 512 | var varNum=/\[\d+\-\d+\]/.exec(i); |
510 | 513 | if(varNum){ |
|
530 | 533 | var curUrl=i.replace(/\[\d+\-\d+\]/,urlIndex).trim(); |
531 | 534 | curEle=document.createElement("a"); |
532 | 535 | curEle.href=curUrl; |
533 | | - processEles.push(curEle); |
534 | 536 | curEle.innerText=processEles.length.toString(); |
| 537 | + processEles.push(curEle); |
535 | 538 | } |
536 | 539 | }); |
537 | 540 | }else{ |
538 | | - let urlsArr=urls.split("@@"),eles=[]; |
539 | 541 | let urlSel=urlsArr[0].split(">>"); |
540 | 542 | try{ |
541 | 543 | eles=document.querySelectorAll(urlSel[0]); |
|
601 | 603 | processEles.push(item.cloneNode(1)); |
602 | 604 | } |
603 | 605 | }); |
604 | | - if(urlsArr[1]){ |
605 | | - processEles.forEach(ele=>{ |
606 | | - ele.href=ele.href.replace(new RegExp(urlsArr[1]), urlsArr[2]); |
607 | | - }); |
608 | | - } |
609 | | - if(urlsArr[3]){ |
610 | | - processFunc=data=>{ |
611 | | - if(urlsArr[3].indexOf("return ")==-1){ |
612 | | - return eval(urlsArr[3]) |
613 | | - }else{ |
614 | | - return Function("data",urlsArr[3])(data); |
615 | | - } |
616 | | - }; |
617 | | - }else{ |
618 | | - var win=(typeof unsafeWindow=='undefined'? window : unsafeWindow); |
619 | | - if(win.dacProcess){ |
620 | | - processFunc=win.dacProcess; |
| 606 | + } |
| 607 | + if(urlsArr[1]){ |
| 608 | + processEles.forEach(ele=>{ |
| 609 | + ele.href=ele.href.replace(new RegExp(urlsArr[1]), urlsArr[2]); |
| 610 | + }); |
| 611 | + } |
| 612 | + if(urlsArr[3]){ |
| 613 | + processFunc=data=>{ |
| 614 | + if(urlsArr[3].indexOf("return ")==-1){ |
| 615 | + return eval(urlsArr[3]) |
| 616 | + }else{ |
| 617 | + return Function("data",urlsArr[3])(data); |
621 | 618 | } |
| 619 | + }; |
| 620 | + }else{ |
| 621 | + var win=(typeof unsafeWindow=='undefined'? window : unsafeWindow); |
| 622 | + if(win.dacProcess){ |
| 623 | + processFunc=win.dacProcess; |
622 | 624 | } |
623 | 625 | } |
624 | 626 | indexDownload(processEles); |
|
0 commit comments