Skip to content
SeaHOH edited this page May 14, 2022 · 52 revisions

YoukuDownLoader general help

简介

  • 基本结构

    YoukuDownLoader 分为两个部分

    1. library module ykdl: <PATH>/ykdl

    2. scripts module cykdl: <PATH>/cykdl,同时也是调用 ykdl 的编程示例

安装和升级

准备工作

  • 本项目采用 Python 编写,兼容 Python 3.5 及以上版本,可通过包管理器或官网安装和更新

  • 本项目的录制和合并功能依赖于 FFmpeg,请确保您已安装 FFmpeg 并将其添加到了系统环境变量的path

    Windows 用户可访问以下链接获取最新稳定版

    当前仅提供64位 https://www.gyan.dev/ffmpeg/builds/
    当前仅提供64位 https://github.com/BtbN/FFmpeg-Builds/releases
    提供64位与32位 https://github.com/AnimMouse/ffmpeg-stable-autobuild/releases

  • 本项目的播放功能是调用外部播放器实现的,最佳适配为 mpv

  • 本项目依赖于如下 Python 库

    • 基本功能

      m3u8 (用于 m3u8 解析)
      └─iso8601
      jsengine (用于查找系统内可用的 JS 引擎,并用之运行 JS 脚本)
      colorama (仅用于支持 Windows 系统控制台彩色打印输出,非 Windows 则忽略)
      pycryptodome (加密相关) <暂时无用,移除以节约安装时间>

    • 扩展功能

      [proxy]: ExtProxy (用于支持 HTTPS 和 SOCKS 代理)
      [br]: BrotliCFFI (用于支持解压缩 Brotli 格式的 HTTP 响应)
      [js]: quickjs (小巧可靠的 Javascript 引擎)
      [net]: [proxy,br]
      [all]: 以上所有

    * 如果不安装直接使用源码,需要先自行安装好上述 Python 库 (扩展功能子依赖未列出),否则 ykdl 无法正常运行。
    * 使用 pip 安装则会自动解决基本功能的依赖,扩展功能的依赖需在安装时指定, 项目参数和依赖参数之间不能有空格,依赖名称以逗号分割同样不能有空格

    pip3 install ykdl[all]                    <-- 包名
    pip3 install <PATH>/ykdl.zip[net]            <-- 压缩包
    pip3 install <PATH>/ykdl[proxy,js]        <-- 文件夹
  • Android 上的 Termux (以下内容在 Termux 0.117 下测试通过)

    * pkg 安装时会安装相应依赖,依据当前版本可能会有不同变化

    pkg install clang ffmpeg getconf python
    pip3 install quickjs        <-- 这是 Python 绑定,也可以用 pkg 安装独立版本
    termux-setup-storage        <-- 开启内存读写权限

    pkg 中的 mpv 只支持音频播放,如果需要视频播放功能推荐安装 mpv-android,然后配置 mpv 执行文件

    curl -L -o /usr/bin/mpv https://gist.github.com/SeaHOH/ce761ad8f628f9150c64066da26a45c6/raw/7ec7591a75442523eeac65d0dfcae706bfef5868/mpv.py
    chmod +x /usr/bin/mpv       <-- 配置运行权限
  • 安装工具

    • 本项目已经在 PyPI 上注册,强烈推荐使用 Python 官方包管理工具 pip 来安装本项目,大部分时候 Python 已经包含 pip,你可以通过以下命令来验证

      python3 -m pip --version
    • 如果 pip 尚未安装,请参照以下的方法安装

      从网络安装,最新版本

      curl https://bootstrap.pypa.io/get-pip.py | python3
      wget https://bootstrap.pypa.io/get-pip.py -O - | python3 -

      从当前安装版本中释放,固定版本

      python3 -m ensurepip
    • 如果 pip 不是最新版本,请使用以下命令更新

      python3 -m pip install pip --upgrade
      python3 -m pip install setuptools --upgrade

    * 此处只介绍使用 pip 的使用方法
    * 通常非 Windows 用户需要添加--user参数以安装到用户目录, 否则会安装到系统目录,这需要sudo权限,以下安装升级同理

