一本漫画
尊重版权,请支持正版
该项目仅供技术研究使用,请勿用于非法用途,否则后果自负
通过本工具下载或生成的资源禁止传播分享!禁止利用该项目从事营利性活动!
项目地址: https://github.com/hardwarecode/onecomic
安装 / 升级步骤
自己找安装 Python 的教程(Python 版本大于等于 3.6)
安装 nodejs 环境,自己找教程安装
1 2 3 4 5 6
| # 检查python版本 python --version # 检查pip版本 pip --version
|
1 2 3 4 5 6 7
| # 在线安装/升级(最新版本) pip install -U onecomic
# 查看帮助 onecomic --help
|
常规使用
Windows 下,以下所有示例命令需要添加 python -m
前缀
如: python -m onecomic --url "http://ac.qq.com/Comic/ComicInfo/id/505430"
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| # 注意参数里的 - 和 -- 的区别 # 从章节列表页面的URL 下载漫画的最新一集 onecomic --url "http://ac.qq.com/Comic/ComicInfo/id/505430"
# 下载漫画 id=505430 最新一集 注意不同站点的漫画id区别 onecomic -s qq -id=505430
# 下载所有章节 onecomic -s qq -id 505430 --all
# 下载第800集 onecomic -s qq -id 505430 -c 800
# 下载倒数第二集 onecomic -s qq -id 505430 -c -2
# 下载1到5集,7集,9到10集 onecomic -s qq -id 505430 -c 1-5,7,9-10
# 拼接成长图 onecomic -s qq -id 505430 --single-image --quality 95 --max-height 20000
# 压缩成zip文件 onecomic -s qq -id=505430 --zip
# 设置代理 onecomic -s qq -id 505430 --proxy "socks5://127.0.0.1:1080"
# 自定义保存目录 onecomic -s qq -id=505430 --output MyComicBook
# 将多话合并到单个文件夹和zip文件 onecomic -s manhuagui -id 1128 -c 320-322 --merge --merge-zip
# 下载单行本 onecomic -s manhuagui -id 1128 --ext-name 单行本 -c -1
# 跟据名字搜索comicid onecomic -s qq --name 海贼
# 生成pdf文件 # 注意: 生成pdf文件需要额外安装依赖,需要先执行 pip install img2pdf 或 pip install reportlab onecomic -s qq -id 505430 --pdf
# 推送到邮箱 # 注意: 发送到邮箱需预先配置好信息(详情请看配置文件部分) onecomic -s qq -id 505430 --pdf --mail --config config.ini
|
从其它站点下载,注意不同站点的 comicid 区别
1 2 3 4 5 6 7 8 9 10
| # 从哔哩哔哩漫画下载 onecomic -s bilibili -id mc24742 -c 1
# 从有妖气漫画下载 onecomic -s u17 -id 195 -c 1
# 从章节列表页面的URL下载 onecomic --url "https://manga.bilibili.com/detail/mc28603" -c 1
|
关于登录
登录后可下载已购买的付费资源
-
安装 EditThisCookie 插件
-
在浏览器上登录某个站点,然后通过插件导出某个站点的 cookies,并保存到本地文件 如 qq.json
1 2 3
| onecomic -s qq -id=505430 -c -1 --cookies-path="qq.json"
|
高级批量下载
1 2 3 4
| # 通过指定的URL文件列表批量下载 onecomic --url-file test/test-url-file.txt
|
文件示例 test/test-url-file.txt
1 2 3 4 5 6
| # 海贼王 http://ac.qq.com/Comic/ComicInfo/id/505430 # 雏蜂 https://www.u17.com/comic/195.html
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| # 有些站点不一定支持,其它的通用参数也适用,可自行组合 # 下载最近更新页面的1到10页 所有漫画的最新一集 onecomic -s nvshens --latest-all --latest-page 1-10
# 展示支持的标签 onecomic -s nvshens --show-tags
# 下载标签搜索结果页面的1到10页 所有漫画的全集 onecomic -s nvshens --tag-all --tag 女神 --tag-page 1-10 --all
# 下载搜索结果的所有漫画的全集 onecomic -s nhentai --search-all --search-name 汉化 --search-page 1 --all
|
其它说明
cookies 使用说明
-
下载付费内容需要 cookies,Toomics、qootoon 站点下载 R18 内容也需要 cookies
-
最好保证脚本与在浏览器导出的 cookies 在同一个网络环境(如果浏览器使用代理,脚本也要使用同样的代理环境)
-
若使用了 cookies 还是下载不了,需检查账号在站点浏览是否正常,若正常浏览则重新导出一份新的 cookies 文件再做尝试
-
若还是下载不了,请加群反馈。付费内容的下载问题还请提供 cookies 或账号(私聊群主),不提供大概率会被无视
关于 cocomanhua 的下载
-
安装 nodejs 环境
-
安装 crypto-js 依赖,命令:npm install crypto-js
,默认在当前目录下生成 node_modules
目录
-
下载 onecomic -s cocomanhua -id 12187
或者 onecomic -s cocomanhua --node-modules ./node_modules
配置文件
根据示例创建配置文件
配置文件示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
| [mail]
# SMTP主机 发送账户是163邮箱则设置为 smtp.163.com smtp_server=smtp.qq.com
# SMTP服务端口(SSL) smtp_port=465
# 发送者账户 sender=xx.qq.com
# 登录失败可能需要使用授权码登录 https://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256 # 发送者账户密码或者授权码 sender_passwd=密码或授权码
# 邮件接收者列表,多个则以半角逗号隔开。如 xxx@qq.com,yyy@qq.com receivers=11111@qq.com,22222@qq.com
[crawler] # 默认的下载目录 # download_dir=/home/xxx/MyComicBook
# 配置指定站点代理地址 # proxy_18comic=socks5://127.0.0.1:1080 # proxy_manhuagui=socks5://127.0.0.1:1080 # proxy_nhentai=socks5://127.0.0.1:1080 # proxy_wnacg=socks5://127.0.0.1:1080 # proxy_acg456=socks5://127.0.0.1:1080 # proxy_mh1234=socks5://127.0.0.1:1080 # proxy_177pic=socks5://127.0.0.1:1080 # proxy_18hmmcg=socks5://127.0.0.1:1080 # proxy_xiuren=socks5://127.0.0.1:1080 # proxy_twhentai=socks5://127.0.0.1:1080 # proxy_copymanga=socks5://127.0.0.1:1080 # proxy_toomics=socks5://127.0.0.1:1080 # proxy_webtoons=socks5://127.0.0.1:1080
# webdriver 配置 # driver_type=Chrome # driver_path=/home/xxx/chromedriver_win32/chromedriver.exe
# node模块位置 # node_modules=/home/xxx/js/node_modules
# cookies存放目录(自动读取该目录下的cookeis文件),文件名命名规范: 如 toomics.json qq.json {site}.json # cookies_dir=/home/xxx/cookies
# 长图质量 最大100 # quality=95 # 长图最大高度 最大65500 # max_height=20000
# 图片下载超时时间 单位秒 image_timeout=30
# 站点访问超时时间 单位秒 crawler_timeout=30
# 每个章节下载时间间隔 单位秒 crawler_delay=0
|
将上述配置保存为 config.ini
如 onecomic -s u17 -id 195 -c 1
会默认读取当前目录下的 config.ini
配置文件
或者通过环境变量配置默认的配置文件
1 2
| # 将以下命令添加到 ~/.bashrc 或 ~/.zshrc 文件末尾 export ONECOMIC_CONFIG_FILE="/home/xxx/MyConfig/config.ini"
|
也可以通过参数指定配置文件 onecomic -s u17 -id 195 -c 1 --config config.ini
一本漫画 API
尊重版权,请支持正版
该项目仅供技术研究使用,请勿用于非法用途,否则后果自负
通过本工具下载或生成的资源禁止传播分享!禁止利用该项目从事营利性活动!
项目地址: https://github.com/hardwarecode/onecomic-api
接口部署
自己找安装 Python 的教程(Python 版本大于等于 3.6)
安装 nodejs 环境
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| git clone git@github.com:hardwarecode/onecomic-api.git
# 切换工作目录 cd onecomic-api
# 安装依赖 pip install -r requirements.txt
# 复制`api/config.py.example`并命名为`api/config.py` 并根据实际情况修改`api/config.py`的参数 # 注意配置 api/config.py NODE_MODULES cp api/config.py.example api/config.py
# 启动接口 gunicorn 'api:create_app()' -b "127.0.0.1:8000" --workers=2 --timeout=10
# 查看可选的配置选项 gunicorn --help # 文档 http://docs.gunicorn.org/en/latest/settings.html
|
更新
1 2 3 4 5 6 7
| # 只更新onecomic(修复bug、添加更多的源等) pip install -U onecomic
# 更新项目。注意`api/config.py.example`有无新增的配置,如果有的话需要重新配置`api/config.py` git pull pip install -U onecomic pip install -r requirements.txt
|
接口文档
1.1 获取漫画概要信息
1
| GET /api/<site>/comic/<comicid>
|
请求示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| curl "http://127.0.0.1:8000/api/bilibili/comic/24742" { "author": "尾田荣一郎 集英社", "chapters": [ { "chapter_number": 1, "source_url": "https://manga.bilibili.com/m/mc24742/218087", "title": "ROMANCE DAWN冒险的序幕" }, { "chapter_number": 2, "source_url": "https://manga.bilibili.com/m/mc24742/218093", "title": "戴草帽的路飞" } ], "cover_image_url": "http://i0.hdslb.com/bfs/manga-static/8cfad691e8717f8c189f2b5e93a39d272708f91a.jpg", "crawl_time": "2020-08-16 15:06:29", "desc": "【此漫画的翻译由版权方提供】拥有财富、名声、权力、这世界上的一切的男人 “海盗王”高路德·罗杰,在临死之前说了一句话,让全世界的人都涌向了大海。“想要我的财宝吗?想要的话,就去拿吧,我把世界上的一切都放在了那里!”,这个世界迎来了“大海盗时代”。", "name": "航海王", "source_name": "哔哩哔哩漫画", "site": "bilibili", "source_url": "https://manga.bilibili.com/m/detail/mc24742", "tag": "奇幻,热血,冒险", "ext_chapters": [ { "ext_name": "番外篇", "chapters": [] } ], "comicid": "24742", "tags": [ { "name":"奇幻", "tag":"style_id_998" }, { "name":"热血", "tag":"style_id_999" }, { "name":"冒险", "tag":"style_id_1013" } ] }
|
tags
: 可用于标签搜索,如 http://127.0.0.1:8000/api/bilibili/list?tag=style_id_998&page=1
1.2 获取章节详情
1
| GET /api/<site>/comic/<comicid>/<chapter_number>
|
请求示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| curl "http://127.0.0.1:8000/api/bilibili/comic/24742/1"
# 获取单行本第一卷 curl "http://127.0.0.1:8000/api/manhuagui/comic/1128/1?ext_name=单行本" { "chapter_number": 1, "image_urls": [ "https://i0.hdslb.com/bfs/manga/a978a1834b3ad58fad020e56aaac9faaa0aa941a.jpg?token=73441250b03e3f16%3ANyuRMmMH4QSq3VoxAtaxG5yw%2Bd0%3D%3A1597561590", "https://i0.hdslb.com/bfs/manga/535548cebdd5d96cfa87247f07171ccebfa1efa7.jpg?token=73441250b03e3f16%3Awk76wOeUd7daRpAfc%2FHSs1Qkql0%3D%3A1597561590", "https://i0.hdslb.com/bfs/manga/f6e50a5bdd38af33c152f7929ee63325b519bfdc.jpg?token=73441250b03e3f16%3Ad57MJZIADxnHC%2FG9TkOIvlK1pLU%3D%3A1597561590" ], "source_url": "https://manga.bilibili.com/m/mc24742/218087", "title": "ROMANCE DAWN冒险的序幕", "source_name": "哔哩哔哩漫画", "site": "bilibili", "comicid": "24742", }
|
1.3 搜索接口
1
| GET /api/<site>/search?name={name}&page={page}
|
请求示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| curl "http://127.0.0.1:8000/api/qq/search?name=海贼&page=1" { "search_result":[ { "comicid":"505430", "cover_image_url":"https://manhua.qpic.cn/vertical/0/17_16_48_0e28c8aabf48e91d395689b5f6a7689f.jpg/420", "name":"航海王", "source_url":"https://ac.qq.com/Comic/ComicInfo/id/505430", "source_name": "腾讯漫画", "site": "qq", }, { "comicid":"531616", "cover_image_url":"https://manhua.qpic.cn/vertical/0/17_17_06_cb4ba7f7af603a3380bb1e5ed415804b.jpg/420", "name":"航海王(番外篇)", "source_url":"https://ac.qq.com/Comic/ComicInfo/id/531616", "source_name": "腾讯漫画", "site": "qq", } ] }
|
1.4 获取最近更新
1
| GET /api/<site>/latest?page={page}
|
请求示例
1 2 3 4 5 6 7 8 9 10 11 12 13
| curl "http://127.0.0.1:8000/api/qq/latest?page=1" { "latest":[ { "comicid":"505430", "cover_image_url":"https://manhua.qpic.cn/vertical/0/17_16_48_0e28c8aabf48e91d395689b5f6a7689f.jpg/420", "name":"航海王", "source_url":"https://ac.qq.com/Comic/ComicInfo/id/505430", "source_name": "腾讯漫画", "site": "qq", } ] }
|
1.5 获取所有 tag
请求示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| curl "http://127.0.0.1:8000/api/qq/tags" { "tags":[ { "category":"属性", "tags":[ { "name":"全部", "tag":"" }, { "name":"付费", "tag":"vip_2" }, { "name":"免费", "tag":"vip_1" } ] }, { "category":"进度", "tags":[ { "name":"全部", "tag":"" }, { "name":"连载", "tag":"finish_1" }, { "name":"完结", "tag":"finish_2" } ] }, { "category":"标签", "tags":[ { "name":"恋爱", "tag":"theme_105" }, { "name":"玄幻", "tag":"theme_101" } ] } ] }
|
1.6 根据 tag 搜索
1
| GET /api/<site>/list?tag={tag}&page={page}
|
请求示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| # 多个标签搜索不一定支持 curl "http://127.0.0.1:8000/api/qq/list?tag=theme_105,finish_2&page=1" { "list":[ { "comicid":"623251", "cover_image_url":"https://manhua.qpic.cn/vertical/0/12_20_16_eefe809e406d5076dd13012d48869f89_1499861764052.jpg/420", "name":"出柜通告", "site":"qq", "source_name":"腾讯漫画", "source_url":"https://ac.qq.com/Comic/ComicInfo/id/623251", "status":"" }, { "comicid":"642093", "cover_image_url":"https://manhua.qpic.cn/vertical/0/27_15_21_78309f29cd87c7cc377394e7eff7451a_1558941691349.jpg/420", "name":"早安,亿万萌妻", "site":"qq", "source_name":"腾讯漫画", "source_url":"https://ac.qq.com/Comic/ComicInfo/id/642093", "status":"" } ] }
|
1.7 聚合搜索
1
| GET /aggregate/search?name={name}&site={site}
|
请求示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| curl "http://127.0.0.1:8000/aggregate/search?name=海贼&site=bilibili,u17" { "list":[ { "comicid":24742, "cover_image_url":"http://i0.hdslb.com/bfs/manga-static/7bcf22ed4904a4346c7aa33887be0e6540d5908f.png", "name":"航海王", "site":"bilibili", "source_name":"哔哩哔哩漫画", "source_url":"https://manga.bilibili.com/m/detail/mc24742", "status":"连载" }, { "comicid":"53210", "cover_image_url":"https://cover.u17i.com/2016/06/3531898_1465634794_j1xJ1WwX0zh3.small.jpg", "name":"当火影遇上海贼", "site":"u17", "source_name":"有妖气", "source_url":"https://www.u17.com/comic/53210.html", "status":"" } ] }
|
1.8 根据 url 获取 comicid
请求示例
1 2 3 4 5 6
| curl "http://127.0.0.1:8000/tools/urlinfo?url=https://www.u17.com/comic/53210.html" { "comicid": "53210", "site": "u17", "url": "https://www.u17.com/comic/53210.html" }
|
1.9 获取所有可用的站点配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| GET /crawler/config curl "http://127.0.0.1:8000/crawler/config" { "configs": [ { "r18": false, "site": "acg456", "source_index": "http://www.acg456.com/", "source_name": "ACG肆伍陆" }, { "r18": false, "site": "bilibili", "source_index": "https://manga.bilibili.com/", "source_name": "哔哩哔哩漫画" }, ... ] }
|
2.0 API 管理相关
2.x 下的接口,只是实验功能,只能用于单点,多点部署的话不适用
2.x 下面的接口,需要登录校验,用户名和密码可以在 config.py
中的 USERS
配置,若留空则不用验证
登录: POST /user/login?next=
- username: 用户名
- password: 密码
登出: GET /user/logout?next=
获取用户信息: GET /user/info
2.1 添加到异步任务
- site: 站点
- comicid: 漫画 id
- params: json 字符串
1 2 3 4 5 6 7 8 9 10
| { "chapters": "1,2,3", "is_download_all": true, "is_gen_pdf": true, "is_gen_zip": true, "is_single_image": true, "quality": 95, "is_send_mail": true, "receivers": "123@qq.com,456@qq.com" }
|
- chapters: 下载的章节数 默认下载最新一集
- is_download_all: 是否下载全部 默认否
- is_gen_pdf: 是否生成 pdf 文件 默认否
- is_gen_zip: 是否生成 zip 文件 默认否
- is_single_image: 是否生成单图文件 默认否
- quality: 生成的单图图片质量 默认 95
- is_send_mail: 是否发送邮件 默认否
- receivers: 邮件接收者,多个以逗号隔开,不传默认发送到配置文件里的收件人
注意: 生成 PDF 需要安装额外依赖,pip install img2pdf 或 pip install reportlab
请求示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| curl 'http://127.0.0.1:8000/manage/task/add?site=qq&comicid=505430¶ms={"chapters": "1","is_download_all":false}' { "data": { "comicid": "505430", "cost_time": 0, "create_time": "2020-11-27 21:17:18", "id": 1, "name": "航海王", "params": {}, "reason": "", "site": "qq", "start_time": "2020-11-27 21:17:18", "status": "运行中", "update_time": "2020-11-27 21:17:18" } }
|
2.2 查看任务列表
1
| GET /manage/task/list?page={page}
|
若任务超过 10min,任务状态还没变成完成 / 失败,可能需重新添加异步任务
请求示例
1
| curl "http://127.0.0.1:8000/manage/task/list?page=1"
|
2.3 查看站点 cookies
1
| GET /manage/cookies/{site}
|
请求示例
1
| curl "http://127.0.0.1:8000/manage/cookies/qq"
|
2.4 更新站点 cookies
1
| POST /manage/cookies/{site}
|
请求示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| curl -XPOST "http://127.0.0.1:8000/manage/cookies/qq" \ -H "Content-Type: application/json" -d \ '{ "cookies": [ { "domain": ".ac.qq.com", "name": "xxx", "path": "/", "secure": false, "value": "1604080000" } ], "cover": false }'
|
2.5 查看站点代理配置
1
| GET /manage/proxy/{site}
|
请求示例
1
| curl "http://127.0.0.1:8000/manage/proxy/qq"
|
2.6 设置站点代理
1
| GET /manage/proxy/{site}?proxy={proxy}
|
请求示例
1
| curl "http://127.0.0.1:8000/manage/proxy/wnacg?proxy=socks5://127.0.0.1:1080"
|
站点收录情况
漫画站点
R18
图集
其它站点(未收录)