今天學習一下You-Get這個第三方庫,體驗一下視頻下載的快樂。
簡介
You-Get
庫是一個基於Python3
的視頻下載工具,支持多數國內外主流視頻站點的視頻下載。看一下項目主頁的README.md
,真的是十分的nice啊,基本都支持了,像B站、騰訊視頻、土豆、優酷等等。
項目主頁:https://github.com/soimort/you-get
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-ZnwB2tmT-1584577815778)(upload\image-20200315113053631.png)]
安裝
安裝有三種方法,可以再github
主頁下載安裝,也可以用pip
下載,還可以用Antigen
安裝。
我在這裏使用的是pip安裝,使用pip3 intall you-get
命令來安裝you-get庫。
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-ZLIdFQH7-1584577815780)(upload\image-20200315120409853.png)]
由於pip更換了國內源,很快就完成安裝了。
實例
接下來就來體驗一把這個you-get庫的實力,那麼就編一個實例來在B站上下個視頻看看。
系統:
Windows 10 version 1909
Python:
Python 3.7.4
You-Get:
You-Get 0.4.1410
第一種就是直接使用命令行執行
下載視頻
使用命令you-get -o 存儲路徑 URL
, 注意一點URL不可以使用’'包起來,不然就會報錯。
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-ICDTgcPU-1584577815781)(upload\image-20200315132428382.png)]
可以看到這個視頻已經安詳地躺在了目錄下。
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-hro1m6kT-1584577815781)(upload\image-20200315132803024.png)]
查看視頻信息
使用命令you-get -i https://www.bilibili.com/video/av10298843?from=search&seid=17023892018446291553
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-PpKHewz8-1584577815782)(upload\image-20200315134037302.png)]
第二種是通過編寫Python程序實現批量的下載
寫了一個小程序,不多說上代碼
源代碼
import os
def main():
info()
tag = input("請選擇:")
if tag == 'a':
print('-----------------------進入批量下載模式-----------------------\n')
file2 , url2 = getchara()
mutildownload( file2 , url2 )
elif tag == 'b':
print("-----------------------進入單次下載模式-----------------------\n")
file1 , url1 = getcharb()
download( file1 , url1 )
else:
print("無效的選項,程序將會關閉\n" + "5\n" + '4\n' + "3\n" + "2\n" +"1")
exit()
def info():
print("-----------------------A1andNS video download-----------------------" + '\n' + "This is a program \
based on you-get , you can use it to download the video from vidoe website , such as \
bilibili , tencent video and so on.")
print("請輸入字母a以批量下載或輸入字母b以單次下載!!!")
def getcharb():
file1 = input("請輸入一個保存路徑:")
url1 = input("請輸入一個視頻鏈接:")
return file1 , url1
def getchara():
file2 = input("請輸入一個保存路徑:")
url2 = input("請輸入你存放URL的文本文件的絕對路徑(注意:URL應當每行只存放一個):")
return file2 , url2
def download(file1 , url1):
try:
os.system("you-get " + '-o ' + file1 + " " + url1)
print("運行成功!!!")
except:
print("運行失敗!!!\n" + "5\n" +'4\n' + "3\n" + "2\n" + "1")
exit()
def mutildownload( file2 , url2 ):
f = open( url2 )
lines = f.readlines()
try:
for line in lines:
download( file2 , line )
print("運行成功")
except:
print("運行失敗!!!" + "5\n" +'4\n' + "3\n" + "2\n" + "1")
f.closed()
main()
單次下載
成功下載結果如下:
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-L4ImNCps-1584577815784)(upload\image-20200315145322670.png)]
批量下載
批量下載時,使用一個url字典來實現,url存儲格式如下圖:
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-db53B320-1584577815785)(upload\image-20200315151136841.png)]
成功執行,把3個視頻都下載下來了。
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-vYRYHPwI-1584577815786)(upload\image-20200315151001025.png)]
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-vibi7DRB-1584577815787)(upload\image-20200315151039426.png)]
這個You-get工具正是一個好東西啊,感覺很棒,開發者大大牛逼。吹爆!!!
注意
(1)各大視頻網站需要登錄觀看的視頻無法直接下載
(2)有些網站視頻需要設置代理
寫在最後
這個博客可能不怎麼寫了,換了一個新的博客。但是如果可能,可以兩邊一起發,但是機率較低。
新博客:https://a1andns.github.io