[Docker] Backup-dl - 備份Youtube影片至Azure Blob Storage

簡介


License .NET Core Microsoft Azure Docker YouTube

此程式可以檢查Youtube頻道、播放清單,並備份影片至Azure Blob Storage
這是一支.NET Core Console Application,並包裝為Linux Container
整合入我的「Youtube錄影伺服器 (Docker Compose)」,可搭配使用

琳的備忘手札 [Docker] Youtube直播錄影伺服器建置
/2020/11/docker-youtube-dl-auto-recording-live-dl.html

    下載

    docker pull ghcr.io/jim60105/backup-dl:latest

    參數

    環境變數

    • AZURE_STORAGE_CONNECTION_STRING_VTUBER: Azure Blob Storage的連接字串
    • CHANNELS_IN_ARRAY: 欲下載的頻道網址,以陣列傳入
    • MAX_DOWNLOAD: (可選)每次執行的最大下載數量,預設為10
    • FORMAT: (可選)自訂欲下載的格式,預設為bestvideo+bestaudio/best,請參考yt-dlp說明文件

    Volume Binding

    • cookies.txt:/app/cookies.txt 若bind入,則會在下載時用做登入憑證

    功能特性

    影片下載

    • 底層使用yt-dlp做下載 (別人fork youtube-dl出來擴充的專案)
    • 使用archive.txt做記錄,不重覆下載影片
    • 可傳入多個Youtube頻道,或是Youtube播放清單
    • 下載非DASH影片
      (DASH的解釋,簡單來說就是專給網路串流使用的技術格式,而這通常不是最好的影片)
    • 可透過環境變數設定下載格式
    • 可限制每次執行的最大下載數量
    • 限制下載兩日前的影片,避免下載到直播中和未轉檔完的影片

    影片後處理

    • 使用ffmpeg做後處理
    • 內嵌封面縮圖
    • 將影片描述寫入metadata
    • 影片統一打包為mkv

    上傳

    其它

    • 這是.NET Core Console Application,打包為Linux Container
    • 採用非同步設計
      • 每載完一部影片就會進入後處理&上傳程序
      • 多執行緒併行,最大化使用你的效能資源
      • 每片上傳完成後立刻更新archive.txt,不會因中斷container而遺失進度
    • 程式重啟後重傳處理
      (程式啟動時會檢查是否有前次已下載,但未上傳完成的mkv暫存檔案,若有就直接重新上傳)

    使用方式

    1. 在本機環境變數中儲存connection string,命名為「AZURE_STORAGE_CONNECTION_STRING_VTUBER」
      連接字串的說明詳見官方說明文件
    2. docker run 
                --env CHANNELS_IN_ARRAY="[\"https://www.youtube.com/channel/UCBC7vYFNQoGPupe5NxPG4Bw\", \"https://www.youtube.com/channel/UC7XCjKxBEct0uAukpQXNFPw\"]" 
                --env AZURE_STORAGE_CONNECTION_STRING_VTUBER 
                --env MAX_DOWNLOAD="10" 
                jim60105/backup-dl
      

    LICENSE

    • Distribute main code with MIT License.
    • Use Xabe.FFmpeg with License Agreement under non-commercial use.
    • Use YoutubeDLSharp under BSD 3-Clause License.
    • Use yt-dlp under Unlicensed License

    沒有留言:

    張貼留言