youtube-dl 接口简介

  • 0x00. youtube-dl
  • 0x01. 使用说明
  • 0x02. python接口
  • 0x03. 开发注意事项

0x00. youtube-dl

youtube-dl 是一个通过命令行下载视频的工具,其不仅支持 youtube 网站的视频下载,还支持上百个不同的视频网站。用户可以在官方网站上下载 Windows(exe) 和 Linux(tar.gz) 的版本,之后解压并使用对应的命令即可。
对于部分需要使用 youtube-dl 进行开发并且调用其接口为其他功能服务的用户而言,可以在 Github 上找到源码并且进行二次开发,也可以直接调用其 python 接口。关于如何在命令行直接使用打包好的 youtube-dl 工具有许多的文档进行介绍,这篇文章主要是对 youtube-dl 提供的一些接口参数及其功能进行说明,如有错误或不严谨的地方欢迎批评指正。

0x01. 使用说明

Linux/Mac 用户可以直接用 pip 安装 youtube-dl 的最新版本:

sudo pip install youtube-dl
sudo -H pip install --upgrade youtube-dl

或 ( Homebrew )

brew install youtube-dl

:youtube-dl 的库版本更新很快,一定要将 youtube-dl 升级到最新版本,因为其解析器很可能会随着版本更新发生变动,导致解析结果不正确或者程序崩溃 ( 在报错时可以试试更新能不能解决 ) 。

0x02. python接口

