日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

视频采集工具 youtube-dl 接口介绍

發布時間:2023/12/8 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 视频采集工具 youtube-dl 接口介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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 的使用說明,本文會在這個的基礎上加上作者在使用過程中自己用到的接口和參數。

  • 初始化接口
    在進行下載之前,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 文件里有詳細的注釋說明,這里只將常用的幾個參數列出來以供參考。

    參數名稱參數類型參數含義
    outtmplstring下載視頻文件的文件名格式
    ignoreerrorsbool是否忽略下載過程中的錯誤(不忽略則遇到錯誤就程序停止)
    usernamestring用戶名 (如果當前網站需要登錄)
    passwordstring密碼 (同用戶名)
    nocheckcertificatebool是否驗證SSL證書 (對于某些網站有用)
    proxystring指定代理
    extract_flatstring如果指定 ‘in_playlist’, 則只下載播放列表而不嘗試解析視頻

    其實這一部分的第四行代碼,add_default_info_extractors 函數是指添加一個默認的提取器,但實際上這個提取器用戶是可以自定義的,但作者暫時沒有用到這個功能,所以這里不會細講,但對于一些 youtube-dl 本身不支持的網站,根據其框架再編寫一個新的提取器,應該可以適應大部分視頻網站的需求。

  • 提取視頻信息與下載視頻
    在初始化完畢后,提取信息的接口調用就比較簡單了。通過之前創建的下載器對象,調用 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 "\'/\\??𝕐' >>> info['height'], info['width'] (720, 1280)
  • 提取播放列表信息
    官方文檔中給出的提取播放列表 (playlist) 的方法如下所示,只是將 extract_info 的第二個參數改為 False,但作者在實際開發過程中發現,這樣的方式有很大的弊端。
    在整個 extract_info 函數執行的過程中是不允許被打斷的, youtube-dl 本身也沒有實現斷點續傳功能,這就導致一旦 playlist 過長、視頻太大,程序很可能就因為網絡波動而導致前面的工作白費。

    >>> playlist = ydl.extract_info('http://www.ted.com/playlists/13/open_source_open_world', download=False) [TED] open_source_open_world: Downloading playlist webpage ...>>> for video in playlist['entries']: ... print('Video #%d: %s' % (video['playlist_index'], video['title'])) Video #1: How Arduino is open-sourcing imagination Video #2: The year open data went worldwide Video #3: Massive-scale online collaboration

    因此另一種方案就是先將 playlist 中的所有視頻 url 提取出來 ( 只提取url不下載視頻速度會很快 ),再逐個的去下載視頻,并且配合數據庫記錄下載進度,能最大程度下規避網絡波動帶來的風險。其中的關鍵代碼如下。

    >>> playlist_ydl_opts = {'extract_flat':'in_playlist', 'ignoreerrors': True, 'nocheckcertificate':True} >>> playlist_ydl = YoutubeDL(playlist_ydl_opts) >>> playlist_ydl.add_default_info_extractors() >>> playlist = playlist_ydl.extract_info(playlist_path, download = False) >>> if playlist.has_key('entries') and playlist['entries'] != None: >>> ......
  • 0x03. 開發注意事項

    • 在把 youtube-dl 和數據庫結合在一起的時候需要注意斷點續傳的問題,如何判斷是否重復下載、確認下載進度等等。
    • 在下載頻率過快的時候有極大幾率被封,尤其是類似于 youtube 之類的大型視頻網站,但一般而言如果是下載視頻的話,速度不會過快。但如果只提取信息不下載視頻,那就需要注意這個問題 ( 會直接封IP幾個小時到十幾個小時 )。
    • 可能會碰到下載到一定數量,要求提供驗證碼的問題 (比如 youtube 在下載到200個左右視頻時會出現圖片驗證碼)。

    本文為作者原創,轉載請注明出處

    總結

    以上是生活随笔為你收集整理的视频采集工具 youtube-dl 接口介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 黄色一级片在线看 | 囯产精品一品二区三区 | 秋霞国产精品 | 蜜桃成人免费视频 | 野外做受又硬又粗又大视频√ | 第九色 | 日韩人妻精品在线 | av动漫在线免费观看 | 成年人性视频 | 国产高清一区 | 国产在线二区 | 国产在线一区二区视频 | 日本乱码一区二区 | 亚洲国产欧美一区二区三区深喉 | 亚洲国产欧美另类 | 中国美女黄色 | 91插视频 | 国产热热| 综合色av | 天堂在线1| 久久久久久久国产精品 | 久草香蕉视频 | 男女插插网站 | 国产日韩精品中文字无码 | 北条麻妃在线一区 | 伊人色区| 蜜桃臀av一区二区三区 | 成人福利视频 | 老太婆av | 成人午夜av在线 | 国产亚洲视频在线观看 | 精品视频无码一区二区三区 | 亚洲人一区二区三区 | 中文字幕一区二区人妻在线不卡 | 一级少妇女片 | 中文日韩在线 | 日韩精品欧美精品 | 无码人妻丰满熟妇区毛片18 | 色偷偷影院 | 久久国产精 | 一区二区三区欧美精品 | 懂色av,蜜臀av粉嫩av | 国产精品一区二区三区在线看 | 色婷婷av一区二区三区之红樱桃 | 奶波霸巨乳一二三区乳 | 91精品国产入口 | 日韩精品免费视频 | 在线看a级片 | 射射射综合网 | 亚洲成av人片 | 久久成人小视频 | 日韩精品一区二区三区丰满 | 高级家教课程在线观看 | 曰女同女同中文字幕 | 中出视频在线观看 | 久久精品韩国 | 嫩草影院菊竹影院 | 日韩精品电影一区 | 天天在线观看 | 奇米精品一区二区三区四区 | 国产伦精品 | 天天干天天做天天操 | 人人干人人爽 | 校园春色在线观看 | 99热1| 91精品国产综合久久久密臀九色 | 黄色福利站 | av在线二区 | 国产精品久久91 | 一区二区三区四区国产精品 | 欧美性生活网站 | 香蕉一级片 | 日p免费视频 | 欧美一区二区三区黄色 | 亚洲色在线视频 | 99久久久无码国产精品不卡 | 国内精品久久久久久久久久 | 国产一区二区在线视频 | 天堂资源 | 男女啪啪在线观看 | 91福利在线播放 | 亚洲精品66 | 免费视频一区 | 国产午夜精品在线 | 色黄视频| 久久久久久久久久久电影 | 国产毛片高清 | 国产精品一区二区av白丝下载 | 麻豆激情视频 | 免费级毛片 | 少妇做爰免费视看片 | 欧美女优一区二区 | 婷婷欧美| 久久久久久久久久久综合 | 最近更新中文字幕 | 一区二区午夜 | 日日操天天操夜夜操 | 久久久久蜜桃 | 2级黄色片|