web-dev-qa-db-ja.com

youtube-dlでデフォルトのダウンロード場所を設定する方法

youtube-dlでデフォルトのダウンロード場所を設定して、youtube-dlでダウンロードしたすべてのものがそのデフォルトディレクトリに格納されるようにするにはどうすればよいですか?

23
user101

構成ファイルで_-o_スイッチを使用する必要があります

_youtube-dl_の出力は、_--output_または_-o_スイッチで処理されます。オプションとして渡し、その後にダウンロードの保存先を指定します:

youtube-dl -o 'C:\Users\User\Downloads\%(title)s.%(ext)s' www.youtube.com/video

このコマンドには、変数を使用して出力ファイルに名前を付ける方法のテンプレートも設定するという二重の機能があることに注意してください。この例では、ダウンロードした元のビデオのタイトルに続いてファイル拡張子が出力されます。これは私の個人的な好みです。ファイル名で使用できるすべての変数については、 こちらのyoutube-dlのドキュメント をご覧ください。

_youtube-dl_は、構成ファイルの使用も許可します-最も頻繁に使用するスイッチを構成して、プログラムがプルできるようにするために使用できるファイル代わりにそこから呼び出して、実行するたびに明示的に呼び出す必要がなくなります。 これは、探しているデフォルトのダウンロード場所に必要なものです。構成ファイルを使用して、デフォルトの出力先を設定できます。出力を再度明示的に設定する必要はありません。

Windowsを持っていると仮定して、youtube-dlの構成ファイルをセットアップするには:

  1. _%APPDATA%\Roaming_で、_youtube-dl_フォルダーが存在しない場合は作成します。

  2. そのフォルダー内に、_config.txt_という名前のプレーンテキストファイルを作成します。

  3. ファイルに_youtube-dl_オプションを配置します。通常は、コマンドラインで_youtube-dl_を使用してオプションを使用し、それぞれを新しい行に配置します。たとえば、出力スイッチの場合は、_-o C:\Users\User\Destination_を使用します。設定ファイルの詳細については、 こちらのドキュメント をご覧ください。

構成ファイルのオーバーライド

オプションが構成ファイルで構成されている場合でも、コマンドラインから明示的に呼び出すことにより、オプションをオーバーライドできます。したがって、設定ファイルで_-o_をダウンロードのデフォルトの場所に設定しているが、現在のジョブのためにダウンロードを別の場所に保存したい場合は、コマンドラインで_-o_を呼び出すだけで、プログラムの現在の実行専用の構成ファイル。

21
Hashim

あなたのニーズに応じて、後でファイルを移動するのも同じように便利だと思います。

--exec CMD                       Execute a command on the file after
                                 downloading, similar to find's -exec
                                 syntax. Example: --exec 'adb Push {}
                                 /sdcard/Music/ && rm {}'

ファイルを移動する関数を作成することにより

2
Yoshidk

Downloadsフォルダーにファイルを直接ダウンロードする方法を見つけました。長時間検索しています。関数全体をコピーすると、前後のコンテキストを理解できます。これは誰かのために役立つかもしれない私のコードです:

import os

def download_audio(request):
  SAVE_PATH = '/'.join(os.getcwd().split('/')[:3]) + '/Downloads'

  ydl_opts = {
      'format': 'bestaudio/best',
      'postprocessors': [{
          'key': 'FFmpegExtractAudio',
          'preferredcodec': 'mp3',
          'preferredquality': '192',
      }],
      'outtmpl':SAVE_PATH + '/%(title)s.%(ext)s',

  }

  link = request.GET.get('video_url')

  with youtube_dl.YoutubeDL(ydl_opts) as ydl:
      ydl.download(["https://www.youtube.com/watch?v="+link])

問題がある場合は教えてください。

0
NiceOyster