close

有時在youtube上看到好看想存起來的影音,會想把它下載下來

很多線上的網站有提供各種影音格式可供下載,雖然很完善也很

方便,但總想要有自己客製化的選項.

這時可利用python來寫一下簡單的下載程式

在這之前先打開終端機(假設已經在電腦上安裝好python3.*)

然後安裝pytube,但不知為什麼我一直無法安裝成功,所以我用另

種方式安裝/先到這裡下載,解壓後找到pytube這個資料夾,複製或剪下

到C:\Program Files\Python37\Lib\site-packages直接貼上即可

然後在終端機測試看是否已經新增了pytube的庫

進入終端機python模式後載入pytube的庫,按下enter會進入下一行">>>"

表示安裝成功.

pytube5.jpg


接下來就可以開始來做自己的youtube下載程式了
首先我用了python內建的一個庫-argparse
它主要有點像是建立目錄列表,和列表中的關鍵字聯結
做出來如下圖:
pytube1.jpg

要怎麼去下載影片呢?

先去youtube裡找自己想要下載的影片,將連結複製起來,在終端機這裡先進入存放py檔的所在位置後

鍵入python 影片網址 -hd    (or -fsd or sd)

在下載時就會顯示下載進度

pytube2.jpg


下載完畢會顯示"下載完成"

pytube3.jpg


有一個情況是,萬一來源影片沒有你要畫質,它會顯示"沒有您要的像素",只要在剛貼上的

網址後面降低一級像素即可

pytube4.jpg


完整程式如下:

  1. # -*- coding: utf-8 -*-
  2. from pytube import YouTube
  3. import argparse
  4.  
  5. def main():
  6.     parser=argparse.ArgumentParser()
  7.     parser.add_argument("url",help="指定的youtube影片網址")
  8.     parser.add_argument("-sd",action="store_true",help="480p")
  9.     parser.add_argument("-hd",action="store_true",help="720p")
  10.     parser.add_argument("-fhd",action="store_true",help="1080p")
  11.     parser.add_argument("-a",action="store_true",help="只下載聲音檔")
  12.  
  13.     args=parser.parse_args()
  14.     yt=YouTube(args.url,on_progress_callback=onprogress)
  15.     try:
  16.         downloads(yt,args)
  17.     except:
  18.         print("沒有您選擇的畫質")
  19.    
  20. def onprogress(stream,shunk,file_handler,remaining):
  21.     total=stream.filesize
  22.     percent=(total-remaining)/total*100
  23.     print("下載中...{:.2f}%".format(percent),end='\r')
  24.    
  25. def downloads(yt,args):
  26.     filter=yt.streams.filter
  27.     path=r'C:\Users\blair\Videos'
  28.     if args.hd:
  29.         get=filter(mime_type='video/mp4',resolution="720p").first()
  30.     elif args.fhd:
  31.         get=filter(mime_type='video/mp4',resolution="1080p").first()
  32.     elif args.sd:
  33.         get=filter(mime_type='video/mp4',resolution="480p").first()
  34.     elif args.a:
  35.         get=filter(mime_type='audio').first()
  36.     else:
  37.         get=filter(mime_type='video/mp4').first()
  38.     get.download(path)
  39.     print("下載完成")
  40.  
  41. if __name__=="__main__":
  42.     main()

 

arrow
arrow
    文章標籤
    python pytube
    全站熱搜
    創作者介紹
    創作者 定凱 的頭像
    定凱

    大的人身,小的心靈…保持赤子之心。

    定凱 發表在 痞客邦 留言(0) 人氣()