安装

  • 从 PyPI 安装发布版本

    pip3 install ykdl

    * 添加--pre参数可以安装预览版本。注意,这不等同于最新开发版本!

  • 从 GitHub 安装开发版本

    • 直接使用 pip 下载

      pip3 install https://github.com/SeaHOH/ykdl/archive/master.zip
    • 使用 pip + git 下载

      pip3 install git+https://github.com/SeaHOH/ykdl.git
    • 使用 git 下载

      git clone https://github.com/SeaHOH/ykdl.git
      pip3 install <PATH>/ykdl
      
    • 使用任意工具下载 master.zip

      pip3 install <PATH>/master.zip

* 扩展依赖的安装请参见上方扩展功能说明添加参数

升级

  • 从 PyPI 升级到最新发布版本

    pip3 install ykdl --upgrade

    * 添加--pre参数可以升级到预览版本。注意,这不等同于最新开发版本!

  • 从 GitHub 升级到最新开发版本

    • 直接使用 pip 下载

      pip3 install https://github.com/SeaHOH/ykdl/archive/master.zip --force-reinstall --no-deps
      pip3 install https://github.com/SeaHOH/ykdl/archive/master.zip --upgrade
    • 使用 pip + git 下载

      pip3 install git+https://github.com/SeaHOH/ykdl.git --force-reinstall --no-deps
      pip3 install git+https://github.com/SeaHOH/ykdl.git --upgrade
    • 使用 git 下载,如之前未 clone 过,请参照安装说明替换第一行命令

      cd <PATH>/ykdl && git pull
      pip3 install <PATH>/ykdl --force-reinstall --no-deps
      pip3 install <PATH>/ykdl --upgrade
      
    • 使用任意工具下载 master.zip

      pip3 install <PATH>/master.zip --force-reinstall --no-deps
      pip3 install <PATH>/master.zip --upgrade

* 扩展依赖的升级请参见上方扩展功能说明添加参数

安装之后的文件分布

  • library module 和 scripts module 都安装在<PYTHON_LIBRARY_PATH>/site-packages 例如:

    /usr/lib/python3/site-packages/ykdl/
    /usr/lib/python3/site-packages/cykdl/
    
    ~/.local/lib/python3/site-packages/ykdl
    ~/.local/lib/python3/site-packages/cykdl
    
    C:\Python3*\Lib\site-packages\ykdl\
    C:\Python3*\Lib\site-packages\cykdl\
    
  • 可执行文件

    通过 pip 或 setup.py 安装,Setuptools 会为cykdl生成可执行文件

    /usr/bin/ykdl
    
    ~/.local/bin/ykdl
    
    C:\Python3*\Scripts\ykdl.exe
    

使用

  • 在 shell 中执行

    ykdl或者python3 -m cykdl

  • 系统代理

    ykdl 默认使用当前系统代理,但优先读取以下环境变量作为代理

    http_proxy
    https_proxy
    

    系统代理和环境变量一般在系统配置中设置 (全局),环境变量也可以在 shell 中设置 (仅当前 shell 有效)

    set http_proxy=HOST:PORT      <--
    set https_proxy=HOST:PORT     <-- Windows
    
    export http_proxy=HOST:PORT   <--
    export https_proxy=HOST:PORT  <-- Linux

    * 系统代理一般仅支持 HTTP 代理,如需要使用 HTTPS 和 SOCKS 代理 (需安装扩展依赖 [proxy]) 可通过--proxy参数指定,不指定协议时默认 HTTP 代理

  • 使用帮助

