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. mysql分库分表分页查询语句_MySQL分库分表分库后的查询(8th)
    2. [algothrim]URL相似度计算的思考
    3. 【MySQL】 性能优化之 延迟关联
    4. python使用教程cmd啥意思-python中执行cmd的方式
    5. gitee提交代码_在Gitee获8.5k Star,做微信小程序商城看这一个开源项目就够了
    6. C++ SYN攻击源码
    7. 15个基本的C#面试问题
    8. C语言中面向对象编程
    9. 66319d电源使用说明书_电热水壶怎么使用?电热水壶烧不开水的问题是什么?
    10. 滴滴数据分析实习SQL笔试题
    11. url 转码 java_URL 转码遇到的坑
    12. pythonidle怎么设置_Python IDLE基本设置
    13. 完整部署uniswap 合约、前端教程(可部署uniswap到bsc、heco)
    14. mysql数据库存储引擎
    15. 计算机毕业设计Java大学生创业众筹系统(源码+系统+mysql数据库+lw文档)
    16. Java中-> 是什么意思
    17. 越狱第三季第一集 在线免费观看
    18. 西秦的ACE-Python教程 一、Python本地开发环境部署
    19. opencv-python错误:size.width0 size.height0 in function 'cv::imshow' 的解决方案
    20. 强制性依赖关系和选择性依赖关系

    热门文章

    1. MROPytho 实现及Python官网说明
    2. 阿里巴巴计划今日中午推出1688.com批发网
    3. python项目开发案例精粹-Python金融实战案例精粹
    4. 替换Android手机的开机动画,安卓技术宅系列之修改手机开机动画
    5. 【C语言进阶】带你深度剖析那些常见的字符函数(一)
    6. 关于云ERP系统的错误看法
    7. Vue实现超级简单的tab切换
    8. cocos 切换精灵图片
    9. 【OpenMMLab AI实战营 学习笔记 DAY(四)-- 目标检测基础知识及评估方法】
    10. ps拾取颜色设置文字颜色