|
4 | 4 | // @name:zh-TW 懶人小説下載器 |
5 | 5 | // @name:ja 怠惰者小説ダウンロードツール |
6 | 6 | // @namespace hoothin |
7 | | -// @version 1.25 |
| 7 | +// @version 1.26 |
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文檔 |
|
38 | 38 | downloading:"已下载完成 %s 段,剩余 %s 段<br>正在下载 %s", |
39 | 39 | complete:"已全部下载完成,共 %s 段", |
40 | 40 | del:"设置小说干扰码的CSS选择器", |
| 41 | + custom:"自定义网址下载", |
| 42 | + reSort:"按标题名重新排序", |
41 | 43 | setting:"懒人小说下载设置" |
42 | 44 | }; |
43 | 45 | break; |
|
49 | 51 | downloading:"%s pages are downloaded, there are still %s pages left<br>Downloading %s ......", |
50 | 52 | complete:"Completed! The pages totalled %s", |
51 | 53 | del:"Set css selectors for delete", |
| 54 | + custom:"Custom url for download", |
| 55 | + reSort:"ReSort by title", |
52 | 56 | setting:"DownloadAllContent Setting" |
53 | 57 | }; |
54 | 58 | break; |
|
81 | 85 | } |
82 | 86 |
|
83 | 87 | function indexDownload(aEles){ |
| 88 | + if(aEles.length<1)return; |
84 | 89 | initTxtDownDiv(); |
85 | 90 | var j=0,rCats=[]; |
86 | 91 | function getDocEle(str){ |
|
208 | 213 | for(i=0;i<childlist.length;i++){ |
209 | 214 | var child=childlist[i]; |
210 | 215 | if(getDepth(child)==getDepth(largestContent)){ |
| 216 | + if(!largestContent.className && child.className)continue; |
211 | 217 | if((largestContent.className && largestContent.className==child.className)||largestContent.parentNode ==child.parentNode){ |
212 | 218 | getRightStr(child, true); |
213 | 219 | }else { |
|
275 | 281 | var selValue=GM_getValue("selectors"); |
276 | 282 | var selectors=prompt(i18n.del,selValue?selValue:""); |
277 | 283 | GM_setValue("selectors",selectors); |
278 | | - if(window.confirm("重新排序")){ |
| 284 | + if(window.confirm(i18n.reSort)){ |
279 | 285 | GM_setValue("contentSort", true); |
280 | 286 | }else{ |
281 | 287 | GM_setValue("contentSort", false); |
282 | 288 | } |
| 289 | + var urls=window.prompt(i18n.custom,"https://xxx.xxx/book-[20-99].html, https://xxx.xxx/book-[01-10].html"); |
| 290 | + if(urls){ |
| 291 | + var processEles=[]; |
| 292 | + [].forEach.call(urls.split(","),function(i){ |
| 293 | + var varNum=/\[\d+\-\d+\]/.exec(i)[0].trim(); |
| 294 | + var num1=/\[(\d+)/.exec(varNum)[1].trim(); |
| 295 | + var num2=/(\d+)\]/.exec(varNum)[1].trim(); |
| 296 | + var num1Int=parseInt(num1); |
| 297 | + var num2Int=parseInt(num2); |
| 298 | + var numLen=num1.length; |
| 299 | + var needAdd=num1.charAt(0)=="0"; |
| 300 | + if(num1Int>=num2Int)return; |
| 301 | + for(var j=num1Int;j<=num2Int;j++){ |
| 302 | + var urlIndex=j.toString(); |
| 303 | + if(needAdd){ |
| 304 | + while(urlIndex.length<numLen)urlIndex="0"+urlIndex; |
| 305 | + } |
| 306 | + var curUrl=i.replace(/\[\d+\-\d+\]/,urlIndex).trim(); |
| 307 | + var curEle=document.createElement("a"); |
| 308 | + curEle.href=curUrl; |
| 309 | + processEles.push(curEle); |
| 310 | + curEle.innerText=processEles.length.toString(); |
| 311 | + } |
| 312 | + }); |
| 313 | + indexDownload(processEles); |
| 314 | + } |
283 | 315 | } |
284 | 316 | GM_registerMenuCommand(i18n.fetch, fetch); |
285 | 317 | GM_registerMenuCommand(i18n.setting, setDel); |
|
0 commit comments