ykdl -h
usage: ykdl.py [-h] [-l] [-i] [-J] [-F FORMAT] [-o OUTPUT_DIR]
               [-O OUTPUT_NAME] [-p PLAYER] [-k] [-c CERTS [CERTS ...]]
               [--proxy [SCHEME://]HOST:PORT | system | none] [-t SECONDS]
               [--fail-retry-eta SECONDS] [--no-fail-confirm] [--no-merge]
               [--no-sub] [-s INDEX_NUM] [-j NUM] [--debug]
               video_urls [video_urls ...]

YouKuDownLoader(ykdl 1.8.1), a video downloader. Forked from you-get
0.3.34@soimort

positional arguments:
  video_urls            video urls
                        要下载视频的网址,包含特殊符号时请用引号包裹
                        留空时进入交互模式

optional arguments:
  -h, --help            show this help message and exit
                        显示本帮助信息并退出
  -l, --playlist        Download as a playlist
                        将所给的视频 URL 作为播放列表进行下载
  -i, --info            Display the information of videos without downloading
                        只显示视频信息而不进行下载
  -J, --json            Display info in json format
                        以 json 格式显示视频信息
  -a, --show-all        Display all available video format before downloading
                        下载前显示所有可用的视频格式
  -F FORMAT, --format FORMAT
                        Video format code, or resolution level 0, 1, ...
                        指定视频格式代码 (具体查看 -i 输出)或级别,默认最高清晰度
  -o OUTPUT_DIR, --output-dir OUTPUT_DIR
                        Set the output directory for downloaded videos
                        指定下载视频的保存目录
  -O OUTPUT_NAME, --output-name OUTPUT_NAME
                        Downloaded videos with the NAME you want
                        指定下载视频的文件名
  -p PLAYER, --player PLAYER
                        Directly play the video with PLAYER like mpv
                        直接调用播放器而不是下载,推荐使用 mpv
                        支持完整路径和参数传递,使用时请用引号包裹
  -k, --insecure        Allow insecure server connections when using SSL
                        允许不安全的 SSL 连接
  -c CERTS [CERTS ...], --append-certs CERTS [CERTS ...]
                        Append additional certs, used to verify SSL handshak,
                        note that video urls can't follow this argument
                        追加用于验证 SSL 握手的证书,支持多个参数因而
                        视频网址不能跟随在此参数后面,请用引号分别包裹,
                        此设置可用于内置下载,但不会传递给 FFmpeg 和播放器
  --proxy [SCHEME://]HOST:PORT | system | none
                        Set proxy for http(s) transfer. default: use system
                        proxy settings
                        指定网络代理,默认使用系统代理设置,
                        HTTP 代理会传递给播放器,即设置播放器的系统代理环境变量
  -t SECONDS, --timeout SECONDS
                        Set socket timeout, default 60s
                        设置网络传输超时时长,默认为 60 秒
  --fail-retry-eta SECONDS
                        If the number is bigger than ETA, a fail downloading
                        will be auto retry, default 3600s, set 0 to void it
                        如果设置数值大于剩余完成时间则自动重试失败的下载,
                        默认 3600 秒,设置 0 则不重试
  --no-fail-confirm     Do not wait confirm when downloading failed, for run
                        as tasks (non-blocking)
                        重试失败的下载时无需等待人工确认,非阻塞,适合任务式调用
  --no-merge            Do not merge video slides
                        不合并视频分片
  --no-sub              Do not download subtitles
                        不下载字幕文件
  --no-http-cache       Do not allow HTTP cache
                        不使用 HTTP 缓存
  -s INDEX_NUM, --start INDEX_NUM
                        Start from INDEX to play/download playlist,
                        default -1, index at media of current URL
                        配合 --playlist 使用,从指定的位置开始播放或下载列表,
                        默认值 -1,从当前网址对应的位置开始
  -j NUM, --jobs NUM    Number of jobs for multiprocess download
                        指定最多可同时下载的任务数量
  --debug               Print debug messages from ykdl
                        打印调试信息