Go で書かれたコマンドライン/ターミナルベースのアプリで、YouTube の URL/ID を使用してショート動画と動画をダウンロードします。
注: すぐに使用できるツールをお探しの場合は、このリポジトリに固定された問題を確認してください。
YouTube ショートとビデオのダウンロード。
さまざまなコンテンツ品質から選択する機能。
現在、プロジェクトには 2 つの依存関係があります。
tview - 豊富なインタラクティブなウィジェットを備えたターミナル UI ライブラリ - Golang で書かれています。
FFmpeg - 主要なクロスプラットフォーム マルチメディア フレームワーク。システムにインストールするか、少なくともプロジェクトのルート ディレクトリに最新の静的バイナリを含める必要があります。これはむしろ外部ランタイム依存関係です。
YouTube ショート/動画 ID または URL を貼り付けると、アプリは YouTube の内部 API からメタデータを取得します。
次に、ビデオとオーディオの品質の選択に応じて、アプリケーションは、取得したコンテンツ URL に対して小さいサイズのデータ リクエストを行うことにより、ショート/ビデオ コンテンツをダウンロードします。
最終的に、FFmpeg が存在する場合、別々のビデオ ストリーム ファイルとオーディオ ストリーム ファイルの両方が 1 つの出力ファイルにマージされます。
Go をインストールした後、プロジェクトのルートから以下のコマンドを入力します。
Linux/UNIX では、
go build -o go_youtube_downloader ./cmd/go_youtube_downloader.go
Windows では、
go build -o go_youtube_downloader.exe ./cmd/go_youtube_downloader.go
Go をインストールした後、このプロジェクトをクローン/ダウンロードし、プロジェクトのルートから以下のコマンドを入力します。
go run ./cmd/go_youtube_downloader.go
ダウンロードした個別のビデオとオーディオ ストリームを 1 つのファイルにマージするには、システムに FFmpeg がインストールされているか、プロジェクトのルート ディレクトリに最新の静的バイナリが存在する必要があります。
YouTube の署名暗号化のため、年齢制限のある動画はダウンロードできません。
YouTube では、受信リクエストごとに帯域幅制限があり、リクエストあたり約 10 MB です。いずれかのリクエストがこのサイズ制限を超えるデータを取得した場合、それ以降のリクエストによってダウンロードが抑制されるか、接続が終了される可能性があります。そのため、データをダウンロードして出力ファイルに書き込む際のパフォーマンスを向上させるために、一貫性を保つためにデータはより小さなチャンクに分割されます。選択した品質とサイズに応じて、ダウンロード時間は多少長くなります。
YouTube のリバース エンジニアリング: 再訪 - YouTube の内部 API を説明するブログ。
YouTube-Internal-Clients - 隠された YouTube API クライアントを検出する Python スクリプト。単なる研究プロジェクトです。
YT-DLP - 追加機能と修正を備えた youtube-dl フォーク
Youtubei - ビデオ、プレイリスト、チャンネル、ビデオ情報とコメント、関連ビデオ、次のビデオなどの Youtube データを取得します。
Golang での効率的なファイルのダウンロード: 包括的なガイド
Golang ダウンロード ファイルの例
チームニューパイプ
os/exec を使用した Go での高度なコマンド実行