二次元图站爬虫的 TypeScript 实现,目前图站包括 sankaku
kemono
manhuagui
(未来会支持更多图站)
在写了在写了
我好懒我好懒我好懒我好懒我好懒我好懒我好懒我好懒我好懒我好懒我好懒
本项目使用CLI
与用户进行信息交互,通过指令方式实现具体功能
指令可分为全局指令
与图站指令
全局指令
为最优先等级的指令, 任何图站指令
与之重叠的均会被判无效图站指令
为次要指令, 内置在各个图站插件
中, 由全局指令
作为引导接入, 内部自行处理
项目所有代码可分为四个部分(注意全部均在src
文件下)
- 初始化文件(
init.ts
) 在用户交互界面创建前运行, 执行各种初始化(如redis
数据库连接,插件
与指令文件
热加载初始化等) - 主程序文件(
index.ts
) 进行指令搜索与指令处理之间的衔接 - 插件(
plugins
文件夹下所有文件) 所有指令的入口, 包括图站爬虫核心文件与全局设置, 均已实现热加载功能 - 依赖(
lib
文件夹下所有文件)插件
中所用到的API
等内容的实现, 以及常用函数(如sleep
等)
注意: 使用前请确认
redis
数据库被正常启用, 否则将无法使用脚本
所有以<>
包裹的内容为必填内容, 以[]
包裹的内容为选填内容, 包裹的内容为小写时则代表有无均对指令无影响, 介绍时以包裹的内容为代称, 使用时只需填入对应的内容, 无需包裹的符号(<>
或[]
)
注意: 此命令设置的为
socks
代理, 并非http
指令: p[ort] <PORT> [IP]
介绍:
PORT
内容为代理所需端口- 当
IP
为空时, 代理所使用的地址默认为本地地址(127.0.0.1
) - 当
IP
不为空时, 代理所使用的地址为IP
中内容 - 特别的: 当
IP
中内容为0
时, 将会取消使用代理
例:
指令 | 解释 |
---|---|
p 10808 |
使用地址127.0.0.1 端口10808 作为代理 |
p 192.168.1.5 10808 |
使用地址192.168.1.5 端口10808 作为代理 |
p 0 |
取消使用代理 |
指令: c[hange] <SITE>
介绍:
SITE
为选择的站点, 使用时可以使用首字母, 也可使用完整名称- 可用站点在
config/opts.json
的site
中以数组方式存储. 其中的name
为站点完整名称,db
为站点所使用的数据库数字编号 - 使用后只能更改选择, 不可取消
例:
指令 | 解释 |
---|---|
c k |
切换站点到kemono |
change kemono |
切换站点到kemono |
c m |
切换站点到manhuagui |
change manhuagui |
切换站点到manhuagui |
指令: exit
或quit
介绍:
- 退出程序, 并保存数据库
注意: 此处文档尚未完成
注意: 此时命令有三种状态: 下载
/校验
/重命名
, 但SITE
与UID
为必选,分别代表画师所代表的站点名称与画师id
, 指令的可用性见下表
状态 | 可用性(每栏首行是可用指令,其余为解释 ) |
---|---|
下载 |
d[ownload] <SITE> <UID> -t <TIME> [-n NEXT] [-l LOG_LEVEL] 此模式下 TIME 为必填, 需要输入本次下载的次数, 为-1 时代表全部下载NEXT 代表从指定位置开始下载, 填入帖子的id , 如未找到将略过全部 |
校验 |
d[ownload] <SITE> <UID> -v [-f] 此模式下将会根据数据库中存储的内容, 开始进行文件校验, 已经校验过的将会跳过. 若有参数 -f , 将会进行不跳过的强制校验 |
重命名 |
d[ownload] <SITE> <UID> -r <RENAME_LEVEL> 此模式下将会对文件进行重命名, 作为打包的最后一步 RENAME_LEVEL 中内容为更改后文件命名模式, 有short 和full 两种模式选择 |
例:
指令(使用时必须切换到kemono站点 ) |
解释 |
---|---|
d fanbox fantia 14648 -t -1 |
下载fantia 站点上画师id 为14648 的所有文件 |
d fanbox fantia 14648 -t 10 -n 1503200 |
下载fantia 站点上画师id 为14648 的文件, 从1503200 开始, 下载10 次 |
d fanbox fantia 14648 -v |
开始对下载过的fantia 站点上画师id 为14648 的文件进行校验 |
d fanbox fantia 14648 -v -f |
开始对下载过的fantia 站点上画师id 为14648 的文件进行不跳过的强制校验 |
d fanbox fantia 14648 -r full |
开始对下载过的fantia 站点上画师id 为14648 的文件重命名为完整名称 |
d fanbox fantia 14648 -r short |
开始对下载过的fantia 站点上画师id 为14648 的文件重命名为短名称 |