Skip to content

Latest commit

 

History

History
146 lines (106 loc) · 6.16 KB

script.md

File metadata and controls

146 lines (106 loc) · 6.16 KB

有关此脚本集的想法/建议/交流等等,可以在github上的Discussions进行讨论

须知

脚本目录树: script目录

utils
  ├── script
        ├── __init__.py
        ├── conf.yml                  # 此目录下的所有脚本配置引用,没上传至git,需要自创建
        ├── extra.py                  # 作为单个简单类爬虫使用
        ├── image  
             ├── __init__.py  
             ├── kemono.py            # 网站有如右相关资源 patreon/fanbox/fantia 等
             ├── kemono_expander.py   # 基于每个作者对作品集取名习惯(标题是颜文字表情之类的见怪不怪了)进行筛选(类kemono网站共用)
             ├── nekohouse.py         # 大概就是 kemono 的克隆网站
             ├── saucenao.py          # saucenao 著名的二次元以图搜图网站
        └── script.md

配置文件 utils/script/conf.yml (自行创建)

kemono:
  sv_path: D:\pic\kemono
  cookie: eyJfcGVybWaabbbW50Ijxxxxxxxxxxxxxxxxxxxxx   # 需要登录的账号 https://kemono.su/api/schema, F12打开控制台查看cookies, 字段名为 `cookie`
  redis_key: kemono
  
nekohouse:
  sv_path: D:\pic\nekohouse
  cookie: eyJfcGVybWaabbbW50Ijxxxxxxxxxxxxxxxxxxxxx   # 需要登录的账号 https://nekohouse.su, F12打开控制台查看cookies, 字段名为 `session`
  redis_key: nekohouse

redis:
  host: 127.0.0.1
  port: 6379
  db: 0
  password:

注意

运行此目录下脚本的部分第三方依赖并不列在requirements.txt, 即绿色安装包的python运行环境不足以运行
因为设计当初没考虑进GUI主界面功能,是作为能单独运行的脚本集合

此脚本目录下的脚本需要具备些少后端技能如 redis

暂无开发GUI界面打算


以下内容 基于以上须知

内容

1. kemono

无需代理,基于账号对作者的收藏,运行时指定作者_平台作品创建时间,来限制一定量的任务 (kemono一个png能几十M,不过滤任务几个T都不够用)

过滤补充: kemono_expander.py 内置部分作者命名习惯的过滤,例如keihh_patreon ,其作品通常有无印/v2/v3,而v3会包括无印/v2,这情况就要过滤掉无印/v2
鉴于作品集命名杂七杂八的,大概率需要对每一位作者做过滤,引用在kemono.py Kemono.step1_tasks_create_by_favorites._filter

目录结构及其使用是基于 comic_viewer 项目而调整成这样的

限制文件大小 100Mb 以下,在 Kemono.file_size_limit


运行/操作

启动 redis 服务;设置配置如上conf.yml内容;

环境:随意python3,缺什么包就pip装一下

python kemono.py 需要结合注释拆分使用

  1. 获取任务
    loop.run_until_complete(obj.step1_tasks_create_by_favorites(
        '2024-01-01', ListArtistsInfo(['Gsusart2222'])))
    loop.run_until_complete(obj.temp_copy_vals(restore=False))
  2. 处理任务
        tasks = loop.run_until_complete(obj.step2_get_tasks())
        sem = asyncio.Semaphore(7)
        loop.run_until_complete(obj.step2_run_task(sem, tasks))

运行过后所得目录树

  kemono_path
    ├── __handle                  # 爬资源本身没有,comic_viewer 项目生成的,处理save/remove
    ├── __sorted_record           # 文件/图片下载时无序也不再是第n页这种命名,此时生成任务时记录列表顺序,用于 comic_viewer 人类顺序阅读使用
          └── a5p74od3_fanbox
               ├── [2023-01-01]今年もよろしくお願いします。.json    # 作品集顺序记录
    
    ├── MだSたろう_fanbox          # 分隔开的这部分均为作者_平台\作品集\图片or文件,命名格式:作者_平台
    ├── a5p74od3_fanbox
    ├── keihh_fanbox
    ├── keihh_patreon
    ├── サインこす_fanbox
    ├── ラマンダ_fantia
           ├── [2020-07-30]アカリちゃんとクエスト
           ├── [2021-01-29]白血球さんお願いします!
           └── [2022-07-30]ノノ水着                                  # 作品集,命名格式:[作品创建时间]kemono的标题名
                    ├── 85fe7ae7-dfea-4ef2-816d-46f378ee2f80.png    # 该作品集的一个文件/图片
                    ├── c57e9b35-608f-471f-8a34-2e56ead4dc70.png
    
    ├── blacklist.json            # 下载过滤名单,避免重复下载用(comic_viewer阅读过后操作会加进去 或 手动添加)
    └── record.txt                # comic_viewer 阅读后操作记录

2. saucenao 二次元的以图搜图

Danbooru无需代理,Yande(这个指yande.re)需要代理,其他图源没做,感觉也没比Yande更全更高清的了, 没代理就去掉imgur_moduleYande
有时也会搜出kemono的,知道作者名之后就用上面的kemono脚本吧

saucenao限制30秒搜3张图,有它的账号也才30秒4张没什么好说的

相似度阈值可自行各个图源分别调整,搜索similarity_threshold更改。 匹配的图源是imgur_module的值(列表) 从左到右


运行/操作

  1. 随意创建个目录例如 D:\pic,丢几张图进去,脚本的get_hd_img的位置实参改成该目录,然后跑脚本python saucenao.py
  2. 成功后会保存在D:\pic\hd里,对照下文件大小之类的,合适就回去把原文件删了(不然下次跑会重复做前面的任务)

// # TODO(2024-10-02): 重复任务用pathlib.exists()查一下hd文件夹内的,并用saucenao.json记录数据

进阶:可以在很多图像的目录上运行脚本,只要在get_hd_img加上参数first='a.png',就会以文件大小顺序a.png 开始进行搜图
不过同样要对比和手动删源文件,顺序可以自己调代码在get_tasks__ = sorted(...key


3. nekohouse 类似kemono的补充

除了一些配置等从kemono变为nekohouse之外,使用方面与kemono用法别无二致,参照以上kemono即可