]> jfr.im git - yt-dlp.git/blobdiff - README.md
[youtube_live_chat] Fix URL
[yt-dlp.git] / README.md
index 886ec245f403a7383b8ff5d8f025b371bc280083..1811ed6db2fb6af6cadf3a4fb9592c2e2498ac9e 100644 (file)
--- a/README.md
+++ b/README.md
@@ -1,9 +1,12 @@
 # YT-DLP
 
-<!-- See: https://github.com/marketplace/actions/dynamic-badges -->
-[![Release Version](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/pukkandan/c69cb23c3c5b3316248e52022790aa57/raw/version.json&color=brightgreen)](https://github.com/pukkandan/yt-dlp/releases/latest)
+[![Release version](https://img.shields.io/github/v/release/pukkandan/yt-dlp?color=brightgreen&label=Release)](https://github.com/pukkandan/yt-dlp/releases/latest)
 [![License: Unlicense](https://img.shields.io/badge/License-Unlicense-blue.svg)](LICENSE)
-[![CI Status](https://github.com/pukkandan/yt-dlp/workflows/Core%20Tests/badge.svg?branch=master)](https://github.com/pukkandan/yt-dlp/actions)
+[![CI Status](https://github.com/pukkandan/yt-dlp/workflows/Core%20Tests/badge.svg?branch=master)](https://github.com/pukkandan/yt-dlp/actions)  
+[![Commits](https://img.shields.io/github/commit-activity/m/pukkandan/yt-dlp?label=commits)](https://github.com/pukkandan/yt-dlp/commits)
+[![Last Commit](https://img.shields.io/github/last-commit/pukkandan/yt-dlp/master)](https://github.com/pukkandan/yt-dlp/commits)
+[![Downloads](https://img.shields.io/github/downloads/pukkandan/yt-dlp/total)](https://github.com/pukkandan/yt-dlp/releases/latest)
+[![PyPi Downloads](https://img.shields.io/pypi/dm/yt-dlp?label=PyPi)](https://pypi.org/project/yt-dlp)
 
 A command-line program to download videos from youtube.com and many other [video platforms](docs/supportedsites.md)
 
@@ -53,12 +56,14 @@ # NEW FEATURES
 
 * **Merged with youtube-dl v2021.01.24.1**: You get all the latest features and patches of [youtube-dl](https://github.com/ytdl-org/youtube-dl) in addition to all the features of [youtube-dlc](https://github.com/blackjack4494/yt-dlc)
 
+* **Merged with animelover1984/youtube-dl**: You get most of the features and improvements from [animelover1984/youtube-dl](https://github.com/animelover1984/youtube-dl) including `--get-comments`, `BiliBiliSearch`, `BilibiliChannel`, Embedding thumbnail in mp4/ogg/opus, Playlist infojson etc. Note that the NicoNico improvements are not available. See [#31](https://github.com/pukkandan/yt-dlp/pull/31) for details.
+
 * **Youtube improvements**:
     * All Youtube Feeds (`:ytfav`, `:ytwatchlater`, `:ytsubs`, `:ythistory`, `:ytrec`) works correctly and support downloading multiple pages of content
     * Youtube search works correctly (`ytsearch:`, `ytsearchdate:`) along with Search URLs
     * Redirect channel's home URL automatically to `/video` to preserve the old behaviour
 
-* **New extractors**: AnimeLab, Philo MSO, Rcs, Gedi, bitwave.tv, mildom
+* **New extractors**: AnimeLab, Philo MSO, Rcs, Gedi, bitwave.tv, mildom, audius
 
 * **Fixed extractors**: archive.org, roosterteeth.com, skyit, instagram, itv, SouthparkDe, spreaker, Vlive, tiktok, akamai, ina
 
@@ -70,10 +75,11 @@ # NEW FEATURES
 
 * **Portable Configuration**: Configuration files are automatically loaded from the home and root directories. See [configuration](#configuration) for details
 
-* **Other new options**: `--list-formats-as-table`, `--write-link`, `--force-download-archive`, `--force-overwrites`, `--break-on-reject` etc
+* **Other new options**: `--parse-metadata`, `--list-formats-as-table`, `--write-link`, `--force-download-archive`, `--force-overwrites`, `--break-on-reject` etc
 
 * **Improvements**: Multiple `--postprocessor-args` and `--external-downloader-args`, `%(duration_string)s` in `-o`, faster archive checking, more [format selection options](#format-selection) etc
 
+
 See [changelog](Changelog.md) or [commits](https://github.com/pukkandan/yt-dlp/commits) for the full list of changes
 
 
@@ -85,7 +91,7 @@ # NEW FEATURES
 # INSTALLATION
 
 You can install yt-dlp using one of the following methods:
-* Use [PyPI package](https://pypi.org/project/yt-dlp/): `python -m pip install --upgrade yt-dlp`
+* Use [PyPI package](https://pypi.org/project/yt-dlp): `python -m pip install --upgrade yt-dlp`
 * Download the binary from the [latest release](https://github.com/pukkandan/yt-dlp/releases/latest)
 * Use pip+git: `python -m pip install --upgrade git+https://github.com/pukkandan/yt-dlp.git@release`
 * Install master branch: `python -m pip install --upgrade git+https://github.com/pukkandan/yt-dlp`
@@ -96,16 +102,15 @@ ### UPDATE
 ### COMPILE
 
 **For Windows**:
-To build the Windows executable yourself (without version info!)
+To build the Windows executable, you must have pyinstaller (and optionally mutagen for embedding thumbnail in opus/ogg files)
 
-    python -m pip install --upgrade pyinstaller
-    pyinstaller.exe youtube_dlc\__main__.py --onefile --name youtube-dlc
-    
-Or simply execute the `make_win.bat` if pyinstaller is installed.
-There will be a `youtube-dlc.exe` in `/dist`  
+    python -m pip install --upgrade pyinstaller mutagen
+
+For the 64bit version, run `py devscripts\pyinst.py 64` using 64bit python3. Similarly, to install 32bit version, run `py devscripts\pyinst.py 32` using 32bit python (preferably 3)
 
-New way to build Windows is to use `python pyinst.py` (please use python3 64Bit)  
-For 32Bit Version use a 32Bit Version of python (3 preferred here as well) and run `python pyinst32.py`  
+You can also build the executable without any version info or metadata by using:
+
+    pyinstaller.exe youtube_dlc\__main__.py --onefile --name youtube-dlc
 
 **For Unix**:
 You will need the required build tools  
@@ -114,6 +119,7 @@ ### COMPILE
 
     make
 
+**Note**: In either platform, `devscripts\update-version.py` can be used to automatically update the version number
 
 # DESCRIPTION
 **youtube-dlc** is a command-line program to download videos from youtube.com many other [video platforms](docs/supportedsites.md). It requires the Python interpreter, version 2.6, 2.7, or 3.2+, and it is not platform specific. It should work on your Unix box, on Windows or on macOS. It is released to the public domain, which means you can modify it, redistribute it or use it however you like.
@@ -317,8 +323,8 @@ ## Download Options:
     --downloader-args NAME:ARGS      Give these arguments to the external
                                      downloader. Specify the downloader name and
                                      the arguments separated by a colon ":". You
-                                     can use this option multiple times (Alias:
-                                     --external-downloader-args)
+                                     can use this option multiple times
+                                     (Alias: --external-downloader-args)
 
 ## Filesystem Options:
     -a, --batch-file FILE            File containing URLs to download ('-' for
@@ -372,6 +378,13 @@ ## Filesystem Options:
     --write-annotations              Write video annotations to a
                                      .annotations.xml file
     --no-write-annotations           Do not write video annotations (default)
+    --write-playlist-metafiles       Write playlist metadata in addition to the
+                                     video metadata when using --write-info-json,
+                                     --write-description etc. (default)
+    --no-write-playlist-metafiles    Do not write playlist metadata when using
+                                     --write-info-json, --write-description etc.
+    --get-comments                   Retrieve video comments to be placed in the
+                                     .info.json file
     --load-info-json FILE            JSON file containing the video information
                                      (created with the "--write-info-json"
                                      option)
@@ -506,17 +519,17 @@ ## Video Format Options:
     --list-formats-old               Present the output of -F in the old form
                                      (Alias: --no-list-formats-as-table)
     --youtube-include-dash-manifest  Download the DASH manifests and related
-                                     data on YouTube videos (default) (Alias:
-                                     --no-youtube-skip-dash-manifest)
+                                     data on YouTube videos (default)
+                                     (Alias: --no-youtube-skip-dash-manifest)
     --youtube-skip-dash-manifest     Do not download the DASH manifests and
-                                     related data on YouTube videos (Alias:
-                                     --no-youtube-include-dash-manifest)
+                                     related data on YouTube videos
+                                     (Alias: --no-youtube-include-dash-manifest)
     --youtube-include-hls-manifest   Download the HLS manifests and related data
-                                     on YouTube videos (default) (Alias:
-                                    --no-youtube-skip-hls-manifest)
+                                     on YouTube videos (default)
+                                     (Alias: --no-youtube-skip-hls-manifest)
     --youtube-skip-hls-manifest      Do not download the HLS manifests and
-                                     related data on YouTube videos (Alias:
-                                     --no-youtube-include-hls-manifest)
+                                     related data on YouTube videos
+                                     (Alias: --no-youtube-include-hls-manifest)
     --merge-output-format FORMAT     If a merge is required (e.g.
                                      bestvideo+bestaudio), output to given
                                      container format. One of mkv, mp4, ogg,
@@ -560,23 +573,26 @@ ## Adobe Pass Options:
 
 ## Post-Processing Options:
     -x, --extract-audio              Convert video files to audio-only files
-                                     (requires ffmpeg or avconv and ffprobe or
-                                     avprobe)
+                                     (requires ffmpeg and ffprobe)
     --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
+    --audio-quality QUALITY          Specify ffmpeg audio quality, insert a
+                                     value between 0 (better) and 9 (worse) for
+                                     VBR or a specific bitrate like 128K
                                      (default 5)
     --remux-video FORMAT             Remux the video into another container if
-                                     necessary (currently supported: mp4|mkv).
-                                     If target container does not support the
-                                     video/audio codec, remuxing will fail
+                                     necessary (currently supported: mp4|mkv|flv
+                                     |webm|mov|avi|mp3|mka|m4a|ogg|opus). If
+                                     target container does not support the
+                                     video/audio codec, remuxing will fail. You
+                                     can specify multiple rules; eg.
+                                     "aac>m4a/mov>mp4/mkv" will remux aac to
+                                     m4a, mov to mp4 and anything else to mkv.
     --recode-video FORMAT            Re-encode the video into another format if
-                                     re-encoding is necessary (currently
-                                     supported: mp4|flv|ogg|webm|mkv|avi)
+                                     re-encoding is necessary. The supported
+                                     formats are the same as --remux-video
     --postprocessor-args NAME:ARGS   Give these arguments to the postprocessors.
                                      Specify the postprocessor/executable name
                                      and the arguments separated by a colon ":"
@@ -588,15 +604,14 @@ ## Post-Processing Options:
                                      FixupStretched, FixupM4a, FixupM3u8,
                                      SubtitlesConvertor and EmbedThumbnail. The
                                      supported executables are: SponSkrub,
-                                     FFmpeg, FFprobe, avconf, avprobe and
-                                     AtomicParsley. You can use this option
-                                     multiple times to give different arguments
-                                     to different postprocessors. You can also
-                                     specify "PP+EXE:ARGS" to give the arguments
-                                     to the specified executable only when being
-                                     used by the specified postprocessor. You
-                                     can use this option multiple times (Alias:
-                                     --ppa)
+                                     FFmpeg, FFprobe, and AtomicParsley. You can
+                                     use this option multiple times to give
+                                     different arguments to different
+                                     postprocessors. You can also specify
+                                     "PP+EXE:ARGS" to give the arguments to the
+                                     specified executable only when being used
+                                     by the specified postprocessor. You can use
+                                     this option multiple times (Alias: --ppa)
     -k, --keep-video                 Keep the intermediate video file on disk
                                      after post-processing
     --no-keep-video                  Delete the intermediate video file after
@@ -613,12 +628,13 @@ ## Post-Processing Options:
     --parse-metadata FIELD:FORMAT    Parse additional metadata like title/artist
                                      from other fields. Give field name to
                                      extract data from, and format of the field
-                                     seperated by a ":". The format syntax is
-                                     the same as --output. Regular expression
-                                     with named capture groups may also be used.
-                                     The parsed parameters replace existing
-                                     values. This option can be used multiple
-                                     times. Example: --parse-metadata
+                                     seperated by a ":". Either regular
+                                     expression with named capture groups or a
+                                     similar syntax to the output template can
+                                     also be used. The parsed parameters replace
+                                     any existing values and can be use in
+                                     output templateThis option can be used
+                                     multiple times. Example: --parse-metadata
                                      "title:%(artist)s - %(title)s" matches a
                                      title like "Coldplay - Paradise". Example
                                      (regex): --parse-metadata
@@ -630,15 +646,9 @@ ## Post-Processing Options:
                                      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 (Alias: --no-prefer-ffmpeg)
-    --prefer-ffmpeg                  Prefer ffmpeg over avconv for running the
-                                     postprocessors (default)
-                                     (Alias: --no-prefer-avconv)
-    --ffmpeg-location PATH           Location of the ffmpeg/avconv binary;
-                                     either the path to the binary or its
-                                     containing directory
-                                     (Alias: --avconv-location)
+    --ffmpeg-location PATH           Location of the ffmpeg 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
@@ -771,7 +781,7 @@ # OUTPUT TEMPLATE
  - `is_live` (boolean): Whether this video is a live stream or a fixed-length video
  - `start_time` (numeric): Time in seconds where the reproduction should start, as specified in the URL
  - `end_time` (numeric): Time in seconds where the reproduction should end, as specified in the URL
- - `format` (string): A human-readable description of the format 
+ - `format` (string): A human-readable description of the format
  - `format_id` (string): Format code specified by `--format`
  - `format_note` (string): Additional info about the format
  - `width` (numeric): Width of the video
@@ -876,7 +886,7 @@ # Stream the video being downloaded to stdout
 # FORMAT SELECTION
 
 By default, youtube-dlc tries to download the best available quality if you **don't** pass any options.
-This is generally equivalent to using `-f bestvideo*+bestaudio/best`. However, if multiple audiostreams is enabled (`--audio-multistreams`), the default format changes to `-f bestvideo+bestaudio/best`. Similarly, if ffmpeg and avconv are unavailable, or if you use youtube-dlc to stream to `stdout` (`-o -`), the default becomes `-f best/bestvideo+bestaudio`.
+This is generally equivalent to using `-f bestvideo*+bestaudio/best`. However, if multiple audiostreams is enabled (`--audio-multistreams`), the default format changes to `-f bestvideo+bestaudio/best`. Similarly, if ffmpeg is unavailable, or if you use youtube-dlc to stream to `stdout` (`-o -`), the default becomes `-f best/bestvideo+bestaudio`.
 
 The general syntax for format selection is `--f FORMAT` (or `--format FORMAT`) where `FORMAT` is a *selector expression*, i.e. an expression that describes format or formats you would like to download.
 
@@ -907,7 +917,7 @@ # FORMAT SELECTION
 
 If you want to download several formats of the same video use a comma as a separator, e.g. `-f 22,17,18` will download all these three formats, of course if they are available. Or a more sophisticated example combined with the precedence feature: `-f 136/137/mp4/bestvideo,140/m4a/bestaudio`.
 
-You can merge the video and audio of multiple formats into a single file using `-f <format1>+<format2>+...` (requires ffmpeg or avconv installed), for example `-f bestvideo+bestaudio` will download the best video-only format, the best audio-only format and mux them together with ffmpeg/avconv. If `--no-video-multistreams` is used, all formats with a video stream except the first one are ignored. Similarly, if `--no-audio-multistreams` is used, all formats with an audio stream except the first one are ignored. For example, `-f bestvideo+best+bestaudio` will download and merge all 3 given formats. The resulting file will have 2 video streams and 2 audio streams. But `-f bestvideo+best+bestaudio --no-video-multistreams` will download and merge only `bestvideo` and `bestaudio`. `best` is ignored since another format containing a video stream (`bestvideo`) has already been selected. The order of the formats is therefore important. `-f best+bestaudio --no-audio-multistreams` will download and merge both formats while `-f bestaudio+best --no-audio-multistreams` will ignore `best` and download only `bestaudio`.
+You can merge the video and audio of multiple formats into a single file using `-f <format1>+<format2>+...` (requires ffmpeg installed), for example `-f bestvideo+bestaudio` will download the best video-only format, the best audio-only format and mux them together with ffmpeg. If `--no-video-multistreams` is used, all formats with a video stream except the first one are ignored. Similarly, if `--no-audio-multistreams` is used, all formats with an audio stream except the first one are ignored. For example, `-f bestvideo+best+bestaudio` will download and merge all 3 given formats. The resulting file will have 2 video streams and 2 audio streams. But `-f bestvideo+best+bestaudio --no-video-multistreams` will download and merge only `bestvideo` and `bestaudio`. `best` is ignored since another format containing a video stream (`bestvideo`) has already been selected. The order of the formats is therefore important. `-f best+bestaudio --no-audio-multistreams` will download and merge both formats while `-f bestaudio+best --no-audio-multistreams` will ignore `best` and download only `bestaudio`.
 
 ## Filtering Formats