close
有時在youtube上看到好看想存起來的影音,會想把它下載下來
很多線上的網站有提供各種影音格式可供下載,雖然很完善也很
方便,但總想要有自己客製化的選項.
這時可利用python來寫一下簡單的下載程式
在這之前先打開終端機(假設已經在電腦上安裝好python3.*)
然後安裝pytube,但不知為什麼我一直無法安裝成功,所以我用另
種方式安裝/先到這裡下載,解壓後找到pytube這個資料夾,複製或剪下
到C:\Program Files\Python37\Lib\site-packages直接貼上即可
然後在終端機測試看是否已經新增了pytube的庫
進入終端機python模式後載入pytube的庫,按下enter會進入下一行">>>"
表示安裝成功.
接下來就可以開始來做自己的youtube下載程式了
首先我用了python內建的一個庫-argparse
它主要有點像是建立目錄列表,和列表中的關鍵字聯結
做出來如下圖:
要怎麼去下載影片呢?
先去youtube裡找自己想要下載的影片,將連結複製起來,在終端機這裡先進入存放py檔的所在位置後
鍵入python 影片網址 -hd (or -fsd or sd)
在下載時就會顯示下載進度
下載完畢會顯示"下載完成"
有一個情況是,萬一來源影片沒有你要畫質,它會顯示"沒有您要的像素",只要在剛貼上的
網址後面降低一級像素即可
完整程式如下:
-
# -*- coding: utf-8 -*-
-
from pytube import YouTube
-
import argparse
-
-
def main():
-
parser=argparse.ArgumentParser()
-
parser.add_argument("url",help="指定的youtube影片網址")
-
parser.add_argument("-sd",action="store_true",help="480p")
-
parser.add_argument("-hd",action="store_true",help="720p")
-
parser.add_argument("-fhd",action="store_true",help="1080p")
-
parser.add_argument("-a",action="store_true",help="只下載聲音檔")
-
-
args=parser.parse_args()
-
yt=YouTube(args.url,on_progress_callback=onprogress)
-
try:
-
downloads(yt,args)
-
except:
-
print("沒有您選擇的畫質")
-
-
def onprogress(stream,shunk,file_handler,remaining):
-
total=stream.filesize
-
percent=(total-remaining)/total*100
-
print("下載中...{:.2f}%".format(percent),end='\r')
-
-
def downloads(yt,args):
-
filter=yt.streams.filter
-
path=r'C:\Users\blair\Videos'
-
if args.hd:
-
get=filter(mime_type='video/mp4',resolution="720p").first()
-
elif args.fhd:
-
get=filter(mime_type='video/mp4',resolution="1080p").first()
-
elif args.sd:
-
get=filter(mime_type='video/mp4',resolution="480p").first()
-
elif args.a:
-
get=filter(mime_type='audio').first()
-
else:
-
get=filter(mime_type='video/mp4').first()
-
get.download(path)
-
print("下載完成")
-
-
if __name__=="__main__":
-
main()
文章標籤
全站熱搜
留言列表