Skip to content
This repository has been archived by the owner on Jul 2, 2019. It is now read-only.

半次元coser图片批量下载,支持分类保存、断点续传、无重复下载、更新时只下载最新发布,不与本地重复

Notifications You must be signed in to change notification settings

tankeryang/banciyuan-downloader

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

60 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

banciyuan-downloader v2.2

因为一些不可抗力...所以该项目archive了,在此感谢使用过该脚本的朋友,和提出问题的朋友

请勿用于商业用途 尊重coser的版权 转载图片请注明出处

此脚本实现了cos网站半次元 自定义coser高清无码 图片批量下载,并保存到 自定义路径

实现功能

  • 根据coser_id批量下载某个coser发布的作品的所有图片
  • 图片保存在以 coser名 命名的文件夹内
  • 图片按 coser发布的作品 分文件夹保存,文件夹命名以 作品标签 拼接而成
  • 若有相同标题的作品,则命名文件夹时会加上 顺序编号后缀 防止文件名冲突
  • 图片命名格式为%num%.jpg/%num%.png,其中%num%为从1开始的 编号
  • 支持智能下载 本地没有的作品,本地已有的作品 不会 重复下载
  • 支持 断点续传 (从断连作品的下一个作品开始下载,若断连作品没下载完,则会丢失一部分断连作品的图片,其余均不影响)
  • 支持超时自动重试
  • 支持下载指定作品
  • 根据频繁I/O进行 多进程优化
  • 不支持无半次元账号的下载,因为有 只有粉丝可见 的限制,最好注册一个半次元账号
  • 只有粉丝可见的作品需关注该coser后方可下载
  • 暂时不支持只下载COS类的作品,因为半次元改版后没有对COS绘画之类的做分类,都在同一url

依赖的库

我的测试环境:

  • python 3.6.4
  • beautifulsoup 4.5.3
  • requests 2.13.0
  • lxml 3.7.2

如何使用

  • 先clone代码

    git clone https://github.com/tankeryang/banciyuana-downloader.git
  • 直接运行run.py

    先执行:

    python run.py

    后续步骤参考Usage

  • 自定义实现

    因为进行了 封装,所以可以自行实例化一个Downloader对象来调用方法实现功能,下面给出简单例子:

    分部执行

    from bcy_downloader import Downloader
    
    # 实例化Downloader对象
    # coser_id: 770554
    # 下载目录: E:\banciyuan (注意: windows下需按照windows特有的 <反斜杠 \> 来分隔路径,如 E:\xxx\pictures\banciyuan)
    dl = Downloader(coser_id='770554', bcy_home_dir='E:\\banciyuan')
    
    # 获取作品url列表
    dl.get_post_url_list()
    
    # 或者自定义下载作品列表
    dl.post_url_list = ["https://bcy.net/item/detail/6558754255610577155", "https://bcy.net/item/detail/6554677621064466692"]
    
    # 查看作品url列表
    print(dl.post_url_list)
    
    # 获取每个作品下所有图片url,得到download_data
    dl.get_pics_url_list()
    
    # 查看download_data
    # 格式如下
    # {
    #   '$(post_url)':
    #   {
    #     'post_name': $(post_name),
    #     'pics_url_list': $(pics_url_list)
    #   }
    # }
    # 例子:
    # {
    #   "https://bcy.net/item/detail/6558754255610577155":
    #   {
    #     'post_name': "碧蓝航线-COS-舰娘-场照-返图-cp22-三笠",
    #     'pics_url_list': [
    #       'https://img5.bcyimg.com/user/770554/item/c0je3/63y6vuq8hhgfmge7nrqcaqkpspyfszj5.jpg?1',
    #       'https://img9.bcyimg.com/user/770554/item/c0je3/esdrtvchzzkfzm74ezd8idx04ennjjfr.jpg?2',
    #       ......
    #       'https://img9.bcyimg.com/user/770554/item/c0je3/zfiyptpdcpasyz0itzh7ndtmpiysw8uy.jpg?9'
    #     ]
    #   }
    # }
    print(dl.download_data)
    
    # 根据download_data获取图片
    dl.get_pics()

    一键执行

    from bcy_downloader import Downloader
    
    # 实例化Downloader对象
    # coser_id: 770554
    # 下载目录: E:\banciyuan (注意: windows下需按照windows特有的 <反斜杠 \> 来分隔路径,如 E:\xxx\pictures\banciyuan)
    dl = Downloader(coser_id='770554', bcy_home_dir='E:\\banciyuan')
    
    # 自动下载
    dl.run()

注意

下载时会在 每个作品对应的文件夹 里建一个url.local文件,里面写入的是该作品对应的url。该文件主要用于 判断本地是否已经下载过该url对应的作品,以实现智能无重复下载,请不要随意删除

同时因为取消了登录的功能,所以 只有粉丝可见的作品 会跳过不进行下载,但是也会在本地建一个 xxx_粉丝可见 的文件夹,xxx作品url后面的数字,文件夹下面一样会新建url.local文件,里面保存的是该作品对应的url

Release 版本的exe可执行文件可直接运行

Usage

以下载coser犬神洛洛子发布的所有作品的cos图为例

  • 图1:coser主页 coser_page

  • 图2:coser发布的作品页 post_page

  • 获取coser id: 770554(上图1箭头所指)

  • 运行run.py脚本: python run.py

  • Enter banciyuan coser id:: 输入coser id770554

  • Enter banciyuan home path (i.e. E:\banciyuan):: 输入半次元图片保存主目录(如E:\banciyuan

  • downloading...:等待下载完成

图片会 按发布的作品分类 保存在如下路径:{banciyuan_home_path}/{coser_name}/{post_name}/

其中:

  • {banciyuan_home_path}为图片保存的主目录名

  • {coser_name}为coser名

  • {post_name}为coser发布的作品名

如下图: home_folder coser_folder post_folder

FAQ

有何疑问可发布 issue ,本人会尽量及时查看

About

半次元coser图片批量下载,支持分类保存、断点续传、无重复下载、更新时只下载最新发布,不与本地重复

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages