├── .github
├── ISSUE_TEMPLATE.md
└── workflows
│ └── npm-test.yml
├── Dockerfile
├── README.md
├── _build
└── pack_up.js
├── archive
├── 163.js
├── 23us.2018.js
├── 23us.js
├── 2manhua.js
├── 36mh.js
├── 37yue.js
├── 50mh.js
├── 517.js
├── 57mh.js
├── 733mh.js
├── 76.js
├── 81xsw.js
├── 88bag.js
├── 999comics.js
├── AlphaPolis_2016-20170619.js
├── MAGCOMI.js
├── OVERLAP.js
├── XOY.js
├── aikanmh.js
├── biquge.js
├── buka.js
├── ck101.js
├── comico.js
├── comico_jp.js
├── comico_jp_plus.js
├── dagu.js
├── dmeden.js
├── duoduomh.js
├── emw.js
├── hhcool.js
├── iqg365.js
├── manhuatai.2018.js
├── nokiacn.js
├── ohmanhua.js
├── r2hm.js
├── remanba.js
├── renamer_nyaa.js
├── tohomh.js
├── wuyouhui.js
├── xbiquge.js
├── yinvmh.js
└── youma.js
├── arrangement
├── classify_and_compress.js
├── list_kuaiZip.js
├── recover_mulitiple_downloaded_bad_file.js
└── renamer.js
├── book.cmn-Hant-TW
├── ebookservice.js
├── epub_hans_to_hant.js
├── fetch_all_links.js
├── ljswio.js
└── podcasts.js
├── comic.cmn-Hans-CN
├── 1kkk.js
├── 733dm.js
├── 90mh.js
├── 930mh.js
├── baozimh.org.js
├── baozimh_cn.js
├── bilibili.js
├── comic.cmn-Hans-CN.bat
├── dajiaochong.js
├── dm5.js
├── dmzj.js
├── dongman.js
├── gufengmh.js
├── hanmanwo.js
├── kanman.js
├── katui.js
├── kuaikan.js
├── manhuacat.js
├── manhuadb.js
├── manhuagui.js
├── manhuaniu.js
├── mh1234.js
├── mh160.js
├── migudm.js
├── mymhh.js
├── pufei.js
├── qiman5.js
├── qq.bat
├── qq.js
├── sfacg.js
├── taduo.js
├── toomics_sc.js
├── u17.js
└── weibo.js
├── comic.cmn-Hant-TW
├── 18comic.chapter.html
├── 18comic.js
├── 18comic.work.html
├── baozimh.js
├── cartoonmad.js
├── comicbus.js
├── dogemanga.js
├── manhuagui_tw.js
├── toomics_tc.js
└── webtoon.js
├── comic.en-US
├── bookcube.js
├── mrblue.js
├── toomics_en.js
└── webtoon_en.js
├── comic.ja-JP
├── AlphaPolis_official_manga.js
├── AlphaPolis_user_manga.js
├── ComicWalker.js
├── cycomi.js
├── moae.js
├── nico_seiga.js
├── tmca.js
└── youngaceup.js
├── document
├── README.cmn-Hans-CN.md
├── README.cmn-Hant-TW.md
├── README.en-US.md
└── README.ja-JP.md
├── gui_electron
├── gui_electron.css
├── gui_electron.html
├── gui_electron.js
├── gui_electron_functions.js
└── icon
│ ├── rasen2.ico
│ └── rasen2.png
├── novel.cmn-Hans-CN
├── 51shucheng.js
├── 630book.js
├── 69shu.js
├── 88dus.js
├── biqizw.js
├── biqugse.js
├── booktxt.js
├── cwjjj.js
├── daocaoren.js
├── ecxs.js
├── fxnzw.js
├── huaxiangju.js
├── kanshushenzhan.js
├── kanunu.js
├── luoxia.js
├── novel.cmn-Hans-CN.bat
├── piaotian.js
├── qidian.js
├── quanben.js
├── x81zw.js
├── xbiquge.cc.js
├── xbiquge.so.js
├── xbiquke.js
├── xshuyaya.js
├── zhuishubang.js
└── zwdu.js
├── novel.ja-JP
├── AlphaPolis.js
├── Hameln.js
├── kakuyomu.js
├── mid.js
├── mnlt.js
├── noc.js
├── novel.ja-JP.bat
└── yomou.js
├── package.json
├── start_gui_electron.bat
├── start_gui_electron.sh
├── work_crawler.default_configuration.js
├── work_crawler.updater.js
└── work_crawler_loader.js
/.github/ISSUE_TEMPLATE.md:
--------------------------------------------------------------------------------
1 |
23 |
24 | * **Version**:
25 | * **Interface**:
26 | * **Arguments**:
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/.github/workflows/npm-test.yml:
--------------------------------------------------------------------------------
1 | # https://github.com/actions/starter-workflows/blob/main/ci/node.js.yml
2 | # This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node
3 | # For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions
4 |
5 | name: Node.js CI test
6 |
7 | on:
8 | push:
9 | branches: [ master ]
10 | pull_request:
11 | branches: [ master ]
12 |
13 | jobs:
14 | test:
15 |
16 | runs-on: ubuntu-latest
17 |
18 | strategy:
19 | matrix:
20 | # 0.12.x will cause `Fatal error in ../deps/v8/src/lookup.cc, line 47`
21 | # https://github.com/kanasimi/CeJS/runs/2105877783?check_suite_focus=true
22 | node-version: [ 0.10.x, 14.x, 16.x ]
23 | # See supported Node.js release schedule at https://nodejs.org/en/about/releases/
24 |
25 | steps:
26 | - uses: actions/checkout@v2
27 | - name: Use Node.js ${{ matrix.node-version }}
28 | uses: actions/setup-node@v1
29 | with:
30 | node-version: ${{ matrix.node-version }}
31 | #- run: npm ci
32 | #- run: npm run build --if-present
33 | - run: npm run test
34 |
--------------------------------------------------------------------------------
/Dockerfile:
--------------------------------------------------------------------------------
1 | # https://hub.docker.com/r/kanasimi/work_crawler
2 |
3 | # https://www.jinnsblog.com/2018/12/docker-dockerfile-guide.html
4 | # https://nodejs.org/zh-cn/docs/guides/nodejs-docker-webapp/
5 | # https://ithelp.ithome.com.tw/articles/10192519
6 | # https://www.electron.build/multi-platform-build#docker
7 |
8 | # https://github.com/nodejs/docker-node
9 | # https://hub.docker.com/_/node/
10 | # https://derickbailey.com/2017/03/09/selecting-a-node-js-image-for-docker/
11 | FROM node:12
12 | # FROM electronuserland/builder
13 |
14 | # Create app directory
15 | WORKDIR /app
16 | # copy files
17 | COPY work_crawler.updater.js /app
18 | RUN ["node", "work_crawler.updater.js"]
19 |
20 | # application's default port
21 | EXPOSE 80
22 |
23 | CMD ["sh", "-c", "cd work_crawler-master && sh start_gui_electron.sh"]
24 |
25 | # docker build .
26 | # docker image ls
27 | # docker tag {DOCKER_IMAGE_ID} kanasimi/work_crawler:2.1.0
28 | # docker push kanasimi/work_crawler
29 |
30 | # docker pull kanasimi/work_crawler
31 | # docker run -it --rm --name kanasimi/work_crawler
32 | # Enter the container
33 | # docker exec -it kanasimi/work_crawler /bin/bash
34 |
35 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | [](https://github.com/kanasimi/work_crawler/releases/latest/)
2 | 
3 | 
4 | 
5 | [](https://github.com/kanasimi/work_crawler/releases)
6 | [](https://snyk.io/test/github/kanasimi/work_crawler?targetFile=package.json)
7 | [](https://codebeat.co/projects/github-com-kanasimi-work_crawler-master)
8 |
12 |
13 | # CeJS online novels / comics downloader
14 | - [en] Tools to download novels (→ epub) and comics.
15 | → **[English document](document/README.en-US.md)**
16 | - [TW] 批量下載小說 (→ epub)、漫畫網站作品的工具。
17 | → **[繁體中文說明](document/README.cmn-Hant-TW.md)**
18 | - [CN] 批量下载小说 (→ epub)、漫画网站作品的网络爬虫。
19 | → **[简体中文说明](document/README.cmn-Hans-CN.md)**
20 | - [ja] ウェブ小説 (→ epub)、ウェブ漫画作品を一括ダウンロードツール。
21 | → **[日本語の説明](document/README.ja-JP.md)**
22 |
23 | ## Language support 多語言支援
24 | Welcome to join [the translating project](https://github.com/kanasimi/work_crawler/issues/185)! [一緒に翻訳しましょう](https://github.com/kanasimi/work_crawler/issues/185)!
25 |
26 | | Language 語言 | Support 支援狀況 | README.md |
27 | |---|:---:|---|
28 | | 繁體中文 | ✔️ | [繁體中文說明](document/README.cmn-Hant-TW.md) |
29 | | 简体中文 | ✔️ | [简体中文说明](document/README.cmn-Hans-CN.md) |
30 | | English | ✔️ | [English document](document/README.en-US.md) |
31 | | Português brasileiro | 🚧 |
32 | | 日本語 | 🚧 | [日本語の説明](document/README.ja-JP.md) |
33 | | 한국어 | 🚧 |
34 |
35 | ## OS support 作業系統支援
36 | | Platform 作業系統平臺 | Support 支援狀況 |
37 | |---|:---:|
38 | | Windows | ✔️ |
39 | | macOS | ✔️ |
40 | | UNIX, Linux | ✔️ |
41 |
42 |
43 | ## Interface 支援介面
44 | | Interface 介面/界面 インターフェース | Support 支援狀況 |
45 | |---|:---:|
46 | | [GUI](https://en.wikipedia.org/wiki/Graphical_user_interface) 視窗/图形 グラフィカル | ✔️ |
47 | | [CLI](https://en.wikipedia.org/wiki/Command-line_interface) 命令列/命令行 コマンドライン | ✔️ |
48 | | API 應用程式介面 | ✔️ |
49 |
50 | ## Features 特點
51 | GUI supports different languages: 視窗型態介面支援不同語系:
52 | 
53 |
54 | Many download options: 有許多可調整的下載選項:
55 | 
56 |
57 | Optional dark theme: 可選用暗色系主題:
58 | 
59 |
60 | Search websites and download works with one click: 能一鍵搜尋各網站與下載作品:
61 | 
62 |
--------------------------------------------------------------------------------
/archive/163.js:
--------------------------------------------------------------------------------
1 | /**
2 | * 批量下載网易漫画的工具。 Download 163 comics.
3 | */
4 |
5 | 'use strict';
6 |
7 | require('../work_crawler_loader.js');
8 |
9 | // ----------------------------------------------------------------------------
10 |
11 | var crawler = new CeL.work_crawler({
12 | // recheck:從頭檢測所有作品之所有章節。
13 | // recheck : true,
14 | // one_by_one : true,
15 |
16 | // 2017/4: https://manhua.163.com/
17 | // 2019/5: 網易漫畫網址更動 → https://163.bilibili.com/
18 | base_URL : 'https://163.bilibili.com/',
19 |
20 | // allow .jpg without EOI mark.
21 | // allow_EOI_error : true,
22 | // 當圖像檔案過小,或是被偵測出非圖像(如不具有EOI)時,依舊強制儲存檔案。
23 | // skip_error : true,
24 |
25 | // 解析 作品名稱 → 作品id get_work()
26 | search_URL : 'search/book/key/hints.json?key=',
27 | parse_search_result : function(html, get_label) {
28 | html = JSON.parse(html).books.data;
29 | var id_list = html.map(function(book) {
30 | book.title = get_label(book.title);
31 | return book.id = book.bookId;
32 | });
33 | return [ id_list, html ];
34 | },
35 | // id_of_search_result : function(cached_data) { return cached_data; },
36 | title_of_search_result : 'title',
37 |
38 | // 取得作品的章節資料。 get_work_data()
39 | work_URL : 'source/',
40 | parse_work_data : function(html, get_label) {
41 | var title = get_label(html.between(
42 | '