马上注册,结交更多网友,浏览器插件/脚本不再愁!
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
一个可扩展的通用型小说下载器,方便保存这些质量上乘,但不够热门,没有被其他网站转载,彻底从互联网上消失的作品。
本脚本为404小说文库项目的组成部分之一,对于无登录墙的小说网站,如您同意,本脚本将会尝试将当前书籍详情页及目录页(如果存在)存档至互联网档案馆(archive.org),以备日后(被删除后)查看。
存档过程中将会搜集并上报您如下信息:IP地址、User-Agent、Referer、当前书籍详情页URL、当前书籍目录页URL(如果存在)、当前小说下载器脚本版本、当前脚本管理器版本。除上述信息外,不会搜集您任何其他信息。
安装
本软件为油猴脚本,需先在浏览器安装油猴脚本管理器(Tampermonkey)或暴力猴,再安装本脚本。具体可参见本站主菜单栏的信息。
使用方法
本脚本执行下载任务时将播放无声音频,以保证脚本后台运行时不被休眠。
如果本脚本支持该小说网站,当打开小说目录页时,网页右上角会出现下载图标,点击该图标即可开始下载。
如果你要下载的小说章节较多,等待时间可能较长,此时请耐心等待。
你通过右下角进度条了解当前下载进度,或者按下 F12,打开网页控制台查看当前下载状态。
下载完成后,本脚本将会自动下载一个TXT文档及EPUB文件。
TXT文档请使用记事本或其它阅读软件进行阅读。
EPUB文件请使用相应阅读器阅读。
目前支持小说网站
特别提醒:如欲下载支持列表中网站的付费章节,请登录相应网站帐户,并确定已购买相应付费章节。未登录网站帐户,或未购买的付费章节,下载时将直接忽略,无法进行下载。
- yruan.com,shuquge.com,hetushu.com,xkzw.org,qidian.com,ciweimao.com,sfacg.com,gebiqu.com,uukanshu.com,dingdiann.net,266ks.com,shouda88.com,viviyzw.com,jjwxc.net,zongheng.com,17k.com,shuhai.com,81book.com,lewenn.com,gongzicp.com,linovel.net,tadu.com,qimao.com,xinwanben.com,idejian.com,wenku8.net,dmzj.com,sosad.funwenzhan.org,sosadfun.com,xn--pxtr7m5ny.com,xn--pxtr7m.com,xn--pxtr7m5ny.net,xn--pxtr7m.net,sosadfun.linkwestnovel.com,xbiquge.solinovelib.com,luoqiuzw.com,fushuwang.org,soxscc,.net,soxscc,.org,soxs.cc,sizhicn,.com,1pwx.com,shubaowa.org,fuguoduxs.com,630shu.net,trxs.cc,trxs123.com,tongrenquan.org,jpxs123.com,imiaobige.com,soshuw.com,biquge66.com,lofter.com,tongrenquan.melwxs9.org,shubl.com,yushuge123.com,soshuwu.org,haitangtxt.net,banzhuer.org,longmabook.com,longmabookcn,.com,lmbooks.com,lmebooks.com,haitbook.com,htwhbook.com,myhtebook.com,lovehtbooks.com,myhtebooks.com,myhtlmebook.com,urhtbooks.com,newhtbook.com,lvhtebook.com,htlvbooks.com,81zw.com,soxscc,.cc,soshuwu.com,dijiubook.net,mht99.com,256wenku.com,kubiji.net,25zw.com,bz01.org,yibige.cc,kanunu8.com,ciyuanji.com,wanben.org,ranwen.labaihexs.com,quanshuzhai.com,masiro.mepixiv.net,kakuyomu.jpsyosetu.com,zhaoze.artmyrics.com,lusetxt.com,a7xs.com,shencou.com,tianyabooks.com,lstxt.cc,aixiawx.com,jingcaiyuedu6.com,hanwujinian.com,syosetu.org,bilibili.com,aixdzs.com,liuxs.lacool18.com,b5200.net,dushu369.com,18kanshu.com,xiaoshuowu.com,xrzww.com,colorful-fantasybooks.com,hongyeshuzhal.com,xbiquwx.lazmcc,x.com,wangshuge.com,biqu55.net,xsyq.cc,bxwx888.org,dizishu.com,yqbiqu.com,xbiquge.laakatsuki-novels.com,alphapolis.co.jpnovelup.plusimbg.cc,69shu.com,houhuayuan.vipreadmoo.com
复制代码
高阶使用技巧
启用调试功能
设置菜单中按击开启。
自定义筛选函数
如欲只下载部分章节,请在点击运行按钮前,按下 F12 打开开发者工具,在 window 下创建 chapterFilter 函数,具体格式如下:
- declare enum Status {
- pending = 0,
- downloading = 1,
- failed = 2,
- finished = 3,
- aborted = 4,
- saved = 5
- }
- interface ChapterAdditionalMetadate {
- lastModified?: number;
- }
- declare class Chapter {
- bookUrl: string;
- bookname: string;
- chapterUrl: string;
- chapterNumber: number;
- chapterName: string | null;
- isVIP: boolean;
- isPaid: boolean | null;
- sectionName: string | null;
- sectionNumber: number | null;
- sectionChapterNumber: number | null;
- chapterParse: BaseRuleClass["chapterParse"];
- charset: string;
- options: object;
- status: Status;
- retryTime: number;
- contentRaw: HTMLElement | null;
- contentText: string | null;
- contentHTML: HTMLElement | null;
- contentImages: attachmentClass[] | null;
- additionalMetadate: ChapterAdditionalMetadate | null;
- chapterHtmlFileName: string | number;
- constructor(bookUrl: string, bookname: string, chapterUrl: string, chapterNumber: number, chapterName: string | null, isVIP: boolean, isPaid: boolean | null, sectionName: string | null, sectionNumber: number | null, sectionChapterNumber: number | null, chapterParse: BaseRuleClass["chapterParse"], charset: string, options: object);
- init(): Promise<this>;
- private parse;
- }
- declare class attachmentClass {
- url: string;
- name: string;
- mode: "naive" | "TM";
- headers?: {
- [index: string]: string;
- };
- private defaultHeader;
- status: Status;
- retryTime: number;
- imageBlob: Blob | null | void;
- constructor(imageUrl: string, name: string, mode: "naive" | "TM");
- init(): Promise<Blob | null>;
- private downloadImage;
- private tmDownloadImage;
- }
- interface chapterFilter {
- (chapter: Chapter): boolean;
- }
复制代码
自定义筛选函数示例:
只下载该本小说前100章内容:
- function chapterFilter(chapter) {
- return chapter.chapterNumber <= 100
- }
复制代码
只下载第一卷内容:
- function chapterFilter(chapter) {
- return chapter.sectionNumber === 1
- }
复制代码
只下载章节名称中含有“武器”的章节:
- function chapterFilter(chapter) {
- return chapter.chapterName.includes("武器")
- }
复制代码
自定义保存参数
自定义保存参数允许您修改保存文件的样式,章节标题等内容。
使用方法大致同自定义筛选函数,即在 window 下创建 saveOptions 对象,具体格式如下:
- declare class saveBook {
- protected book: Book;
- mainStyleText: string;
- tocStyleText: string;
- constructor(book: Book);
- saveTxt(): void;
- saveLog(): void;
- saveZip(runSaveChapters?: boolean): Promise<void>;
- addChapter(chapter: Chapter): void;
- getchapterName(chapter: Chapter): string;
- genSectionText(sectionName: string): string;
- genChapterText(chapterName: string, contentText: string): string;
- genSectionHtmlFile(chapterObj: Chapter): Blob;
- genChapterHtmlFile(chapterObj: Chapter): Blob;
- chapterSort(a: Chapter, b: Chapter): 0 | 1 | -1;
- }
- interface saveOptions {
- mainStyleText?: saveBook["mainStyleText"];
- tocStyleText?: saveBook["tocStyleText"];
- getchapterName?: saveBook["getchapterName"];
- genSectionText?: saveBook["genSectionText"];
- genChapterText?: saveBook["genChapterText"];
- genSectionHtmlFile?: saveBook["genSectionHtmlFile"];
- genChapterHtmlFile?: saveBook["genChapterHtmlFile"];
- chapterSort?: saveBook["chapterSort"];
- }
复制代码
自定义保存参数示例:
将章节名称格式修改为 第xx章 xxxx :
- const saveOptions = {
- getchapterName: (chapter) => {
- if (chapter.chapterName) {
- return `第${chapter.chapterNumber.toString()}章 ${chapter.chapterName}`;
- } else {
- return `第${chapter.chapterNumber.toString()}章`;
- }
- }
- }
- window.saveOptions = saveOptions
复制代码
更改ZIP文档中章节HTML文件样式:
- const saveOptions = {
- "mainStyleText": `p {
- text-indent: 4em;
- display: block;
- line-height: 1.3em;
- margin-top: 0.4em;
- margin-bottom: 0.4em;
- }`
- }
- window.saveOptions = saveOptions
复制代码
txt文档每个自然段前加两个空格
- const saveOptions = {
- genChapterText: (chapterName, contentText) => {
- contentText = contentText
- .split('\n')
- .map(line => {
- if (line.trim() === "") {
- return line
- } else {
- return line.replace(/^/,' ')
- }
- })
- .join('\n')
- return `## ${chapterName}\n\n${contentText}\n\n`;
- }
- }
- window.saveOptions = saveOptions
复制代码
保存章节时倒序排列
- const saveOptions = {
- chapterSort: (a, b) => {
- if (a.chapterNumber > b.chapterNumber) {
- return -1;
- }
- if (a.chapterNumber === b.chapterNumber) {
- return 0;
- }
- if (a.chapterNumber < b.chapterNumber) {
- return 1;
- }
- return 0;
- }
- }
- window.saveOptions = saveOptions
复制代码
使用用户脚本自动注入自定义保存参数:
如您总是想使用某一自定义保存参数,你可以使用如下用户脚本(根据实际需要修改相应数值),自动向页面注入自定义保存参数。
- // ==UserScript==
- // @name auto inject saveOptions
- // @namespace http://tampermonkey.net/
- // @version 0.1
- // @description auto inject saveOptions
- // @author You
- // @match *://*/*
- // @grant none
- // ==/UserScript==
- (function() {
- 'use strict';
- const saveOptions = {
- getchapterName: (chapter) => {
- if (chapter.chapterName) {
- return `第${chapter.chapterNumber.toString()}章 ${chapter.chapterName}`;
- } else {
- return `第${chapter.chapterNumber.toString()}章`;
- }
- }
- }
- window.saveOptions = saveOptions
- })();
复制代码
自定义筛选函数同理也可使用用户脚本自动注入。
自定义完成回调函数
- interface customFinishCallback {
- (): void;
- }
复制代码
自定义完成回调函数将在下载完成并生成ZIP文件后自动执行。
使用自定义完成回调函数可在下载完成后自动完成某些工作,例如:关闭当前窗口。
- function customFinishCallback(book: Book) {
- window.close();
- }
- window.customFinishCallback = customFinishCallback;
复制代码
将小说用浏览器下载到电脑 v4.9.0.692
创建日期:2020/6/26
最近更新:2022/5/22
novel-downloader v4.9.0.693 tampermonkey_scripts.zip
(305.7 KB, 下载次数: 2)
|