# 作った理由

いちいちオプションを覚えて、打つのも面倒だし長いので、自分で使うPCには Shell Script で自動化できるようにスクリプトがあるけど、他人にそれを渡しても環境がないなど、いろいろ不都合なことがあるので、バイナリで作ろうとなって作りました。

# 対象

  • Widnows
  • Python製youtube-dlを使っている(ダウンロードしている)人

# ytdlx の特徴

  • URL(ID) 以外に URL(ID) が列挙されたファイルを指定することができる。
  • デフォルトでは、プレイリストのURLを指定してもプレイリスト全体をダウンロードしない。

#

  1. URL(ID) を列挙したファイルを作成する。(AAA はID)

    # url_list.txt
    https://youtu.be/AAA # comment
    https://youtu.be/BBB
    CCC
    # DDD
    

    TIP

    #以降の文字列は無視するため、実行されるのは以下の3つになる。

    https://youtu.be/AAA https://youtu.be/BBB CCC
    
  2. 実行

    ytdlx ./url_list.txt
    

    TIP

    実行時は、ファイルとURL(ID) を同時に指定できる。

    ytdlx ./url_list.txt DDD EEE
    

# 実行に必要なもの

  • youtube-dl

    scoop install youtube-dl  # using Scoop
    # OR
    choco install youtube-dl  # using Chocolatey
    # OR
    pip install youtube-dl  # using pip
    
  • FFmpeg

    scoop install ffmpeg  # using Scoop
    # OR
    choco install ffmpeg  # using Chocolatey
    

パッケージマネージャを使わない場合は、サイトからバイナリをダウンロードする。その方法は省略。


# ytdlx のインストール

  1. Release (opens new window) から ytdlx.exeをダウンロードする。
  2. パスを通す

# 使い方

以下、URLURL | ID | FILE_PATHと同じ。

An application to make youtube-dl easy to use.
Usage:
  ytdlx [URL | ID | FILE_PATH] [flags]
Flags:
  -a, --audio           Download audio format only
  -e, --ext string      Specify download extension (e.g. m4a, mp3, mp4, ogg, webm)
  -F, --format-list     Show available format list
  -h, --help            help for ytdlx
  -o, --output string   Output filename
  -p, --playlist        Download the playlist (option: --yes-playlist)
  -s, --select          Download selected format
  -v, --video           Download video format only

# 1. 基本的なオプション

# 1-1. Default

何もオプションを指定しない。

デフォルトのフォーマットでダウンロードされる。

ytdlx [URL]

# 1-2. Audio

音ファイルのみをダウンロードする。

ytdlx -a [URL]
# OR
ytdlx --audio [URL]

# 1-3. Video

映像ファイルのみをダウンロードする。

ytdlx -v [URL]
# OR
ytdlx --video [URL]

# 1-4. Select

ダウンロードオプションを実行時 fzf を使って選択する。(上下キーで移動、Enterで選択)

ytdlx -s [URL]
# OR
ytdlx --select [URL]

# 1-5. Playlist

プレイリスト全体をダウンロードする。

tydlx -p [URL]
# OR
ytdlx --playlist [URL]

# 2. その他のオプション

# 2-1. Output name

保存時のファイル名を指定する。

ytdlx [Any_option] [URL] -o [Output_name]
# OR
ytdlx [Any_option] [URL] --output [Output_name]

WARNING

ただし、同じファイル名を防ぐために、ファイル名の後にIDもつく。

[Output_name]-[ID].[ext]となる。

ytdlx AAA -o output
# => output-AAA.mp4

# 2-2. Extension

保存するファイルの拡張子を指定する。

ytdlx [URL] -e <Extension>
# OR
ytdlx [URL] --ext <Extension>

WARNING

ただし、YouTube上にその拡張子でダウンロードできるフォーマット(拡張子)がない場合は、指定した拡張子以外のファイルがダウンロードされる。

# m4aがある場合
ytdlx --audio [URL] -e m4a
# => AAA.m4a
# m4aがない場合
ytdlx --audio [URL] -e m4a
# => AAA.webm

# 2-3. Format list

youtube-dl -F [URL]と同じ動作をする。(ダウンロードはしない)

ytdlx -F [URL]
# OR
ytdlx --format-list [URL]

# オプションの内部解釈

見たい人は見てください。

-ci == --continue --ignore-errors

# 1. Default

ytdlx [URL]
youtube-dl -f bestvideo+bestaudio/best --merge-output-format mp4 [URL] --no-playlist -ci

# 2. Audio

ytdlx --audio [URL]
youtube-dl -f bestaudio[ext=m4a]/bestaudio [URL] --no-playlist -ci

ext オプションによる指定がある場合

ytdlx --audio [URL] --ext webm
youtube-dl -f bestaudio[ext=webm]/bestaudio [URL] --no-playlist -ci

# 3. Video

ytdlx --video [URL]
youtube-dl -f bestvideo[ext=mp4]/bestvideo [URL] --no-playlist -ci

ext オプションによる指定がある場合

ytdlx --video [URL] --ext webm
youtube-dl -f bestvideo[ext=webm]/bestvideo [URL] --no-playlist -ci

# 4. Playlist

ytdlx [URL] --playlist
youtube-dl -f bestvideo+bestaudio/best --merge-output-format mp4 [URL] --yes-playlist -ci

# 5. Output name

ytdlx [URL] --output output
youtube-dl -f bestvideo+bestaudio/best --merge-output-format mp4 [URL] -o output-%(id)s.%(ext)s

# 6. Format list

ytdlx -F [URL]
youtube-dl -F [URL]