youtube-dl - YouTube.com や他のビデオサイトからビデオをダウンロードするコマンドラインプログラム

(Command-line program to download videos from YouTube.com and other video sites)

Created at: 2010-10-31 22:35:07
Language: Python
License: Unlicense

ビルドステータス

YouTube-DL - youtube.com または他のビデオプラットフォームからビデオをダウンロードする

取り付け

すべてのUNIXユーザー(Linux、macOSなど)にすぐにインストールするには、次のように入力します。

sudo curl -L https://yt-dl.org/downloads/latest/youtube-dl -o /usr/local/bin/youtube-dl
sudo chmod a+rx /usr/local/bin/youtube-dl

curlがない場合は、代わりに最近のwgetを使用できます。

sudo wget https://yt-dl.org/downloads/latest/youtube-dl -O /usr/local/bin/youtube-dl
sudo chmod a+rx /usr/local/bin/youtube-dl

Windowsユーザーは、.exeファイルをダウンロードし、PATH上の任意の場所に配置できます(たとえば、 入れないでください)。

%SYSTEMROOT%\System32
C:\Windows\System32

pipを使用することもできます。

sudo -H pip install --upgrade youtube-dl

このコマンドは、youtube-dlをすでにインストールしている場合、更新します。詳細については、pypi のページを参照してください。

macOSユーザーは、自作でyoutube-dlをインストールできます。

brew install youtube-dl

またはMacPortsの場合:

sudo port install youtube-dl

または、git リポジトリをチェックアウトして操作する方法については、開発者向けの指示を参照してください。PGP 署名を含むその他のオプションについては、youtube-dl ダウンロードページを参照してください。

形容

YouTube-DLは、YouTube.com やいくつかのサイトからビデオをダウンロードするためのコマンドラインプログラムです。Python インタープリター、バージョン 2.6、2.7、または 3.2+ が必要であり、プラットフォーム固有ではありません。それはあなたのUnixボックス、Windows、またはmacOSで動作するはずです。パブリックドメインにリリースされているため、変更、再配布、または好きなように使用できます。

youtube-dl [OPTIONS] URL [URL...]

オプション

-h, --help                           Print this help text and exit
--version                            Print program version and exit
-U, --update                         Update this program to latest version.
                                     Make sure that you have sufficient
                                     permissions (run with sudo if needed)
-i, --ignore-errors                  Continue on download errors, for
                                     example to skip unavailable videos in a
                                     playlist
--abort-on-error                     Abort downloading of further videos (in
                                     the playlist or the command line) if an
                                     error occurs
--dump-user-agent                    Display the current browser
                                     identification
--list-extractors                    List all supported extractors
--extractor-descriptions             Output descriptions of all supported
                                     extractors
--force-generic-extractor            Force extraction to use the generic
                                     extractor
--default-search PREFIX              Use this prefix for unqualified URLs.
                                     For example "gvsearch2:" downloads two
                                     videos from google videos for youtube-
                                     dl "large apple". Use the value "auto"
                                     to let youtube-dl guess ("auto_warning"
                                     to emit a warning when guessing).
                                     "error" just throws an error. The
                                     default value "fixup_error" repairs
                                     broken URLs, but emits an error if this
                                     is not possible instead of searching.
--ignore-config                      Do not read configuration files. When
                                     given in the global configuration file
                                     /etc/youtube-dl.conf: Do not read the
                                     user configuration in
                                     ~/.config/youtube-dl/config
                                     (%APPDATA%/youtube-dl/config.txt on
                                     Windows)
--config-location PATH               Location of the configuration file;
                                     either the path to the config or its
                                     containing directory.
--flat-playlist                      Do not extract the videos of a
                                     playlist, only list them.
--mark-watched                       Mark videos watched (YouTube only)
--no-mark-watched                    Do not mark videos watched (YouTube
                                     only)
--no-color                           Do not emit color codes in output

ネットワークオプション:

--proxy URL                          Use the specified HTTP/HTTPS/SOCKS
                                     proxy. To enable SOCKS proxy, specify a
                                     proper scheme. For example
                                     socks5://127.0.0.1:1080/. Pass in an
                                     empty string (--proxy "") for direct
                                     connection
--socket-timeout SECONDS             Time to wait before giving up, in
                                     seconds
--source-address IP                  Client-side IP address to bind to
-4, --force-ipv4                     Make all connections via IPv4
-6, --force-ipv6                     Make all connections via IPv6

地理的制限:

--geo-verification-proxy URL         Use this proxy to verify the IP address
                                     for some geo-restricted sites. The
                                     default proxy specified by --proxy (or
                                     none, if the option is not present) is
                                     used for the actual downloading.
--geo-bypass                         Bypass geographic restriction via
                                     faking X-Forwarded-For HTTP header
--no-geo-bypass                      Do not bypass geographic restriction
                                     via faking X-Forwarded-For HTTP header
--geo-bypass-country CODE            Force bypass geographic restriction
                                     with explicitly provided two-letter ISO
                                     3166-2 country code
--geo-bypass-ip-block IP_BLOCK       Force bypass geographic restriction
                                     with explicitly provided IP block in
                                     CIDR notation

ビデオ選択:

--playlist-start NUMBER              Playlist video to start at (default is
                                     1)
--playlist-end NUMBER                Playlist video to end at (default is
                                     last)
--playlist-items ITEM_SPEC           Playlist video items to download.
                                     Specify indices of the videos in the
                                     playlist separated by commas like: "--
                                     playlist-items 1,2,5,8" if you want to
                                     download videos indexed 1, 2, 5, 8 in
                                     the playlist. You can specify range: "
                                     --playlist-items 1-3,7,10-13", it will
                                     download the videos at index 1, 2, 3,
                                     7, 10, 11, 12 and 13.
--match-title REGEX                  Download only matching titles (regex or
                                     caseless sub-string)
--reject-title REGEX                 Skip download for matching titles
                                     (regex or caseless sub-string)
--max-downloads NUMBER               Abort after downloading NUMBER files
--min-filesize SIZE                  Do not download any videos smaller than
                                     SIZE (e.g. 50k or 44.6m)
--max-filesize SIZE                  Do not download any videos larger than
                                     SIZE (e.g. 50k or 44.6m)
--date DATE                          Download only videos uploaded in this
                                     date
--datebefore DATE                    Download only videos uploaded on or
                                     before this date (i.e. inclusive)
--dateafter DATE                     Download only videos uploaded on or
                                     after this date (i.e. inclusive)
--min-views COUNT                    Do not download any videos with less
                                     than COUNT views
--max-views COUNT                    Do not download any videos with more
                                     than COUNT views
