Metadata-Version: 2.1
Name: sole_bili_get
Version: 0.0.13
Summary: A simple tool to download videos from bilibili{*≧∀≦}
Home-page: https://github.com/muggledy/bili-get
Author: muggledy
Author-email: zgjsycfndy2015@163.com
License: MIT
Description: # Bilibili视频下载器
        
        <a alt="null">![](https://img.shields.io/badge/python-3.6+-green)&nbsp;![](https://img.shields.io/badge/platform-Windows%20%7C%20Linux-pink)&nbsp;<a href="https://pypi.org/project/sole-bili-get/" alt="null"><img src="https://img.shields.io/github/v/release/muggledy/bili-get"/></a></a>
        
        ## 下载
        
        ### 方式一
        
        ```console
        pip install sole-bili-get -i https://www.pypi.org/simple/
        ```
        
        PS（更新版本）：`pip install sole-bili-get -U`
        
        ### 方式二
        
        ```console
        git clone https://github.com/muggledy/bili-get.git
        python setup.py sdist bdist_wheel
        pip install dist\sole_bili_get-0.0.13-py3-none-any.whl //demo
        bili-get --help
        ```
        
        ## 使用
        
        ```console
        C:\Users\muggledy\Downloads>bili-get https://www.bilibili.com/video/BV1CY4y1F7hP
        output: C:\Users\muggledy\Downloads
          (origin url):https://www.bilibili.com/video/BV1CY4y1F7hP
               (title):p1_总耗时近一年！七爷带你一步到位看完昭和《奥特曼》系列全部345集怪兽及宇宙人们！_1初代奥特曼
                (desc):此视频送给希望一气看完昭和全奥的朋友们！
        (episodes num):7
             (quality):清晰 480P(id:32), 流畅 360P(id:16)
        selected download quality(MAX):32
        get danmu urls success for 7 episodes
        p1 danmu xml file is downloaded into C:\Users\muggledy\Downloads\bili_output\BV1CY4y1F7hP\p1_总耗时近一年！七爷带你一步到位看完昭和《奥特曼》系列全部345集怪兽及宇宙人们！_1初代奥特曼.xml
        start to download p1(video:清晰 480P,852x480,avc1.64001F_581618_29.412) from https://www.bilibili.com/video/BV1CY4y1F7hP/?p=1...
        100.00%|████████████████████| 下载完成【application/octet-stream】 84.96MB/84.96MB
        start to download p1(audio)...
        100.00%|████████████████████| 下载完成【application/octet-stream】 28.28MB/28.28MB
        ffmpeg merge success, save into C:\Users\muggledy\Downloads\bili_output\BV1CY4y1F7hP\p1_总耗时近一年！七爷带你一步到位看完昭和《奥特曼》系列全部345集怪兽及宇宙人们！_1初代奥特曼.mp4
        Note: this is a multi-episode video, you can download them all at once with --playlist
        ```
        
        - 默认是下载到当前工作路径，可以通过`-o`或`--output`指定输出目录，不存在则自动创建，譬如`bili-get https://www.bilibili.com/video/BV1CY4y1F7hP -o D:\workspace\bilibili`。这会在`--output`目录下产生两个文件夹：`bili_tmp/`和`bili_output/`，前者存放一些临时文件，用于记录多剧集视频的下载进度，如果下载过程中发生中断，重新执行命令可以继续下载过程（且对于尚未合成的剧集会尝试进行合成，除非指定`--nomerge`参数），后者则是视频、音频、封面、弹幕文件的输出文件夹
        
        - 对于多剧集视频，可以指定`--playlist`自动下载全部剧集，只要不删除对应的`bili_tmp/`临时文件，可以任意重复执行下载命令，如`bili-get https://www.bilibili.com/video/BV1CY4y1F7hP --playlist`，也不会重复下载，如果UP主新发布了剧集，则会继续下载
        
        - `-c`或`--cookie`用于指定您的B站Cookie信息，这样就可以下载1080P视频了
        
          ```console
          C:\Users\muggledy\Downloads>bili-get https://www.bilibili.com/video/BV1CY4y1F7hP -c "your cookie"
          output: C:\Users\muggledy\Downloads
            (origin url):https://www.bilibili.com/video/BV1CY4y1F7hP
                 (title):p1_总耗时近一年！七爷带你一步到位看完昭和《奥特曼》系列全部345集怪兽及宇宙人们！_1初代奥特曼
                  (desc):此视频送给希望一气看完昭和全奥的朋友们！
          (episodes num):7
               (quality):高清 1080P(id:80), 高清 720P(id:64), 清晰 480P(id:32), 流畅 360P(id:16)
          selected download quality(MAX):80
          get danmu urls success for 7 episodes
          p1 danmu xml file is downloaded into C:\Users\muggledy\Downloads\bili_output\BV1CY4y1F7hP\p1_总耗时近一年！七爷带你一步到位看完昭和《奥特曼》系列全部345集怪兽及宇宙人们！_1初代奥特曼.xml
          start to download p1(video:高清 1080P,1920x1080,avc1.640032_2344634_29.412) from https://www.bilibili.com/video/BV1CY4y1F7hP/?p=1...
          100.00%|████████████████████| 下载完成【video/mp4】 342.48MB/342.48MB
          start to download p1(audio)...
          100.00%|████████████████████| 下载完成【video/mp4】 28.28MB/28.28MB
          ffmpeg merge success, save into C:\Users\muggledy\Downloads\bili_output\BV1CY4y1F7hP\p1_总耗时近一年！七爷带你一步到位看完昭和《奥特曼》系列全部345集怪兽及宇宙人们！_1初代奥特曼.mp4
          Note: this is a multi-episode video, you can download them all at once with --playlist
          ```
        
          Cookie获取方式如下（方式一）：
        
          ![B站cookie获取方式](https://raw.githubusercontent.com/muggledy/bili-get/a14ab8d1d66f53ebcaae9c29c1e57688b30cde6d/bilibili_cookie.jpg)
        
          方式二：上图F12开发者工具中点击“Application”标签页，再依次点击“Storage”-“Cookies”-“https://www.bilibili.com”，找到“SESSDATA”字段，复制该字段值，填充构造如下字符串即可：
        
          ```
          bili-get {URL链接} -c "SESSDATA={字段值};CURRENT_QUALITY=112"
          ```
        
          ~~注：如果是Windows平台使用Chrome浏览器，可以指定`-c`参数为`chrome`，程序将自动从`./AppData/Local/Google/Chrome/User Data/default/Network/Cookies`读取B站的Cookie信息（其实就是获取上述SESSDATA字段值），譬如我们可以通过`bili-get https://www.bilibili.com/video/BV18G411D7FM -c chrome`命令下载1080p视频~~（由于最新版本的chrome更新了cookie的加密机制，新的加密密文是以"v20"为前缀，现有解密方式仅支持解密"v10"前缀密文，因此`-c chrome`参数已不可用 2024.10.4）
        
        - `-q`或`--quality`用于指定要下载的视频质量（清晰度），可选值有`MAX`（最高质量，缺省值）、`MIN`（最低质量）、`MANUAL`（手动选择视频质量）
        
        - 支持多线程下载，`-t`或`--threads`用于指定额外的下载线程数（缺省值为0，表示不启用多线程），譬如指定`-t 3`，加上主线程，总计会有1+3=4个线程同时下载单个视频二进制文件，不同线程分别下载视频的不同部分，并且只有在平均每个线程被分派下载的字节数>4M时才会真的启用多线程，即对于小文件，仍是采用单个主线程下载
        
        - `--nomerge`表示是否自动合成下载下来的音视频文件，默认合成，但需要提前下载[ffmpeg](https://ffmpeg.org/download.html)工具（如[windows版本](https://www.gyan.dev/ffmpeg/builds/)）并将其路径添加到`PATH`环境变量
        
        - `--force`表示强制重新下载视频，如果没有指定`--playlist`参数，则只是重新下载当前剧集，否则会直接删除`bili_tmp/`临时文件，重新下载全部剧集，但不会立即删除全部已下载音视频文件，而是覆盖更新
        
        - `--debug`用于在控制台输出全部debug日志信息，不指定该参数，也会将日志输出到`bili_tmp/download.log`中以备查阅
        
        - 默认随视频会下载封面图片
        
        - 默认随视频会下载弹幕XML文件，可以使用[danmu2ass](https://github.com/ikde/danmu2ass)做弹幕格式转换，双击Danmu2Ass.sln，用Visual Studio打开并编译，在项目Danmu2Ass目录下会生成bin文件夹，进入其中的Debug文件夹，可以看到一个Kaedei.Danmu2Ass.exe可执行文件，将视频和弹幕文件一块拖动到该可执行文件图标上去即可生成ASS字幕文件，再通过[potplayer](https://potplayer.daum.net/)打开视频即可自动加载字幕
        
        - 对于多剧集视频，支持一种特殊的多进程下载方式：开启多个终端窗口，分别执行同一个下载命令`bili-get https://www.bilibili.com/video/BV16S4y1C7ad --playlist`，不同的bili-get进程将互相协作各自选取不同的剧集号进行下载。原理简单来说就是：本地存储了一个临时文件用于记录当前多剧集视频的下载进度，将该文件抽象为一个待下载剧集号池子，不同bili-get进程通过文件锁的方式互斥地访问该临时文件、即互斥地从待下载剧集号池中锁定各自想要下载的剧集号，每个进程每次只会从池子中选取一个下载任务，下载完再从池子中选取另一个任务。另注意，多进程下载不支持`--force`参数，其行为未定义
        
        ## 致谢
        
        如果觉得本工具有用，请点个Star呗~，有bug或有改进意见请提issue，thx！
Platform: UNKNOWN
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: POSIX
Requires-Python: >=3.6
Description-Content-Type: text/markdown
