|
4 | 4 | // @name:zh-TW 懶人小説下載器 |
5 | 5 | // @name:ja 怠惰者小説ダウンロードツール |
6 | 6 | // @namespace hoothin |
7 | | -// @version 1.10 |
8 | | -// @description Fetch and download main content on current page,provide special support for chinese novel |
| 7 | +// @version 1.11 |
| 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文檔 |
11 | 11 | // @description:ja ユニバーサルサイトコンテンツクロールツール、クロール、フォーラム内容など |
|
32 | 32 | i18n={ |
33 | 33 | fetch:"开始下载小说或其他【Ctrl+F9】", |
34 | 34 | info:"本文是使用懒人小说下载器(DownloadAllContent)脚本下载的", |
35 | | - error:"该段内容获取失败" |
| 35 | + error:"该段内容获取失败", |
| 36 | + downloading:"已下载完成 %s 段,剩余 %s 段<br>正在下载 %s", |
| 37 | + complete:"已全部下载完成,共 %s 段" |
36 | 38 | }; |
37 | 39 | break; |
38 | 40 | default: |
39 | 41 | i18n={ |
40 | 42 | fetch:"Download All Content[Ctrl+F9]", |
41 | 43 | info:"The TXT is downloaded by 'DownloadAllContent'", |
42 | | - error:"Failed in downloading current chapter" |
| 44 | + error:"Failed in downloading current chapter", |
| 45 | + downloading:"%s pages are downloaded, there are still %s pages left<br>Downloading %s ......", |
| 46 | + complete:"Completed! The pages totalled %s" |
43 | 47 | }; |
44 | 48 | break; |
45 | 49 | } |
|
78 | 82 | j++; |
79 | 83 | rCats[i]=(aTag.textContent+"\r\n"+getPageContent(doc)); |
80 | 84 | txtDownContent.style.display="block"; |
81 | | - txtDownWords.innerHTML="已下载完成 "+j+" 段,剩余 "+(aEles.length-j)+" 段"+"<br>正在下载 "+aTag.textContent; |
| 85 | + txtDownWords.innerHTML=getI18n("downloading",[j,(aEles.length-j),aTag.textContent]); |
82 | 86 | if(j==aEles.length){ |
83 | | - txtDownWords.innerHTML="已全部下载完成,共 "+j+" 段"; |
| 87 | + txtDownWords.innerHTML=getI18n("complete",[j]); |
84 | 88 | var blob = new Blob([i18n.info+"\r\n"+document.title+"\r\n\r\n"+rCats.join("\r\n\r\n")], {type: "text/plain;charset=utf-8"}); |
85 | 89 | saveAs(blob, document.title+".txt"); |
86 | 90 | } |
|
187 | 191 | return rStr; |
188 | 192 | } |
189 | 193 |
|
| 194 | + function getI18n(key, args){ |
| 195 | + var resultStr=i18n[key]; |
| 196 | + if(args && args.length>0){ |
| 197 | + args.forEach(function(item){ |
| 198 | + resultStr=resultStr.replace(/%s/,item); |
| 199 | + }); |
| 200 | + } |
| 201 | + return resultStr; |
| 202 | + } |
| 203 | + |
190 | 204 | function getDepth(dom){ |
191 | 205 | var pa=dom,i=0; |
192 | 206 | while(pa.parentNode){ |
|
200 | 214 | var aEles=document.querySelectorAll("a"),list=[]; |
201 | 215 | for(var i=0;i<aEles.length;i++){ |
202 | 216 | var aEle=aEles[i]; |
203 | | - if(aEle.href && /第.+[章|节|回|卷|折|篇|幕|集]|序|序\s*言|序\s*章|前\s*言|引\s*言|引\s*子|摘\s*要|楔\s*子|后\s*记|附\s*言|结\s*语|[\d|〇|零|一|二|三|四|五|六|七|八|九|十|百|千|万|萬|-]+(、|))/.test(aEle.innerHTML)){ |
| 217 | + if(aEle.href && /PART\b|Prologue|Chapter\s*\d+|第.+[章|节|回|卷|折|篇|幕|集]|序|序\s*言|序\s*章|前\s*言|引\s*言|引\s*子|摘\s*要|楔\s*子|后\s*记|附\s*言|结\s*语|[\d|〇|零|一|二|三|四|五|六|七|八|九|十|百|千|万|萬|-]+(、|))/i.test(aEle.innerHTML)){ |
204 | 218 | list.push(aEle); |
205 | 219 | } |
206 | 220 | } |
|
0 commit comments