--match-filter FILTER                Generic video filter. Specify any key
                                     (see the "OUTPUT TEMPLATE" for a list
                                     of available keys) to match if the key
                                     is present, !key to check if the key is
                                     not present, key > NUMBER (like
                                     "comment_count > 12", also works with
                                     >=, <, <=, !=, =) to compare against a
                                     number, key = 'LITERAL' (like "uploader
                                     = 'Mike Smith'", also works with !=) to
                                     match against a string literal and & to
                                     require multiple matches. Values which
                                     are not known are excluded unless you
                                     put a question mark (?) after the
                                     operator. For example, to only match
                                     videos that have been liked more than
                                     100 times and disliked less than 50
                                     times (or the dislike functionality is
                                     not available at the given service),
                                     but who also have a description, use
                                     --match-filter "like_count > 100 &
                                     dislike_count <? 50 & description" .
--no-playlist                        Download only the video, if the URL
                                     refers to a video and a playlist.
--yes-playlist                       Download the playlist, if the URL
                                     refers to a video and a playlist.
--age-limit YEARS                    Download only videos suitable for the
                                     given age
--download-archive FILE              Download only videos not listed in the
                                     archive file. Record the IDs of all
                                     downloaded videos in it.
--include-ads                        Download advertisements as well
                                     (experimental)

ダウンロードオプション:

-r, --limit-rate RATE                Maximum download rate in bytes per
                                     second (e.g. 50K or 4.2M)
-R, --retries RETRIES                Number of retries (default is 10), or
                                     "infinite".
--fragment-retries RETRIES           Number of retries for a fragment
                                     (default is 10), or "infinite" (DASH,
                                     hlsnative and ISM)
--skip-unavailable-fragments         Skip unavailable fragments (DASH,
                                     hlsnative and ISM)
--abort-on-unavailable-fragment      Abort downloading when some fragment is
                                     not available
--keep-fragments                     Keep downloaded fragments on disk after
                                     downloading is finished; fragments are
                                     erased by default
--buffer-size SIZE                   Size of download buffer (e.g. 1024 or
                                     16K) (default is 1024)
--no-resize-buffer                   Do not automatically adjust the buffer
                                     size. By default, the buffer size is
                                     automatically resized from an initial
                                     value of SIZE.
--http-chunk-size SIZE               Size of a chunk for chunk-based HTTP
                                     downloading (e.g. 10485760 or 10M)
                                     (default is disabled). May be useful
                                     for bypassing bandwidth throttling
                                     imposed by a webserver (experimental)
--playlist-reverse                   Download playlist videos in reverse
                                     order
--playlist-random                    Download playlist videos in random
                                     order
--xattr-set-filesize                 Set file xattribute ytdl.filesize with
                                     expected file size
--hls-prefer-native                  Use the native HLS downloader instead
                                     of ffmpeg
--hls-prefer-ffmpeg                  Use ffmpeg instead of the native HLS
                                     downloader
--hls-use-mpegts                     Use the mpegts container for HLS
                                     videos, allowing to play the video
                                     while downloading (some players may not
                                     be able to play it)
--external-downloader COMMAND        Use the specified external downloader.
                                     Currently supports aria2c,avconv,axel,c
                                     url,ffmpeg,httpie,wget
--external-downloader-args ARGS      Give these arguments to the external
                                     downloader

ファイルシステムオプション:

-a, --batch-file FILE                File containing URLs to download ('-'
                                     for stdin), one URL per line. Lines
                                     starting with '#', ';' or ']' are
                                     considered as comments and ignored.
--id                                 Use only video ID in file name
-o, --output TEMPLATE                Output filename template, see the
                                     "OUTPUT TEMPLATE" for all the info
--output-na-placeholder PLACEHOLDER  Placeholder value for unavailable meta
                                     fields in output filename template
                                     (default is "NA")
--autonumber-start NUMBER            Specify the start value for
                                     %(autonumber)s (default is 1)
--restrict-filenames                 Restrict filenames to only ASCII
                                     characters, and avoid "&" and spaces in
                                     filenames
-w, --no-overwrites                  Do not overwrite files
-c, --continue                       Force resume of partially downloaded
                                     files. By default, youtube-dl will
                                     resume downloads if possible.
--no-continue                        Do not resume partially downloaded
                                     files (restart from beginning)
--no-part                            Do not use .part files - write directly
                                     into output file
--no-mtime                           Do not use the Last-modified header to
                                     set the file modification time
--write-description                  Write video description to a
                                     .description file
--write-info-json                    Write video metadata to a .info.json
                                     file
--write-annotations                  Write video annotations to a
                                     .annotations.xml file
--load-info-json FILE                JSON file containing the video
                                     information (created with the "--write-
                                     info-json" option)
--cookies FILE                       File to read cookies from and dump
                                     cookie jar in
--cache-dir DIR                      Location in the filesystem where
                                     youtube-dl can store some downloaded
                                     information permanently. By default
                                     $XDG_CACHE_HOME/youtube-dl or
                                     ~/.cache/youtube-dl . At the moment,
                                     only YouTube player files (for videos
                                     with obfuscated signatures) are cached,
                                     but that may change.
--no-cache-dir                       Disable filesystem caching
--rm-cache-dir                       Delete all filesystem cache files

サムネイルオプション:

--write-thumbnail                    Write thumbnail image to disk
--write-all-thumbnails               Write all thumbnail image formats to
                                     disk
--list-thumbnails                    Simulate and list all available
                                     thumbnail formats

詳細度/シミュレーションオプション:

-q, --quiet                          Activate quiet mode
--no-warnings                        Ignore warnings
-s, --simulate                       Do not download the video and do not
                                     write anything to disk
--skip-download                      Do not download the video
-g, --get-url                        Simulate, quiet but print URL
-e, --get-title                      Simulate, quiet but print title
--get-id                             Simulate, quiet but print id
--get-thumbnail                      Simulate, quiet but print thumbnail URL
--get-description                    Simulate, quiet but print video
                                     description
--get-duration                       Simulate, quiet but print video length
--get-filename                       Simulate, quiet but print output
                                     filename
--get-format                         Simulate, quiet but print output format
-j, --dump-json                      Simulate, quiet but print JSON
                                     information. See the "OUTPUT TEMPLATE"
                                     for a description of available keys.
-J, --dump-single-json               Simulate, quiet but print JSON
                                     information for each command-line
                                     argument. If the URL refers to a
                                     playlist, dump the whole playlist
                                     information in a single line.
--print-json                         Be quiet and print the video
                                     information as JSON (video is still
                                     being downloaded).
--newline                            Output progress bar as new lines
--no-progress                        Do not print progress bar
--console-title                      Display progress in console titlebar
-v, --verbose                        Print various debugging information
--dump-pages                         Print downloaded pages encoded using
                                     base64 to debug problems (very verbose)
--write-pages                        Write downloaded intermediary pages to
                                     files in the current directory to debug
                                     problems
--print-traffic                      Display sent and read HTTP traffic
-C, --call-home                      Contact the youtube-dl server for
                                     debugging
--no-call-home                       Do NOT contact the youtube-dl server
                                     for debugging

回避策:

--encoding ENCODING                  Force the specified encoding
                                     (experimental)
--no-check-certificate               Suppress HTTPS certificate validation
--prefer-insecure                    Use an unencrypted connection to
                                     retrieve information about the video.
                                     (Currently supported only for YouTube)
--user-agent UA                      Specify a custom user agent
--referer URL                        Specify a custom referer, use if the
                                     video access is restricted to one
                                     domain
--add-header FIELD:VALUE             Specify a custom HTTP header and its
                                     value, separated by a colon ':'. You
                                     can use this option multiple times
--bidi-workaround                    Work around terminals that lack
                                     bidirectional text support. Requires
                                     bidiv or fribidi executable in PATH
--sleep-interval SECONDS             Number of seconds to sleep before each
                                     download when used alone or a lower
                                     bound of a range for randomized sleep
                                     before each download (minimum possible
                                     number of seconds to sleep) when used
                                     along with --max-sleep-interval.
--max-sleep-interval SECONDS         Upper bound of a range for randomized
                                     sleep before each download (maximum
                                     possible number of seconds to sleep).
                                     Must only be used along with --min-
                                     sleep-interval.

ビデオフォーマットオプション:

-f, --format FORMAT                  Video format code, see the "FORMAT
                                     SELECTION" for all the info
--all-formats                        Download all available video formats
--prefer-free-formats                Prefer free video formats unless a
                                     specific one is requested
-F, --list-formats                   List all available formats of requested
                                     videos
--youtube-skip-dash-manifest         Do not download the DASH manifests and
                                     related data on YouTube videos
--merge-output-format FORMAT         If a merge is required (e.g.
                                     bestvideo+bestaudio), output to given
                                     container format. One of mkv, mp4, ogg,
                                     webm, flv. Ignored if no merge is
                                     required

字幕オプション:

--write-sub                          Write subtitle file
--write-auto-sub                     Write automatically generated subtitle
                                     file (YouTube only)
--all-subs                           Download all the available subtitles of
                                     the video
--list-subs                          List all available subtitles for the
                                     video
--sub-format FORMAT                  Subtitle format, accepts formats
                                     preference, for example: "srt" or
                                     "ass/srt/best"
--sub-lang LANGS                     Languages of the subtitles to download
                                     (optional) separated by commas, use
                                     --list-subs for available language tags

認証オプション:

-u, --username USERNAME              Login with this account ID
-p, --password PASSWORD              Account password. If this option is
                                     left out, youtube-dl will ask
                                     interactively.
-2, --twofactor TWOFACTOR            Two-factor authentication code
-n, --netrc                          Use .netrc authentication data
--video-password PASSWORD            Video password (vimeo, youku)

アドビパスオプション:

--ap-mso MSO                         Adobe Pass multiple-system operator (TV
                                     provider) identifier, use --ap-list-mso
                                     for a list of available MSOs
--ap-username USERNAME               Multiple-system operator account login
--ap-password PASSWORD               Multiple-system operator account
                                     password. If this option is left out,
                                     youtube-dl will ask interactively.
--ap-list-mso                        List all supported multiple-system
                                     operators

後処理オプション:

-x, --extract-audio                  Convert video files to audio-only files
                                     (requires ffmpeg/avconv and
                                     ffprobe/avprobe)
--audio-format FORMAT                Specify audio format: "best", "aac",
                                     "flac", "mp3", "m4a", "opus", "vorbis",
                                     or "wav"; "best" by default; No effect
                                     without -x
--audio-quality QUALITY              Specify ffmpeg/avconv audio quality,
                                     insert a value between 0 (better) and 9
                                     (worse) for VBR or a specific bitrate
                                     like 128K (default 5)
--recode-video FORMAT                Encode the video to another format if
                                     necessary (currently supported:
                                     mp4|flv|ogg|webm|mkv|avi)
--postprocessor-args ARGS            Give these arguments to the
                                     postprocessor
-k, --keep-video                     Keep the video file on disk after the
                                     post-processing; the video is erased by
                                     default
--no-post-overwrites                 Do not overwrite post-processed files;
                                     the post-processed files are
                                     overwritten by default
--embed-subs                         Embed subtitles in the video (only for
                                     mp4, webm and mkv videos)
--embed-thumbnail                    Embed thumbnail in the audio as cover
                                     art
--add-metadata                       Write metadata to the video file
--metadata-from-title FORMAT         Parse additional metadata like song
                                     title / artist from the video title.
                                     The format syntax is the same as
                                     --output. Regular expression with named
                                     capture groups may also be used. The
                                     parsed parameters replace existing
                                     values. Example: --metadata-from-title
                                     "%(artist)s - %(title)s" matches a
                                     title like "Coldplay - Paradise".
                                     Example (regex): --metadata-from-title
                                     "(?P<artist>.+?) - (?P<title>.+)"
--xattrs                             Write metadata to the video file's
                                     xattrs (using dublin core and xdg
                                     standards)
--fixup POLICY                       Automatically correct known faults of
                                     the file. One of never (do nothing),
                                     warn (only emit a warning),
                                     detect_or_warn (the default; fix file
                                     if we can, warn otherwise)
--prefer-avconv                      Prefer avconv over ffmpeg for running
                                     the postprocessors
--prefer-ffmpeg                      Prefer ffmpeg over avconv for running
                                     the postprocessors (default)
--ffmpeg-location PATH               Location of the ffmpeg/avconv binary;
                                     either the path to the binary or its
                                     containing directory.
--exec CMD                           Execute a command on the file after
                                     downloading and post-processing,
                                     similar to find's -exec syntax.
                                     Example: --exec 'adb push {}
                                     /sdcard/Music/ && rm {}'
--convert-subs FORMAT                Convert the subtitles to other format
                                     (currently supported: srt|ass|vtt|lrc)

構成

youtube-dl を設定するには、サポートされているコマンドラインオプションを設定ファイルに配置します。Linux および macOS では、システム全体の設定ファイルは にあり、ユーザ全体の構成ファイルは にあります。Windows では、ユーザー全体の構成ファイルの場所は または です。デフォルトでは設定ファイルが存在しない可能性があるため、自分で作成する必要があることに注意してください。

/etc/youtube-dl.conf
~/.config/youtube-dl/config
%APPDATA%\youtube-dl\config.txt
C:\Users\<user name>\youtube-dl.conf

たとえば、次の構成ファイルを使用すると、youtube-dlは常にオーディオを抽出し、mtimeをコピーせず、プロキシを使用して、ホームディレクトリのディレクトリの下にすべてのビデオを保存します。

Movies

# Lines starting with # are comments

# Always extract audio
-x

# Do not copy the mtime
--no-mtime

# Use this proxy
--proxy 127.0.0.1:3128

# Save all videos under Movies directory in your home directory
-o ~/Movies/%(title)s.%(ext)s

構成ファイルのオプションは、通常のコマンドライン呼び出しで使用されるスイッチと同じオプションであるため、 または の後に空白があってはなりません。 またはではなく、または.

-
--
-o
--proxy
- o
-- proxy

特定のyoutube-dl実行の構成ファイルを無効にする場合に使用できます。

--ignore-config

特定のyoutube-dlの実行にカスタム構成ファイルを使用する場合にも使用できます。

--config-location

ファイルによる認証
.netrc

また、すべてのyoutube-dl実行でコマンドライン引数として資格情報を渡さないようにし、シェルコマンド履歴でプレーンテキストのパスワードを追跡しないように、認証をサポートするエクストラクタの自動資格情報ストレージを構成することもできます(ログインとパスワードを指定することにより)。これは、抽出器ごとに .netrc ファイルを使用して実現できます。そのためには、ファイルにファイルを作成し、あなただけが読み取り/書き込みのアクセス許可を制限する必要があります。

--username
--password
.netrc
$HOME

touch $HOME/.netrc
chmod a-rwx,u+rw $HOME/.netrc

その後、エクストラクターの資格情報を次の形式で追加できます (extractor は小文字のエクストラクターの名前です)。

machine <extractor> login <login> password <password>

例えば:

machine youtube login myaccount@gmail.com password my_youtube_password
machine twitch login my_twitch_account_name password my_twitch_password

ファイルで認証を有効にするには、youtube-dlに渡すか、構成ファイルに配置する必要があります。

.netrc
--netrc

Windowsでは、環境変数を手動で設定する必要がある場合もあります。例えば:

%HOME%

set HOME=%USERPROFILE%

出力テンプレート

このオプションを使用すると、ユーザーは出力ファイル名のテンプレートを指定できます。

-o

dr:例に移動します

基本的な使用法は、のように単一のファイルをダウンロードするときにテンプレート引数を設定しないことです。ただし、各ビデオをダウンロードするときに置き換えられる特別なシーケンスが含まれている場合があります。特別なシーケンスは、Pythonの文字列フォーマット操作に従ってフォーマットできます。たとえば、または .明確にするために、これはパーセント記号の後に括弧内の名前が続き、その後にフォーマット操作が続きます。使用できる名前とシーケンスの種類は次のとおりです。

youtube-dl -o funny_video.flv "https://some/video"
%(NAME)s
%(NAME)05d

  • id
    (文字列): 動画識別子
  • title
    (文字列): 動画タイトル
  • url
    (文字列): 動画の URL
  • ext
    (文字列): Video ファイル名拡張子
  • alt_title
    (文字列): 動画の副次的なタイトル
  • display_id
    (文字列): 動画の代替識別子
  • uploader
    (文字列): 動画をアップロードしたユーザーのフルネーム
  • license
    (文字列): 動画のライセンス名: 動画のライセンス名
  • creator
    (文字列): 動画の作成者
  • release_date
    (文字列): ビデオがリリースされた日付 (YYYYMMDD)
  • timestamp
    (数値): ビデオが利用可能になった瞬間のUNIXタイムスタンプ
  • upload_date
    (文字列): 動画のアップロード日 (YYYYMMDD)
  • uploader_id
    (文字列): 動画アップローダーのニックネームまたは ID
  • channel
    (文字列): 動画がアップロードされたチャンネルのフルネーム
  • channel_id
    (文字列): チャネルの ID
  • location
    (文字列): ビデオが撮影された物理的な場所
  • duration
    (数値): 動画の長さ(秒単位)
  • view_count
    (数値): プラットフォームで動画を視聴したユーザーの数
  • like_count
    (数値): 動画の肯定的な評価の数
  • dislike_count
    (数値): 動画の否定的な評価の数
  • repost_count
    (数値): 動画の再投稿数
  • average_rating
    (数値):ユーザーによる平均評価、使用されるスケールはWebページによって異なります
  • comment_count
    (数値): 動画へのコメント数
  • age_limit
    (数値): 動画の年齢制限(年)
  • is_live
    (ブール値): この動画がライブ配信か固定長動画か
  • start_time
    (数値): URL で指定された複製を開始する時間 (秒単位)
  • end_time
    (数値): URL で指定された複製が終了する時間 (秒単位)
  • format
    (文字列): 人間が判読できる形式の説明
  • format_id
    (文字列): によって指定されるフォーマットコード
    --format
  • format_note
    (文字列): 形式に関する追加情報
  • width
    (数値): 動画の幅
  • height
    (数値): 動画の高さ
  • resolution
    (文字列): 幅と高さのテキストによる説明
  • tbr
    (数値): オーディオとビデオの平均ビットレート (KBit/秒)
  • abr
    (数値): 平均オーディオ ビットレート (KBit/秒)
  • acodec
    (文字列): 使用中のオーディオコーデックの名前
  • asr
    (数値): オーディオ サンプリング レート (Hertz)
  • vbr
    (数値): 平均ビデオ ビットレート (キロビット/秒)
  • fps
    (数値): フレームレート
  • vcodec
    (文字列): 使用中のビデオコーデックの名前
  • container
    (文字列): コンテナー形式の名前
  • filesize
    (数値): バイト数 (事前にわかっている場合)
  • filesize_approx
    (数値): バイト数の推定値
  • protocol
    (文字列): 実際のダウンロードに使用されるプロトコル
  • extractor
    (文字列): エクストラクターの名前
  • extractor_key
    (文字列): エクストラクターのキー名
  • epoch
    (数値): ファイル作成時の Unix エポック
  • autonumber
    (数値): ダウンロードごとに増加する数 (から始まる)
    --autonumber-start
  • playlist
    (文字列): 動画を含む再生リストの名前または ID
  • playlist_index
    (数値): 再生リスト内の動画のインデックスで、再生リストの全長に応じて先行ゼロが埋め込まれます。
  • playlist_id
    (文字列): プレイリスト識別子
  • playlist_title
    (文字列): プレイリストのタイトル
  • playlist_uploader
    (文字列): プレイリストアップローダーのフルネーム
  • playlist_uploader_id
    (文字列): プレイリストアップローダーのニックネームまたはID

論理的な章またはセクションに属するビデオで利用できます。

  • chapter
    (文字列): 動画が属するチャプターの名前またはタイトル
  • chapter_number
    (数値): 動画が属するチャプターの番号
  • chapter_id
    (文字列): 動画が属するチャプターの ID

一部のシリーズまたはプログラムのエピソードであるビデオで利用できます。

  • series
    (文字列): ビデオ エピソードが属するシリーズまたはプログラムのタイトル
  • season
    (文字列): ビデオエピソードが属するシーズンのタイトル
  • season_number
    (数値): 動画エピソードが属するシーズン番号
  • season_id
    (文字列): ビデオ エピソードが属するシーズンの ID
  • episode
    (文字列): ビデオ エピソードのタイトル
  • episode_number
    (数値): シーズン内のビデオエピソードの数
  • episode_id
    (文字列): ビデオ エピソードの ID

トラックまたは音楽アルバムの一部であるメディアで使用できます。

  • track
    (文字列): トラックのタイトル
  • track_number
    (数値): アルバムまたはディスク内のトラック番号
  • track_id
    (文字列): トラックの ID
  • artist
    (文字列): トラックのアーティスト
  • genre
    (文字列): トラックのジャンル
  • album
    (文字列): トラックが属するアルバムのタイトル
  • album_type
    (文字列): アルバムの種類
  • album_artist
    (文字列): アルバムに登場したすべてのアーティストのリスト
  • disc_number
    (数値):トラックが属するディスクまたはその他の物理メディアの番号
  • release_year
    (数値): アルバムがリリースされた年 (YYYY)

出力テンプレートで参照される前述の各シーケンスは、シーケンス名に対応する実際の値に置き換えられます。一部の配列は、特定の抽出器によって取得されたメタデータに依存するため、存在が保証されていないことに注意してください。このようなシーケンスは、(デフォルトで)で指定されたプレースホルダー値に置き換えられます。

--output-na-placeholder
NA

たとえば、タイトルとIDを持つmp4ビデオの場合、これにより、現在のディレクトリにファイルが作成されます。

-o %(title)s-%(id)s.%(ext)s
youtube-dl test video
BaW_jenozKcj
youtube-dl test video-BaW_jenozKcj.mp4

数値シーケンスの場合、数値関連の書式設定を使用できます。たとえば、 のように、ビューカウントに最大5文字のゼロが埋め込まれた文字列になります。

%(view_count)05d
00042

出力テンプレートには、任意の階層パスを含めることもできます。 これにより、このパステンプレートに対応するディレクトリに各ビデオがダウンロードされます。不足しているディレクトリは自動的に作成されます。

-o '%(playlist)s/%(playlist_index)s - %(title)s.%(ext)s'

出力テンプレートでパーセントリテラルを使用するには、.標準出力に出力するには、.

%%
-o -

現在のデフォルト・テンプレートは です。

%(title)s-%(id)s.%(ext)s

場合によっては、ダウンロードしたファイル名をWindowsシステムに転送したり、8ビット安全でないチャネルを介してファイル名を転送する場合など、中、スペース、&などの特殊文字が必要ない場合があります。このような場合は、フラグを追加して短いタイトルを取得します。

--restrict-filenames

出力テンプレートと Windows バッチ ファイル

Windowsバッチファイル内で出力テンプレートを使用している場合は、プレーンパーセント文字()を2倍にエスケープする必要があるため、.しかし、あなたはプレーンな文字ではないに触れてはいけません、例えば拡張のための環境変数はそのままにしておくべきです:。

%
-o "%(title)s-%(id)s.%(ext)s"
-o "%%(title)s-%%(id)s.%%(ext)s"
%
-o "C:\%HOMEPATH%\Desktop\%%(title)s.%%(ext)s"

出力テンプレートの例

Windowsでは、一重引用符の代わりに二重引用符を使用する必要があるかもしれないことに注意してください。

$ youtube-dl --get-filename -o '%(title)s.%(ext)s' BaW_jenozKc
youtube-dl test video ''_ä↭𝕐.mp4    # All kinds of weird characters

$ youtube-dl --get-filename -o '%(title)s.%(ext)s' BaW_jenozKc --restrict-filenames
youtube-dl_test_video_.mp4          # A simple file name

# Download YouTube playlist videos in separate directory indexed by video order in a playlist
$ youtube-dl -o '%(playlist)s/%(playlist_index)s - %(title)s.%(ext)s' https://www.youtube.com/playlist?list=PLwiyx1dc3P2JR9N8gQaQN_BCvlSlap7re

# Download all playlists of YouTube channel/user keeping each playlist in separate directory:
$ youtube-dl -o '%(uploader)s/%(playlist)s/%(playlist_index)s - %(title)s.%(ext)s' https://www.youtube.com/user/TheLinuxFoundation/playlists

# Download Udemy course keeping each chapter in separate directory under MyVideos directory in your home
$ youtube-dl -u user -p password -o '~/MyVideos/%(playlist)s/%(chapter_number)s - %(chapter)s/%(title)s.%(ext)s' https://www.udemy.com/java-tutorial/

# Download entire series season keeping each series and each season in separate directory under C:/MyVideos
$ youtube-dl -o "C:/MyVideos/%(series)s/%(season_number)s - %(season)s/%(episode_number)s - %(episode)s.%(ext)s" https://videomore.ru/kino_v_detalayah/5_sezon/367617

# Stream the video being downloaded to stdout
$ youtube-dl -o - BaW_jenozKc

フォーマット選択

デフォルトでは、youtube-dlは利用可能な最高の品質をダウンロードしようとします、つまり、特別なオプションを渡す必要のない最高の品質が必要な場合は、youtube-dlがデフォルトでそれを推測します。

ただし、接続が遅い場合や断続的な場合など、別の形式でダウンロードしたい場合があります。これを実現するための重要なメカニズムは、いわゆるフォーマット選択であり、それに基づいて、目的のフォーマットを明示的に指定したり、いくつかの基準に基づいてフォーマットを選択したり、セットアップの優先順位などを行うことができます。

フォーマット選択の一般的な構文は、セレクター式、つまりダウンロードしたいフォーマットを記述する式です。

--format FORMAT
-f FORMAT
FORMAT

dr:例に移動します

最も単純なケースは、特定のフォーマットを要求することです, たとえば、フォーマットコードが22に等しいフォーマットをダウンロードできます.特定のビデオで使用可能なフォーマットコードのリストを取得するには、またはを使用します。これらの形式コードは抽出器固有であることに注意してください。

-f 22
--list-formats
-F

また、ファイル拡張子(現在、がサポートされています)を使用して、単一のファイルとして提供される特定のファイル拡張子の最高品質の形式をダウンロードすることもできます。 拡張子が単一のファイルとして提供される最高品質の形式をダウンロードします。

3gp
aac
flv
m4a
mp3
mp4
ogg
wav
webm
-f webm
webm

特別な名前を使用して、特定のエッジケース形式を選択することもできます。

  • best
    :ビデオとオーディオを含む単一のファイルで表される最高品質の形式を選択します。
  • worst
    :ビデオとオーディオを含む単一のファイルで表される最低品質の形式を選択します。
  • bestvideo
    :最高品質のビデオのみの形式(DASHビデオなど)を選択します。ご利用いただけない場合があります。
  • worstvideo
    :最も低品質のビデオのみの形式を選択します。ご利用いただけない場合があります。
  • bestaudio
    :最高品質のオーディオのみの形式を選択します。ご利用いただけない場合があります。
  • worstaudio
    :最低品質のオーディオのみの形式を選択します。ご利用いただけない場合があります。

たとえば、最低品質のビデオのみの形式をダウンロードするには、 を使用できます。

-f worstvideo

複数のビデオをダウンロードする必要があり、それらのビデオに同じ形式がない場合は、スラッシュを使用して優先順序を指定できます。スラッシュは左連想的であり、つまり左側のフォーマットが優先され、たとえば、利用可能な場合はフォーマット22をダウンロードし、それ以外の場合は利用可能な場合はフォーマット17をダウンロードし、それ以外の場合はフォーマット18をダウンロードし、それ以外の場合は適切なフォーマットがダウンロードできないと不平を言うことに注意してください。

-f 22/17/18

同じビデオの複数の形式をダウンロードする場合は、区切り文字としてコンマを使用します。 もちろん、これら3つの形式がすべて利用可能な場合はダウンロードします。または、優先順位機能と組み合わせたより洗練された例: .

-f 22,17,18
-f 136/137/mp4/bestvideo,140/m4a/bestaudio

(または)のように条件を括弧で囲んでビデオ形式をフィルタリングすることもできます。

-f "best[height=720]"
-f "[filesize>10M]"

次の数値メタフィールドは、比較、、、、(等しい)、(等しくない)で使用できます。

<
<=
>
>=
=
!=

  • filesize
    : バイト数 (事前にわかっている場合)
  • width
    : 動画の幅(わかっている場合)
  • height
    : 動画の高さ(わかっている場合)
  • tbr
    :オーディオとビデオの平均ビットレート(KBit / s)
  • abr
    : 平均オーディオ ビットレート (KBit/秒)
  • vbr
    : 平均ビデオ ビットレート (KBit/秒)
  • asr
    :ハーツ単位のオーディオサンプリングレート
  • fps
    :フレームレート

また、比較(等しい)、(で始まる)、(で終わる)、(含む)、および次の文字列メタフィールドのフィルタリングも機能します。

=
^=
$=
*=

  • ext
    : ファイル拡張子
  • acodec
    : 使用中のオーディオコーデックの名前
  • vcodec
    :使用中のビデオコーデックの名前
  • container
    : コンテナ形式の名前
  • protocol
    : 実際のダウンロードに使用されるプロトコル (小文字 (、、または
    http
    https
    rtsp
    rtmp
    rtmpe
    mms
    f4m
    ism
    http_dash_segments
    m3u8
    m3u8_native
    )
  • format_id
    : フォーマットの簡単な説明
  • language
    : 言語コード

文字列比較には、反対の比較を生成するために否定を付けることができます。 (含まれていません)。

!
!*=

前述のメタフィールドのいずれも、特定の抽出器によって取得されたメタデータ、つまりビデオホスティングによって提供されるメタデータにのみ依存するため、存在が保証されていないことに注意してください。

値が不明な形式は、演算子の後に疑問符 () を付けない限り除外されます。フォーマットフィルターを組み合わせることができるため、ビットレートが500 KBit / s以上の最大720pのビデオ(または高さが不明なビデオ)を選択します。

?
-f "[height <=? 720][tbr>500]"

たとえば、最高のビデオのみの形式、最高のオーディオのみの形式をダウンロードし、ffmpeg / avconvと一緒に多重化するために、2つの形式のビデオとオーディオを1つのファイルにマージできます(ffmpegまたはavconvがインストールされている必要があります)。

-f <video-format>+<audio-format>
-f bestvideo+bestaudio

フォーマットセレクターは、括弧を使用してグループ化することもできます、たとえば、高さが480未満の最高のmp4およびwebm形式をダウンロードする場合は、使用できます。

-f '(mp4,webm)[height<480]'

2015年4月末およびバージョン2015.04.26以降、youtube-dlはデフォルトのフォーマット選択として使用されます(#5447、#5456を参照)。ffmpegまたはavconvがインストールされている場合、ダウンロードされ、個別に、それらを1つのファイルにまとめてマルチプレクサし、利用可能な最高の全体的な品質を提供します。それ以外の場合は、フォールバックし、単一のファイルとして提供される利用可能な最高の品質をダウンロードします。 は、2つの異なるファイルでオーディオとビデオを提供しないため、YouTubeから来ていないビデオにも必要です。一部のDASH形式のみをダウンロードする場合(たとえば、1080pを超える解像度のビデオを取得する必要がない場合)、構成ファイルに追加できます。youtube-dlを使用してストリーミングする場合(そしてメディアプレーヤーにパイプする可能性が最も高い場合)、つまり出力テンプレートを明示的に次のように指定した場合、youtube-dlは引き続きフォーマット選択を使用して、プレーヤーへのコンテンツ配信をすぐに開始し、ダウンロードされて多重化されるまで待たないようにします。

-f bestvideo+bestaudio/best
bestvideo
bestaudio
best
best
-f bestvideo[height<=?1080]+bestaudio/best
stdout
-o -
-f best
bestvideo
bestaudio

古いフォーマット選択動作(youtube-dl 2015.04.26より前)を保持する場合、つまり、単一のファイルとして提供される利用可能な最高品質のメディアをダウンロードする場合は、で選択を明示的に指定する必要があります。youtube-dlを実行するたびに入力しないように、構成ファイルに追加することをお勧めします。

-f best

フォーマット選択の例

Windowsでは、一重引用符の代わりに二重引用符を使用する必要があるかもしれないことに注意してください。

# Download best mp4 format available or any other best if no mp4 available
$ youtube-dl -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best'

# Download best format available but no better than 480p
$ youtube-dl -f 'bestvideo[height<=480]+bestaudio/best[height<=480]'

# Download best video only format but no bigger than 50 MB
$ youtube-dl -f 'best[filesize<50M]'

# Download best format available via direct link over HTTP/HTTPS protocol
$ youtube-dl -f '(bestvideo+bestaudio/best)[protocol^=http]'

# Download the best video format and the best audio format without merging them
$ youtube-dl -f 'bestvideo,bestaudio' -o '%(title)s.f%(format_id)s.%(ext)s'

最後の例では、ベストビデオとベストオーディオが同じファイル名を持つ可能性があるため、出力テンプレートが推奨されていることに注意してください。

ビデオ選択

ビデオは、オプション、またはを使用してアップロード日でフィルタリングできます。日付は 2 つの形式で受け付けます。

--date
--datebefore
--dateafter

  • 絶対日付: 形式の日付。
    YYYYMMDD
  • 相対日付: 形式の日付
    (now|today)[+-][0-9](day|week|month|year)(s)?

例:

# Download only the videos uploaded in the last 6 months
$ youtube-dl --dateafter now-6months

# Download only the videos uploaded on January 1, 1970
$ youtube-dl --date 19700101

$ # Download only the videos uploaded in the 200x decade
$ youtube-dl --dateafter 20000101 --datebefore 20091231

FAQ

youtube-dlを更新するにはどうすればよいですか?

手動インストールの手順に従った場合は、単に実行できます(または、Linuxの場合は)。

youtube-dl -U
sudo youtube-dl -U

pipを使用したことがある場合は、更新するには単純なもので十分です。

sudo pip install -U youtube-dl

apt-getyumなどのパッケージマネージャーを使用してyoutube-dlをインストールした場合は、標準のシステム更新メカニズムを使用して更新します。配布パッケージは古くなっていることが多いことに注意してください。経験則として、youtube-dlは少なくとも月に1回、多くの場合毎週または毎日リリースします。https://yt-dl.org にアクセスして、現在のバージョンを確認してください。残念ながら、あなたのディストリビューションが本当に古いバージョンを提供している場合、私たちyoutube-dl開発者は何もできません。あなたは彼らのバグトラッカーまたはサポートフォーラムであなたのディストリビューションに文句を言うことができます(そしてそうすべきです)。

最後の手段として、パッケージマネージャーによってインストールされたバージョンをアンインストールし、手動インストール手順に従うこともできます。そのためには、ディストリビューションのパッケージを次のような行で削除します

sudo apt-get remove -y youtube-dl

その後、手動インストール手順に従ってください

sudo wget https://yt-dl.org/downloads/latest/youtube-dl -O /usr/local/bin/youtube-dl
sudo chmod a+rx /usr/local/bin/youtube-dl
hash -r

繰り返しになりますが、それ以降はで更新できるようになります。

sudo youtube-dl -U

youtube-dlはWindowsで起動するのが非常に遅いです

Windows ディフェンダーの設定でファイルの除外を追加します。

youtube-dl.exe

YouTube の再生リストでエラーが発生する
Unable to extract OpenGraph title

YouTubeは2014年3月以降にプレイリスト形式を変更したため、すべてのYouTube動画をダウンロードするには、少なくともyoutube-dl 2014.07.25が必要です。

パッケージマネージャー、pip、setup.py、またはtarballを使用してyoutube-dlをインストールした場合は、それを使用して更新してください。Ubuntuパッケージはもう更新されていないようです。私たちはUbuntuと提携していないので、私たちにできることはほとんどありません。Ubuntuパッケージングの人々にバグを報告してください-彼らがしなければならないのは、パッケージをやや新しいバージョンに更新することだけです。更新方法については、上記を参照してください。

出力テンプレートを使用しようとするとエラーが発生します。
error: using output template conflicts with using title, video ID or auto number

これらのオプション、、、またはコマンドラインまたは構成ファイルで設定を使用していないことを確認してください。後者がある場合は削除します。

-o
-t
--title
--id
-A
--auto-number

私は常に合格する必要がありますか?
-citw

デフォルトでは、youtube-dlは最良のオプションを用意する予定です(ちなみに、これらが異なるはずだという説得力のあるケースがある場合は、それを説明して問題を提出してください)。したがって、Web ページから長いオプション文字列をコピーすることは不要であり、場合によっては有害です。特に、そのうちの唯一のオプションは定期的に役立ちます。

-citw
-i

オプションを元に戻していただけますか?
-b

この質問をするほとんどの人は、YouTube-dlがYouTubeによって報告された利用可能な最高の品質(場合によっては1080pまたは720p)をダウンロードするようにデフォルトで設定されることに気づいていないため、このオプションは不要になりました。一部の特定の動画については、興味のある特定の高品質フォーマットで利用できるとYouTubeが報告していない場合があります。その場合は、オプションでリクエストするだけで、youtube-dlがダウンロードを試みます。

-b
-f

ビデオをダウンロードしようとするとHTTPエラー402が発生します。これは、何ですか。

どうやらYouTubeでは、ダウンロードしすぎるとCAPTCHAテストに合格する必要があります。CAPTCHAを解決できる方法を提供することを検討していますが、現時点では、ウェブブラウザでYouTubeのURLをポイントし、CAPTCHAを解決し、youtube-dlを再起動するのが最善の行動です。

他のプログラムが必要ですか?

YouTube-DLは、ほとんどのサイトで単独で正常に動作します。ただし、ビデオ/オーディオを変換する場合は、avconvまたはffmpegが必要です。一部のサイト(特にYouTube)では、音声なしで高品質の形式でビデオを取得できます。YouTube-DLはAVCONV / FFMPEGが存在するかどうかを検出し、最適なオプションを自動的に選択します。

RTMP プロトコルを介してストリーミングされるビデオまたはビデオ形式は、rtmpdump がインストールされている場合にのみダウンロードできます。MMS および RTSP ビデオをダウンロードするには、mplayer または mpv のいずれかをインストールする必要があります。

ビデオをダウンロードしましたが、どうすれば再生できますか?

ビデオが完全にダウンロードされたら、mpvvlcmplayerなどのビデオプレーヤーを使用します。

でビデオURLを抽出しましたが、別のマシン/Webブラウザで再生されません。
-g

それはサービスに大きく依存します。多くの場合、ビデオのリクエスト(ダウンロード/再生)は、同じIPアドレスから、同じCookieやHTTPヘッダーを使用して送信する必要があります。このオプションを使用して、必要な Cookie をファイルに書き込み、ダウンローダーにそのファイルから Cookie を読み取るように指示します。一部のサイトでは、共通のユーザーエージェントを使用する必要があり、youtube-dlで使用されているものを確認するために使用します。また、で取得したJSON出力から必要なクッキーとHTTPヘッダーを取得することもできます。

--cookies
--dump-user-agent
--dump-json

IPv6 を使用すると便利な場合があります。場合によっては、制限は IPv4 にのみ適用されます。一部のサービス(場合によっては動画のサブセットのみ)では、IPアドレス、Cookie、またはユーザーエージェントによって動画のURLを制限しませんが、これらはルールではなく例外です。

一部のURLプロトコルは、RTMPを含むブラウザですぐにサポートされていないことに注意してください。を使用している場合は、独自のダウンローダーもこれらをサポートしている必要があります。

-g

youtube-dl を実行していないマシンでビデオを再生する場合は、youtube-dl を実行しているマシンからビデオ コンテンツを中継できます。を使用して、youtube-dl にビデオを stdout にストリーミングさせたり、単に youtube-dl によって書き込まれたファイルをプレーヤーが順番にダウンロードできるようにしたりできます。

-o -

エラー:ビデオ情報にfmt_url_mapまたは接続情報が見つかりません

YouTubeは2011年7月に、古いバージョンのyoutube-dlでサポートされていない新しいビデオ情報形式に切り替えました。YouTube-dl を更新する方法については、上記を参照してください。

エラー:ビデオをダウンロードできません

YouTube では、2012 年 9 月以降、古いバージョンの youtube-dl でサポートされていない追加の署名が必要です。YouTube-dl を更新する方法については、上記を参照してください。

ビデオURLにアンパサンドが含まれており、奇妙な出力を取得している、または
[1] 2839
'v' is not recognized as an internal or external command

それは実際にあなたのシェルからの出力です。アンパサンドは特殊なシェル文字の1つであるため、シェルによって解釈され、URL全体をyoutube-dlに渡すことができません。シェルがアンパサンド(またはその他の特殊文字)を解釈しないようにするには、URL全体を引用符で囲むか、バックスラッシュでエスケープする必要があります(どちらのアプローチが機能するかはシェルによって異なります)。

たとえば、URLが https://www.youtube.com/watch?t=4&v=BaW_jenozKc の場合次のコマンドで終わるはずです。

youtube-dl 'https://www.youtube.com/watch?t=4&v=BaW_jenozKc'

又は

youtube-dl https://www.youtube.com/watch?t=4\&v=BaW_jenozKc

Windowsの場合は、二重引用符を使用する必要があります。

youtube-dl "https://www.youtube.com/watch?t=4&v=BaW_jenozKc"

抽出エラー: JS 関数 u'OF' が見つかりませんでした

2015年2月、新しいYouTubeプレーヤーには、古いバージョンのyoutube-dlによって誤って解釈された文字列に文字シーケンスが含まれていました。YouTube-dl を更新する方法については、上記を参照してください。

HTTP エラー 429: 要求が多すぎます または 402: 支払いが必要です

これらの2つのエラーコードは、サービスが過剰使用のためにIPアドレスをブロックしていることを示しています。通常、これはソフトブロックであり、CAPTCHAを解決した後に再びアクセスできることを意味します。ブラウザを開いてCAPTCHAを解決するだけで、サービスが提案し、その後、クッキーをyoutube-dlにします。マシンに複数の外部IPがある場合は、CAPTCHAを解決するために使用したのとまったく同じIPを--source-addressで渡す必要があることに注意してください。また、ブラウザのHTTPヘッダーを--user-agentで渡す必要があるかもしれません。

User-Agent

そうでない場合(サービスによって解決が提案されたCAPTCHAがない場合)、サービスに連絡してIPアドレスのブロックを解除するように依頼するか、ホワイトリストに登録されたIPアドレスをすでに取得している場合は、--proxyまたは--source-addressオプションを使用して別のIPアドレスを選択できます。

構文エラー: 非 ASCII 文字

エラー

File "youtube-dl", line 2
SyntaxError: Non-ASCII character '\x93' ...

は、古いバージョンのPythonを使用していることを意味します。Python 2.6 または 2.7 に更新してください。

このバイナリファイルは何ですか?コードはどこに行ったのですか?

2012年6月(#342)以降、youtube-dlは実行可能なzipファイルとしてパックされており、上記のように解凍するか(一部のシステムでは最初に名前を変更する必要があるかもしれません)、gitリポジトリを複製します。コードを変更する場合は、ファイルを実行して実行できます。実行可能ファイルを再コンパイルするには、を実行します。

youtube-dl.zip
__main__.py
make youtube-dl

exeは見つからないためにエラーをスローします
MSVCR100.dll

exeを実行するには、まずMicrosoft Visual C ++ 2010 Service Pack 1再頒布可能パッケージ(x86)をインストールする必要があります。

Windowsでは、ffmpegとyoutube-dlをどのように設定すればよいですか?exeファイルはどこに置くべきですか?

コマンドを実行しているのと同じディレクトリにyoutube-dlとffmpegを置くと機能しますが、それはかなり面倒です。

ffmpeg、youtube-dl、またはその両方で別のディレクトリを機能させるには、ディレクトリを作成し(たとえば、、または)、すべての実行可能ファイルを直接そこに配置してから、そのディレクトリを含めるようにPATH環境変数を設定します

C:\bin
C:\Users\<User name>\bin

それ以降、シェルを再起動すると、どのディレクトリにいても、またはを入力するだけで、youtube-dlとffmpegの両方にアクセスできるようになります(そしてyoutube-dlはffmpegを見つけることができます)。

youtube-dl
ffmpeg

ダウンロードを特定のフォルダに入れるにはどうすればよいですか?

出力テンプレートを指定するには、 などを使用します。すべてのダウンロードでこれが必要な場合は、設定ファイルにオプションを入れてください。

-o
-o "/home/user/videos/%(title)s-%(id)s.%(ext)s"

で始まるビデオをダウンロードするにはどうすればよいですか?
-

ID を先頭に追加するか、オプションから :

https://www.youtube.com/watch?v=
--

youtube-dl -- -wNyEUrxzFU
youtube-dl "https://www.youtube.com/watch?v=-wNyEUrxzFU"

クッキーをyoutube-dlに渡すにはどうすればよいですか?

たとえば、 オプションを使用します。

--cookies
--cookies /path/to/cookies/file.txt

ブラウザからクッキーを抽出するには、クッキーをエクスポートするための準拠ブラウザ拡張機能を使用してください。たとえば、Get cookies.txt(Chrome の場合)や cookies.txt(Firefox の場合)などです。

クッキーファイルは Mozilla/Netscape フォーマットでなければならず、クッキーファイルの最初の行は または .クッキーファイルに正しい改行形式があることを確認し、必要に応じてOSに対応するように改行を変換します(つまり、Windowsの場合は()、UnixおよびUnixライクなシステム(Linux、macOSなど)の場合は()です。 使用する場合は、無効な改行形式の良い兆候です。

# HTTP Cookie File
# Netscape HTTP Cookie File
CRLF
\r\n
LF
\n
HTTP Error 400: Bad Request
--cookies

youtube-dlにクッキーを渡すことは、特定のエクストラクタが明示的に実装していない場合にログインを回避するための良い方法です。別のユースケースは、CAPTCHAを回避する作業であり、一部のWebサイトでは、アクセスするために特定のケースを解決する必要があります(YouTube、CloudFlareなど)。

メディアプレーヤーに直接ストリーミングするにはどうすればよいですか?

最初にyoutube-dlにメディアをstdoutにストリーミングするように指示し、メディアプレーヤーにstdinから読み取るように指示し(ストリーミングにはこれが可能である必要があります)、前者を後者にパイプする必要があります。たとえば、vlc へのストリーミングは、次の方法で実現できます。

-o -

youtube-dl -o - "https://www.youtube.com/watch?v=BaW_jenozKcj" | vlc -

再生リストから新しい動画のみをダウンロードするにはどうすればよいですか?

ダウンロード/アーカイブ機能を使用します。この機能を使用すると、最初に完全なプレイリストをダウンロードして、すべてのビデオの識別子を特別なファイルに記録する必要があります。同じものを使用して後続の各実行は、新しいビデオのみをダウンロードし、以前にダウンロードされたすべてのビデオをスキップします。成功したダウンロードのみがファイルに記録されることに注意してください。

--download-archive /path/to/download/archive/file.txt
--download-archive

たとえば、最初は、

youtube-dl --download-archive archive.txt "https://www.youtube.com/playlist?list=PLwiyx1dc3P2JR9N8gQaQN_BCvlSlap7re"

完全なプレイリストをダウンロードしてファイルを作成します。後続の各実行では、新しいビデオがある場合にのみダウンロードされます。

PLwiyx1dc3P2JR9N8gQaQN_BCvlSlap7re
archive.txt

youtube-dl --download-archive archive.txt "https://www.youtube.com/playlist?list=PLwiyx1dc3P2JR9N8gQaQN_BCvlSlap7re"

Should I add into my config?
--hls-prefer-native

When youtube-dl detects an HLS video, it can download it either with the built-in downloader or ffmpeg. Since many HLS streams are slightly invalid and ffmpeg/youtube-dl each handle some invalid cases better than the other, there is an option to switch the downloader if needed.

When youtube-dl knows that one particular downloader works better for a given website, that downloader will be picked. Otherwise, youtube-dl will pick the best downloader for general compatibility, which at the moment happens to be ffmpeg. This choice may change in future versions of youtube-dl, with improvements of the built-in downloader and/or ffmpeg.

In particular, the generic extractor (used when your website is not in the list of supported sites by youtube-dl cannot mandate one specific downloader.

If you put either or into your configuration, a different subset of videos will fail to download correctly. Instead, it is much better to file an issue or a pull request which details why the native or the ffmpeg HLS downloader is a better choice for your use case.

--hls-prefer-native
--hls-prefer-ffmpeg

Can you add support for this anime video site, or site which shows current movies for free?

As a matter of policy (as well as legality), youtube-dl does not include support for services that specialize in infringing copyright. As a rule of thumb, if you cannot easily find a video that the service is quite obviously allowed to distribute (i.e. that has been uploaded by the creator, the creator's distributor, or is published under a free license), the service is probably unfit for inclusion to youtube-dl.

A note on the service that they don't host the infringing content, but just link to those who do, is evidence that the service should not be included into youtube-dl. The same goes for any DMCA note when the whole front page of the service is filled with videos they are not allowed to distribute. A "fair use" note is equally unconvincing if the service shows copyright-protected videos in full without authorization.

Support requests for services that do purchase the rights to distribute their content are perfectly fine though. If in doubt, you can simply include a source that mentions the legitimate purchase of content.

How can I speed up work on my issue?

(Also known as: Help, my important issue not being solved!) The youtube-dl core developer team is quite small. While we do our best to solve as many issues as possible, sometimes that can take quite a while. To speed up your issue, here's what you can do:

First of all, please do report the issue at our issue tracker. That allows us to coordinate all efforts by users and developers, and serves as a unified point. Unfortunately, the youtube-dl project has grown too large to use personal email as an effective communication channel.

Please read the bug reporting instructions below. A lot of bugs lack all the necessary information. If you can, offer proxy, VPN, or shell access to the youtube-dl developers. If you are able to, test the issue from multiple computers in multiple countries to exclude local censorship or misconfiguration issues.

If nobody is interested in solving your issue, you are welcome to take matters into your own hands and submit a pull request (or coerce/pay somebody else to do so).

Feel free to bump the issue from time to time by writing a small comment ("Issue is still present in youtube-dl version ...from France, but fixed from Belgium"), but please not more than once a month. Please do not declare your issue as or .

important
urgent

How can I detect whether a given URL is supported by youtube-dl?

For one, have a look at the list of supported sites. Note that it can sometimes happen that the site changes its URL scheme (say, from https://example.com/video/1234567 to https://example.com/v/1234567 ) and youtube-dl reports an URL of a service in that list as unsupported. In that case, simply report a bug.

It is not possible to detect whether a URL is supported or not. That's because youtube-dl contains a generic extractor which matches all URLs. You may be tempted to disable, exclude, or remove the generic extractor, but the generic extractor not only allows users to extract videos from lots of websites that embed a video from another service, but may also be used to extract video from a service that it's hosting itself. Therefore, we neither recommend nor support disabling, excluding, or removing the generic extractor.

If you want to find out whether a given URL is supported, simply call youtube-dl with it. If you get no videos back, chances are the URL is either not referring to a video or unsupported. You can find out which by examining the output (if you run youtube-dl on the console) or catching an exception if you run it from a Python program.

UnsupportedError

Why do I need to go through that much red tape when filing bugs?

Before we had the issue template, despite our extensive bug reporting instructions, about 80% of the issue reports we got were useless, for instance because people used ancient versions hundreds of releases old, because of simple syntactic errors (not in youtube-dl but in general shell usage), because the problem was already reported multiple times before, because people did not actually read an error message, even if it said "please install ffmpeg", because people did not mention the URL they were trying to download and many more simple, easy-to-avoid problems, many of whom were totally unrelated to youtube-dl.

youtube-dl is an open-source project manned by too few volunteers, so we'd rather spend time fixing bugs where we are certain none of those simple problems apply, and where we can be reasonably confident to be able to reproduce the issue without asking the reporter repeatedly. As such, the output of is really all that's required to file an issue. The issue template also guides you through some basic steps you can do, such as checking that your version of youtube-dl is current.

youtube-dl -v YOUR_URL_HERE

DEVELOPER INSTRUCTIONS

Most users do not need to build youtube-dl and can download the builds or get them from their distribution.

To run youtube-dl as a developer, you don't need to build anything either. Simply execute

python -m youtube_dl

To run the test, simply invoke your favorite test runner, or execute a test file directly; any of the following work:

python -m unittest discover
python test/test_download.py
nosetests

See item 6 of new extractor tutorial for how to run extractor specific test cases.

If you want to create a build of youtube-dl yourself, you'll need

  • python
  • make (only GNU make is supported)
  • pandoc
  • zip
  • nosetests

Adding support for a new site

If you want to add support for a new site, first of all make sure this site is not dedicated to copyright infringement. youtube-dl does not support such sites thus pull requests adding support for them will be rejected.

After you have ensured this site is distributing its content legally, you can follow this quick list (assuming your service is called ):

yourextractor

  1. Fork this repository

  2. Check out the source code with:

     git clone git@github.com:YOUR_GITHUB_USERNAME/youtube-dl.git
    
  3. Start a new git branch with

     cd youtube-dl
     git checkout -b yourextractor
    
  4. Start with this simple template and save it to :

    youtube_dl/extractor/yourextractor.py

    # coding: utf-8
    from __future__ import unicode_literals
    
    from .common import InfoExtractor
    
    
    class YourExtractorIE(InfoExtractor):
        _VALID_URL = r'https?://(?:www\.)?yourextractor\.com/watch/(?P<id>[0-9]+)'
        _TEST = {
            'url': 'https://yourextractor.com/watch/42',
            'md5': 'TODO: md5 sum of the first 10241 bytes of the video file (use --test)',
            'info_dict': {
                'id': '42',
                'ext': 'mp4',
                'title': 'Video title goes here',
                'thumbnail': r're:^https?://.*\.jpg$',
                # TODO more properties, either as:
                # * A value
                # * MD5 checksum; start the string with md5:
                # * A regular expression; start the string with re:
                # * Any Python type (for example int or float)
            }
        }
    
        def _real_extract(self, url):
            video_id = self._match_id(url)
            webpage = self._download_webpage(url, video_id)
    
            # TODO more code goes here, for example ...
            title = self._html_search_regex(r'<h1>(.+?)</h1>', webpage, 'title')
    
            return {
                'id': video_id,
                'title': title,
                'description': self._og_search_description(webpage),
                'uploader': self._search_regex(r'<div[^>]+id="uploader"[^>]*>([^<]+)<', webpage, 'uploader', fatal=False),
                # TODO more properties (see youtube_dl/extractor/common.py)
            }
  5. Add an import in

    youtube_dl/extractor/extractors.py
    .

  6. Run . This should fail at first, but you can continually re-run it until you're done. If you decide to add more than one test (actually, test case) then rename to and make it into a list of dictionaries. The tests will then be named , , , etc. Note:

    python test/test_download.py TestDownload.test_YourExtractor
    _TEST
    _TESTS
    TestDownload.test_YourExtractor
    TestDownload.test_YourExtractor_1
    TestDownload.test_YourExtractor_2

    • the test names use the extractor class name without the trailing
      IE
    • tests with key in test's dict are not counted.
      only_matching
  7. Have a look at

    youtube_dl/extractor/common.py
    for possible helper methods and a detailed description of what your extractor should and may return. Add tests and code for as many as you want.

  8. Make sure your code follows youtube-dl coding conventions and check the code with flake8:

     $ flake8 youtube_dl/extractor/yourextractor.py
    
  9. Make sure your code works under all Python versions claimed supported by youtube-dl, namely 2.6, 2.7, and 3.2+.

  10. When the tests pass, add the new files and commit them and push the result, like this:

    $ git add youtube_dl/extractor/extractors.py
    $ git add youtube_dl/extractor/yourextractor.py
    $ git commit -m '[yourextractor] Add new extractor'
    $ git push origin yourextractor
    
  11. Finally, create a pull request. We'll then review and merge it.

In any case, thank you very much for your contributions!

youtube-dl coding conventions

This section introduces a guide lines for writing idiomatic, robust and future-proof extractor code.

Extractors are very fragile by nature since they depend on the layout of the source data provided by 3rd party media hosters out of your control and this layout tends to change. As an extractor implementer your task is not only to write code that will extract media links and metadata correctly but also to minimize dependency on the source's layout and even to make the code foresee potential future changes and be ready for that. This is important because it will allow the extractor not to break on minor layout changes thus keeping old youtube-dl versions working. Even though this breakage issue is easily fixed by emitting a new version of youtube-dl with a fix incorporated, all the previous versions become broken in all repositories and distros' packages that may not be so prompt in fetching the update from us. Needless to say, some non rolling release distros may never receive an update at all.

Mandatory and optional metafields

For extraction to work youtube-dl relies on metadata your extractor extracts and provides to youtube-dl expressed by an information dictionary or simply info dict. Only the following meta fields in the info dict are considered mandatory for a successful extraction process by youtube-dl:

  • id
    (media identifier)
  • title
    (media title)
  • url
    (media download URL) or
    formats

In fact only the last option is technically mandatory (i.e. if you can't figure out the download location of the media the extraction does not make any sense). But by convention youtube-dl also treats and as mandatory. Thus the aforementioned metafields are the critical data that the extraction does not make any sense without and if any of them fail to be extracted then the extractor is considered completely broken.

id
title

Any field apart from the aforementioned ones are considered optional. That means that extraction should be tolerant to situations when sources for these fields can potentially be unavailable (even if they are always available at the moment) and future-proof in order not to break the extraction of general purpose mandatory fields.

Example

Say you have some source dictionary that you've fetched as JSON with HTTP request and it has a key :

meta
summary

meta = self._download_json(url, video_id)

Assume at this point 's layout is:

meta

{
    ...
    "summary": "some fancy summary text",
    ...
}

Assume you want to extract and put it into the resulting info dict as . Since is an optional meta field you should be ready that this key may be missing from the dict, so that you should extract it like:

summary
description
description
meta

description = meta.get('summary')  # correct

and not like:

description = meta['summary']  # incorrect

The latter will break extraction process with if disappears from at some later time but with the former approach extraction will just go ahead with set to which is perfectly fine (remember is equivalent to the absence of data).

KeyError
summary
meta
description
None
None

Similarly, you should pass when extracting optional data from a webpage with , or similar methods, for instance:

fatal=False
_search_regex
_html_search_regex

description = self._search_regex(
    r'<span[^>]+id="title"[^>]*>([^<]+)<',
    webpage, 'description', fatal=False)

With set to if fails to extract it will emit a warning and continue extraction.

fatal
False
_search_regex
description

You can also pass , for example:

default=<some fallback value>

description = self._search_regex(
    r'<span[^>]+id="title"[^>]*>([^<]+)<',
    webpage, 'description', default=None)

On failure this code will silently continue the extraction with set to . That is useful for metafields that may or may not be present.

description
None

Provide fallbacks

When extracting metadata try to do so from multiple sources. For example if is present in several places, try extracting from at least some of them. This makes it more future-proof in case some of the sources become unavailable.

title

Example

Say from the previous example has a and you are about to extract it. Since is a mandatory meta field you should end up with something like:

meta
title
title

title = meta['title']

If disappears from in future due to some changes on the hoster's side the extraction would fail since is mandatory. That's expected.

title
meta
title

Assume that you have some another source you can extract from, for example HTML meta of a . In this case you can provide a fallback scenario:

title
og:title
webpage

title = meta.get('title') or self._og_search_title(webpage)

This code will try to extract from first and if it fails it will try extracting from a .

meta
og:title
webpage

Regular expressions

Don't capture groups you don't use

Capturing group must be an indication that it's used somewhere in the code. Any group that is not used must be non capturing.

Example

Don't capture id attribute name here since you can't use it for anything anyway.

Correct:

r'(?:id|ID)=(?P<id>\d+)'

Incorrect:

r'(id|ID)=(?P<id>\d+)'

Make regular expressions relaxed and flexible

When using regular expressions try to write them fuzzy, relaxed and flexible, skipping insignificant parts that are more likely to change, allowing both single and double quotes for quoted values and so on.

Example

Say you need to extract from the following HTML code:

title

<span style="position: absolute; left: 910px; width: 90px; float: right; z-index: 9999;" class="title">some fancy title</span>

The code for that task should look similar to:

title = self._search_regex(
    r'<span[^>]+class="title"[^>]*>([^<]+)', webpage, 'title')

Or even better:

title = self._search_regex(
    r'<span[^>]+class=(["\'])title\1[^>]*>(?P<title>[^<]+)',
    webpage, 'title', group='title')

Note how you tolerate potential changes in the attribute's value or switch from using double quotes to single for attribute:

style
class

The code definitely should not look like:

title = self._search_regex(
    r'<span style="position: absolute; left: 910px; width: 90px; float: right; z-index: 9999;" class="title">(.*?)</span>',
    webpage, 'title', group='title')

Long lines policy

There is a soft limit to keep lines of code under 80 characters long. This means it should be respected if possible and if it does not make readability and code maintenance worse.

For example, you should never split long string literals like URLs or some other often copied entities over multiple lines to fit this limit:

Correct:

'https://www.youtube.com/watch?v=FqZTN594JQw&list=PLMYEtVRpaqY00V9W81Cwmzp6N6vZqfUKD4'

Incorrect:

'https://www.youtube.com/watch?v=FqZTN594JQw&list='
'PLMYEtVRpaqY00V9W81Cwmzp6N6vZqfUKD4'

Inline values

Extracting variables is acceptable for reducing code duplication and improving readability of complex expressions. However, you should avoid extracting variables used only once and moving them to opposite parts of the extractor file, which makes reading the linear flow difficult.

Example

Correct:

title = self._html_search_regex(r'<title>([^<]+)</title>', webpage, 'title')

Incorrect:

TITLE_RE = r'<title>([^<]+)</title>'
# ...some lines of code...
title = self._html_search_regex(TITLE_RE, webpage, 'title')

Collapse fallbacks

Multiple fallback values can quickly become unwieldy. Collapse multiple fallback values into a single expression via a list of patterns.

Example

Good:

description = self._html_search_meta(
    ['og:description', 'description', 'twitter:description'],
    webpage, 'description', default=None)

Unwieldy:

description = (
    self._og_search_description(webpage, default=None)
    or self._html_search_meta('description', webpage, default=None)
    or self._html_search_meta('twitter:description', webpage, default=None))

Methods supporting list of patterns are: , , , .

_search_regex
_html_search_regex
_og_search_property
_html_search_meta

Trailing parentheses

Always move trailing parentheses after the last argument.

Example

Correct:

    lambda x: x['ResultSet']['Result'][0]['VideoUrlSet']['VideoUrl'],
    list)

Incorrect:

    lambda x: x['ResultSet']['Result'][0]['VideoUrlSet']['VideoUrl'],
    list,
)

Use convenience conversion and parsing functions

Wrap all extracted numeric data into safe functions from

youtube_dl/utils.py
: , . Use them for string to number conversions as well.
int_or_none
float_or_none

Use for safe URL processing.

url_or_none

Use for safe metadata extraction from parsed JSON.

try_get

Use for uniform or any meta field extraction, for uniform extraction, for extraction, for count meta fields extraction, , for extraction, for extraction.

unified_strdate
upload_date
YYYYMMDD
unified_timestamp
timestamp
parse_filesize
filesize
parse_count
parse_resolution
parse_duration
duration
parse_age_limit
age_limit

Explore

youtube_dl/utils.py
for more useful convenience functions.

More examples

Safely extract optional description from parsed JSON
description = try_get(response, lambda x: x['result']['video'][0]['summary'], compat_str)
Safely extract more optional metadata
video = try_get(response, lambda x: x['result']['video'][0], dict) or {}
description = video.get('summary')
duration = float_or_none(video.get('durationMs'), scale=1000)
view_count = int_or_none(video.get('views'))

EMBEDDING YOUTUBE-DL

youtube-dl makes the best effort to be a good command-line program, and thus should be callable from any programming language. If you encounter any problems parsing its output, feel free to create a report.

From a Python program, you can embed youtube-dl in a more powerful fashion, like this:

from __future__ import unicode_literals
import youtube_dl

ydl_opts = {}
with youtube_dl.YoutubeDL(ydl_opts) as ydl:
    ydl.download(['https://www.youtube.com/watch?v=BaW_jenozKc'])

Most likely, you'll want to use various options. For a list of options available, have a look at

youtube_dl/YoutubeDL.py
. For a start, if you want to intercept youtube-dl's output, set a object.
logger

Here's a more complete example of a program that outputs only errors (and a short message after the download is finished), and downloads/converts the video to an mp3 file:

from __future__ import unicode_literals
import youtube_dl


class MyLogger(object):
    def debug(self, msg):
        pass

    def warning(self, msg):
        pass

    def error(self, msg):
        print(msg)


def my_hook(d):
    if d['status'] == 'finished':
        print('Done downloading, now converting ...')


ydl_opts = {
    'format': 'bestaudio/best',
    'postprocessors': [{
        'key': 'FFmpegExtractAudio',
        'preferredcodec': 'mp3',
        'preferredquality': '192',
    }],
    'logger': MyLogger(),
    'progress_hooks': [my_hook],
}
with youtube_dl.YoutubeDL(ydl_opts) as ydl:
    ydl.download(['https://www.youtube.com/watch?v=BaW_jenozKc'])

BUGS

Bugs and suggestions should be reported at: https://github.com/ytdl-org/youtube-dl/issues. Unless you were prompted to or there is another pertinent reason (e.g. GitHub fails to accept the bug report), please do not send bug reports via personal email. For discussions, join us in the IRC channel #youtube-dl on freenode (webchat).

Please include the full output of youtube-dl when run with

-v
, i.e. add flag to your command line, copy the whole output and post it in the issue body wrapped in ``` for better formatting. It should look similar to this:
-v

$ youtube-dl -v <your command line>
[debug] System config: []
[debug] User config: []
[debug] Command-line args: [u'-v', u'https://www.youtube.com/watch?v=BaW_jenozKcj']
[debug] Encodings: locale cp1251, fs mbcs, out cp866, pref cp1251
[debug] youtube-dl version 2015.12.06
[debug] Git HEAD: 135392e
[debug] Python version 2.6.6 - Windows-2003Server-5.2.3790-SP2
[debug] exe versions: ffmpeg N-75573-g1d0487f, ffprobe N-75573-g1d0487f, rtmpdump 2.4
[debug] Proxy map: {}
...

Do not post screenshots of verbose logs; only plain text is acceptable.

The output (including the first lines) contains important debugging information. Issues without the full output are often not reproducible and therefore do not get solved in short order, if ever.

Please re-read your issue once again to avoid a couple of common mistakes (you can and should use this as a checklist):

Is the description of the issue itself sufficient?

We often get issue reports that we cannot really decipher. While in most cases we eventually get the required information after asking back multiple times, this poses an unnecessary drain on our resources. Many contributors, including myself, are also not native speakers, so we may misread some parts.

So please elaborate on what feature you are requesting, or what bug you want to be fixed. Make sure that it's obvious

  • What the problem is
  • How it could be fixed
  • How your proposed solution would look like

If your report is shorter than two lines, it is almost certainly missing some of these, which makes it hard for us to respond to it. We're often too polite to close the issue outright, but the missing info makes misinterpretation likely. As a committer myself, I often get frustrated by these issues, since the only possible way for me to move forward on them is to ask for clarification over and over.

For bug reports, this means that your report should contain the complete output of youtube-dl when called with the flag. The error message you get for (most) bugs even says so, but you would not believe how many of our bug reports do not contain this information.

-v

If your server has multiple IPs or you suspect censorship, adding may be a good idea to get more diagnostics. If the error is and you cannot reproduce it from multiple countries, add (warning: this will yield a rather large output, redirect it to the file by adding to your command-line) or upload the files you get when you add somewhere.

--call-home
ERROR: Unable to extract ...
--dump-pages
log.txt
>log.txt 2>&1
.dump
--write-pages

Site support requests must contain an example URL. An example URL is a URL you might want to download, like . There should be an obvious video present. Except under very special circumstances, the main page of a video service (e.g. ) is not an example URL.

https://www.youtube.com/watch?v=BaW_jenozKc
https://www.youtube.com/

Are you using the latest version?

Before reporting any issue, type . This should report that you're up-to-date. About 20% of the reports we receive are already fixed, but people are using outdated versions. This goes for feature requests as well.

youtube-dl -U

Is the issue already documented?

Make sure that someone has not already opened the issue you're trying to open. Search at the top of the window or browse the GitHub Issues of this repository. If there is an issue, feel free to write something along the lines of "This affects me as well, with version 2015.01.01. Here is some more information on the issue: ...". While some issues may be old, a new post into them often spurs rapid activity.

Why are existing options not enough?

Before requesting a new feature, please have a quick peek at the list of supported options. Many feature requests are for features that actually exist already! Please, absolutely do show off your work in the issue report and detail how the existing similar options do not solve your problem.

Is there enough context in your bug report?

People want to solve problems, and often think they do us a favor by breaking down their larger problems (e.g. wanting to skip already downloaded files) to a specific request (e.g. requesting us to look whether the file exists before downloading the info page). However, what often happens is that they break down the problem into two steps: One simple, and one impossible (or extremely complicated one).

We are then presented with a very complicated request when the original problem could be solved far easier, e.g. by recording the downloaded video IDs in a separate file. To avoid this, you must include the greater context where it is non-obvious. In particular, every feature request that does not consist of adding support for a new site should contain a use case scenario that explains in what situation the missing feature would be useful.

Does the issue involve one problem, and one problem only?

一部のユーザーは、開くことができる、または開くべき問題には限界があると考えているようです。彼らが開くことができる、または開くべき問題の制限はありません。すべての問題を1つのチケットにダンプできることは魅力的に思えるかもしれませんが、問題の1つを解決した人が問題をクローズ済みとしてマークできないことを意味します。通常、たくさんの問題を報告すると、誰かが容赦なく問題を複数の問題に分割するまで、誰もその巨大なものを攻撃したくないため、チケットが長引くことになります。

特に、すべてのサイト サポート リクエストの問題は、1 つのサイトのサービスにのみ関係する必要があります (通常は共通のドメインで、常に同じバックエンド テクノロジを使用します)。同じ号のvimeoユーザービデオ、ホワイトハウスポッドキャスト、およびGoogle Plusページのサポートをリクエストしないでください。また、機能リクエストと一緒にバグレポートを投稿しないようにしてください。経験則として、機能リクエストには、目前の機能に直接関連しないyoutube-dlの出力は含まれません。新しいビデオ サービスの要求と一緒にネットワーク エラーのレポートを投稿しないでください。

誰かがこの機能を必要とするでしょうか?

あなた(またはあなたが個人的に話すことができる無能力の友人)が必要とする機能のみを投稿してください。機能は良いアイデアのように思えるので投稿しないでください。それらが本当に有用であるならば、それらはそれらを必要とする誰かによって要求されるでしょう。

あなたの質問はyoutube-dlについてですか?

奇妙に聞こえるかもしれませんが、私たちが受け取るバグレポートの中には、youtube-dlとはまったく関係がなく、別の、またはレポーター自身のアプリケーションに関連しているものがあります。実際にyoutube-dlを使用していることを確認してください。youtube-dl の UI を使用している場合は、UI を提供している実際のアプリケーションのメンテナにバグを報告してください。一方、youtube-dlのUIがyoutube-dlに関連していると思われる方法で失敗した場合は、必ず先に進んでバグを報告してください。

著作権

YouTube-DLは著作権者によってパブリックドメインにリリースされています。

このREADMEファイルはもともとダニエルボルトンによって書かれ、同様にパブリックドメインにリリースされています。