在下载 youtube-dl 源码后,可以看到 /docs/module_guide.rst 是一个简单的接口介绍文档,但只有最简单的三四个 api 的使用说明,本文会在这个的基础上加上作者在使用过程中自己用到的接口和参数。

  1. 初始化接口
    在进行下载之前,youtube-dl 需要初始化一个可以看作是下载器的类,可以在初始化时指定之后使用的解析器、解析格式、是否需要使用代理等。
    文档中只给出了使用 YoutubeDL() 进行初始化的方式,但这个函数还可以有一个字典形式的输入参数,如第2行所示。

    >>> from youtube_dl import YoutubeDL
    >>> opts = { 'outtmpl': u'%(id)s.%(ext)s' , 'ignoreerrors': True, 'proxy' : PROXY_URL}
    >>> ydl = YoutubeDL(opts)
    >>> ydl.add_default_info_extractors()
    

    这个参数决定了在之后的下载过程中下载器将会遵循的某些规则,在源码中的 /youtube-dl/YoutubeDL.py 文件里有详细的注释说明,这里只将常用的几个参数列出来以供参考。

    参数名称 参数类型 参数含义
    outtmpl string 下载视频文件的文件名格式
    ignoreerrors bool 是否忽略下载过程中的错误(不忽略则遇到错误就程序停止)
    username string 用户名 (如果当前网站需要登录)
    password string 密码 (同用户名)
    nocheckcertificate bool 是否验证SSL证书 (对于某些网站有用)
    proxy string 指定代理
    extract_flat string 如果指定 ‘in_playlist’, 则只下载播放列表而不尝试解析视频

    其实这一部分的第四行代码,add_default_info_extractors 函数是指添加一个默认的提取器,但实际上这个提取器用户是可以自定义的,但作者暂时没有用到这个功能,所以这里不会细讲,但对于一些 youtube-dl 本身不支持的网站,根据其框架再编写一个新的提取器,应该可以适应大部分视频网站的需求。

  2. 提取视频信息与下载视频
    在初始化完毕后,提取信息的接口调用就比较简单了。通过之前创建的下载器对象,调用 extract_info() 函数。
    函数有两个参数,第一个是 url,如果是视频 url,会直接解析视频信息,而如果是播放列表类型的 url,则会先解析播放列表,再去解析播放列表中的每个视频 (这个过程中是不可打断的,一旦打断会从头开始)。
    第二个参数是一个布尔值,True 代表同时解析视频详细信息和下载视频,False则不下载视频,只解析视频信息。
    而这个函数的返回值是一个字典类型的数据,里面包含了视频相关的信息,比如清晰度、上传者、上传时间等等,要了解每一个参数的意义可以看这里。

    >>> info = ydl.extract_info('http://www.youtube.com/watch?v=BaW_jenozKc', download=False)
    [youtube] Setting language
    [youtube] BaW_jenozKc: Downloading webpage
    [youtube] BaW_jenozKc: Downloading video info webpage
    [youtube] BaW_jenozKc: Extracting video information
    >>> info['title']
    'youtube-dl test video "\'/\\ä↭												

    视频采集工具 youtube-dl 接口介绍相关推荐

    1. 自媒体视频采集工具,批量采集视频素材

      自媒体多个视频采集工具,批量采集自媒体视频素材,现在视频平台那么火,视频采集工具也应运而生,但是很多人却不知道从何做起怎么入门自媒体视频运营,其实一切都是以你来为主导的,你喜欢什么类型的选题,喜欢创作 ...

    2. 【百度地图API】如何在地图上添加标注?——另有:坐标拾取工具+打车费用接口介绍...

      摘要: 在这篇文章中,你将学会,如何利用百度地图API进行标注.如何使用API新增的打车费用接口. -------------------------------------------------- ...

    3. 【百度地图API】如何在地图上添加标注?——另有:坐标拾取工具+打车费用接口介绍

      一.如何进行标注 1.首先,我们需要找准标注的位置.比如,我想标注"中央民族大学"附近的网球场.那么,我转到坐标拾取工具页面,请点击http://openapi.baidu.com ...

    4. webrtc源码分析之-从视频采集到编码流程

      peer_connection中从视频采集到编码的流程 摘要:本篇文章主要讲述当我们通过peer_connection完成推流时,视频从采集到编码是如何衔接的. 既,视频采集后如何传送到编码器.重点分 ...

    5. ios中的视频采集及参数设置和相机操作

      概述 在直播应用中,视频的采集一般都是用AVFoundation框架,因为利用它我们能定制采集视频的参数:也能做切换手机摄像头.拍照.打开手电筒等一些列相机的操作:当然,更重要的一点是我们能获取到原始 ...

    6. android 视频剪辑工具,视频剪辑工具手机版

      视频剪辑工具手机版是专门为喜欢做视频的用户精心准备的一款非常好用的视频制作,视频剪辑神器.视频剪辑工具手机版上有着非常多的强大的功能,只需要几步就可以制作出精美的短视频了.有了它每个人都可以成为Vlo ...

    7. 【Android RTMP】Android Camera 视频数据采集预览 ( 视频采集相关概念 | 摄像头预览参数设置 | 摄像头预览数据回调接口 )

      文章目录 安卓直播推流专栏博客总结 一. Android 端数据采集涉及到的相关概念 二. Camera 预览图像尺寸设置 三. 获取摄像头采集的数据格式 安卓直播推流专栏博客总结 Android R ...

    8. 【Python】Python视频制作工具Manim入门,基础形状详细介绍

      来源:Python数据之道 (ID:PyDataLab) 作者:阳哥 01写在前面 最近几个月,我在微信视频号「价值前瞻」和「Python数据之道」发布了一些视频,有不少同学问到这些视频是怎么做的,用 ...

    9. Python视频制作工具Manim入门,文本使用详细介绍

      来源:Python数据之道 (ID:PyDataLab) 作者:阳哥 01写在前面 最近一段时间,我在微信视频号「价值前瞻」和「Python数据之道」发布了一些视频,有不少同学问到这些视频是怎么做的, ...

    最新文章

    1. ppt结的概念与使用
    2. 系统上线后关键用户的工作建议
    3. tomcat Server.xml Context配置
    4. WebAPI前置知识:HTTP与RestfulAPI
    5. vue-router 响应路由参数的变化
    6. php copy array,ES6中Array.copyWithin()函数用法的详解
    7. [Python]网络爬虫(12):爬虫框架Scrapy的第一个爬虫示例入门教程
    8. 所有C#程序员必须知道的13件事
    9. 检查 ubuntu 版本_如何检查Ubuntu版本–快速简便的方法
    10. soyun是php么,40个迹象表明你还是PHP菜鸟
    11. 51Nod 1593 公园晨跑(RMQ,ST表)
    12. 软件破解技术之API替换
    13. 金蝶K3物料主数据计划策略字段设置
    14. apksigner --> apk签名工具
    15. streamx如何支持我司线上实时作业
    16. 各种重力场模型下载网站
    17. RVDT接口测试工装研究
    18. 自定义控件其实很简单2
    19. Smith Chart - for myself
    20. 【网络编程】Trojan源码 文件传输+远程cmd+键盘记录

    热门文章

    1. 新造车热闹时,传统车企们却正在加码另一个新故事
    2. 收藏的网页--视频教程
    3. 金融数据类——全球股市
    4. [量化-025]某投资者的投资策略统计整理
    5. ExtJS EditorGridPanel 示例之xml格式Store前后台增删改查
    6. 环迅支付匠心独具,打造跨境收款解决新方式
    7. 经验分享——关于大学生科研那些事
    8. 校园智能储物柜方案开发
    9. 记一次linux redhat 7.4 maipo单用户模式恢复文件
    10. hdu 5514 容斥