-[![Build Status](https://travis-ci.com/blackjack4494/yt-dlc.svg?branch=master)](https://travis-ci.com/blackjack4494/yt-dlc)
-[![PyPi](https://img.shields.io/pypi/v/youtube-dlc.svg)](https://pypi.org/project/youtube-dlc)
+This is a fork of [youtube-dlc](https://github.com/blackjack4494/yt-dlc) which is inturn a fork of [youtube-dl](https://github.com/ytdl-org/youtube-dl)
-[![Gitter chat](https://img.shields.io/gitter/room/youtube-dlc/community)](https://gitter.im/youtube-dlc)
-[![License: Unlicense](https://img.shields.io/badge/license-Unlicense-blue.svg)](https://github.com/blackjack4494/yt-dlc/blob/master/LICENSE)
-
-youtube-dlc - download videos from youtube.com or other video platforms.
-
-youtube-dlc is a fork of youtube-dl with the intention of getting features tested by the community merged in the tool faster, since youtube-dl's development seems to be slowing down. (https://web.archive.org/web/20201014194602/https://github.com/ytdl-org/youtube-dl/issues/26462)
+<!--
+[![](https://img.shields.io/badge/Fork-2020.10.19.01-brightgreen?style=for-the-badge&logo=GitHub)](https://github.com/pukkandan/youtube-dl)
+[![](https://img.shields.io/badge/youtube--dl-2020.09.20-blue?style=for-the-badge&logo=GitHub)](https://github.com/ytdl-org/youtube-dl)
+-->
+- [CHANGES FROM YOUTUBE-DLC](#changes)
+- [ABOUT THIS FORK](#about-this-fork)
- [INSTALLATION](#installation)
-- [UPDATE](#update)
+- [YOUTUBE-DLC](#youtube-dlc)
- [DESCRIPTION](#description)
- [OPTIONS](#options)
- - [Network Options:](#network-options)
- - [Geo Restriction:](#geo-restriction)
- - [Video Selection:](#video-selection)
- - [Download Options:](#download-options)
- - [Filesystem Options:](#filesystem-options)
- - [Thumbnail images:](#thumbnail-images)
- - [Verbosity / Simulation Options:](#verbosity--simulation-options)
- - [Workarounds:](#workarounds)
- - [Video Format Options:](#video-format-options)
- - [Subtitle Options:](#subtitle-options)
- - [Authentication Options:](#authentication-options)
- - [Adobe Pass Options:](#adobe-pass-options)
- - [Post-processing Options:](#post-processing-options)
- - [Extractor Options:](#extractor-options)
+ * [Network Options](#network-options)
+ * [Geo Restriction](#geo-restriction)
+ * [Video Selection](#video-selection)
+ * [Download Options](#download-options)
+ * [Filesystem Options](#filesystem-options)
+ * [Thumbnail images](#thumbnail-images)
+ * [Internet Shortcut Options](#internet-shortcut-options)
+ * [Verbosity / Simulation Options](#verbosity--simulation-options)
+ * [Workarounds](#workarounds)
+ * [Video Format Options](#video-format-options)
+ * [Subtitle Options](#subtitle-options)
+ * [Authentication Options](#authentication-options)
+ * [Adobe Pass Options](#adobe-pass-options)
+ * [Post-processing Options](#post-processing-options)
+ * [SponSkrub Options (SponsorBlock)](#sponskrub-options-sponsorblock)
+ * [Extractor Options](#extractor-options)
- [CONFIGURATION](#configuration)
- - [Authentication with `.netrc` file](#authentication-with-netrc-file)
+ * [Authentication with .netrc file](#authentication-with-netrc-file)
- [OUTPUT TEMPLATE](#output-template)
- - [Output template and Windows batch files](#output-template-and-windows-batch-files)
- - [Output template examples](#output-template-examples)
+ * [Output template and Windows batch files](#output-template-and-windows-batch-files)
+ * [Output template examples](#output-template-examples)
- [FORMAT SELECTION](#format-selection)
- - [Filtering Formats](#filtering-formats)
- - [Sorting Formats](#sorting-formats)
- - [Format Selection examples](#format-selection-examples)
+ * [Filtering Formats](#filtering-formats)
+ * [Sorting Formats](#sorting-formats)
+ * [Format Selection examples](#format-selection-examples)
- [VIDEO SELECTION](#video-selection-1)
+- [MORE](#more)
+
+
+# CHANGES
+See [Commits](https://github.com/pukkandan/yt-dlc/commits) for more details
+
+### 2021.01.05
+* **Format Sort:** Added `--format-sort` (`-S`), `--format-sort-force` (`--S-force`) - See [Sorting Formats](#sorting-formats) for details
+* **Format Selection:** See [Format Selection](#format-selection) for details
+ * New format selectors: `best*`, `worst*`, `bestvideo*`, `bestaudio*`, `worstvideo*`, `worstaudio*`
+ * Changed video format sorting to show video only files and video+audio files together.
+ * Added `--video-multistreams`, `--no-video-multistreams`, `--audio-multistreams`, `--no-audio-multistreams`
+ * Added `b`,`w`,`v`,`a` as alias for `best`, `worst`, `video` and `audio` respectively
+* **Shortcut Options:** Added `--write-link`, `--write-url-link`, `--write-webloc-link`, `--write-desktop-link` by @h-h-h-h - See [Internet Shortcut Options](#internet-shortcut-options) for details
+* **Sponskrub integration:** Added `--sponskrub`, `--sponskrub-cut`, `--sponskrub-force`, `--sponskrub-location`, `--sponskrub-args` - See [SponSkrub Options](#sponskrub-options-sponsorblock) for details
+* Added `--force-download-archive` (`--force-write-archive`) by by h-h-h-h
+* Added `--list-formats-as-table`, `--list-formats-old`
+* **Negative Options:** Makes it possible to negate boolean options by adding a `no-` to the switch
+ * Added `--no-ignore-dynamic-mpd`, `--no-allow-dynamic-mpd`, `--allow-dynamic-mpd`, `--youtube-include-hls-manifest`, `--no-youtube-include-hls-manifest`, `--no-youtube-skip-hls-manifest`, `--no-download`, `--no-download-archive`, `--resize-buffer`, `--part`, `--mtime`, `--no-keep-fragments`, `--no-cookies`, `--no-write-annotations`, `--no-write-info-json`, `--no-write-description`, `--no-write-thumbnail`, `--youtube-include-dash-manifest`, `--post-overwrites`, `--no-keep-video`, `--no-embed-subs`, `--no-embed-thumbnail`, `--no-add-metadata`, `--no-include-ads`, `--no-write-sub`, `--no-write-auto-sub`, `--no-playlist-reverse`, `--no-restrict-filenames`, `--youtube-include-dash-manifest`, `--no-format-sort-force`, `--flat-videos`, `--no-list-formats-as-table`, `--no-sponskrub`, `--no-sponskrub-cut`, `--no-sponskrub-force`
+ * Renamed: `--write-subs`, --no-write-subs`, `--no-write-auto-subs, `--write-auto-subs`. Note that these can still be used without the ending "s"
+* Relaxed validation for format filters so that any arbitrary field can be used
+* Fix for embedding thumbnail in mp3 by @pauldubois98
+* Make Twitch Video ID output from Playlist and VOD extractor same. This is only a temporary fix
+* **Merge [youtube-dl](https://github.com/ytdl-org/youtube-dl):** Upto [2020.01.03](https://github.com/ytdl-org/youtube-dl/commit/8e953dcbb10a1a42f4e12e4e132657cb0100a1f8) - See [blackjack4494/yt-dlc#280](https://github.com/blackjack4494/yt-dlc/pull/280) for details
+* Cleaned up the fork for public use
+
+
+# ABOUT THIS FORK
+
+WIP
+
# INSTALLATION
+
+WIP
+
+<!--
+I don't plan on making any releases. If anyone wants to create and maintain releases for this fork, please contact me.
+
+You can clone / [download](https://github.com/pukkandan/youtube-dl/archive/master.zip) this repository and run it with `python youtube_dl/__main__.py <args>`. Alternatively, you can install the fork using `pip install --upgrade https://github.com/pukkandan/youtube-dl/archive/master.zip` and run it with `python -m youtube_dl <args>`.
+
+In order to update, simply repeat the process.
+-->
+
+
+
+
+# YOUTUBE-DLC
+
+[![Build Status](https://travis-ci.com/blackjack4494/yt-dlc.svg?branch=master)](https://travis-ci.com/blackjack4494/yt-dlc)
+[![PyPi](https://img.shields.io/pypi/v/youtube-dlc.svg)](https://pypi.org/project/youtube-dlc)
+
+[![Gitter chat](https://img.shields.io/gitter/room/youtube-dlc/community)](https://gitter.im/youtube-dlc)
+[![License: Unlicense](https://img.shields.io/badge/license-Unlicense-blue.svg)](https://github.com/blackjack4494/yt-dlc/blob/master/LICENSE)
+
+youtube-dlc - download videos from youtube.com or other video platforms.
+
+youtube-dlc is a fork of youtube-dl with the intention of getting features tested by the community merged in the tool faster, since youtube-dl's development seems to be slowing down. (https://web.archive.org/web/20201014194602/https://github.com/ytdl-org/youtube-dl/issues/26462)
+
+
+## INSTALLATION
[How to update](#update)
**All Platforms**
make
-# UPDATE
+## UPDATE
**DO NOT UPDATE using `-U` !** instead download binaries again or when installed with pip use a described above when installing.
I will add some memorable short links to the binaries so you can download them easier.
-i, --ignore-errors Continue on download errors, for example to
skip unavailable videos in a playlist
- (Same as --no-abort-on-error)
+ (default) (Same as --no-abort-on-error)
--abort-on-error Abort downloading of further videos if an
error occurs (Same as --no-ignore-errors)
--dump-user-agent Display the current browser identification
specified sort order, see "Sorting Formats"
for more details (default)
--video-multistreams Allow multiple video streams to be merged into
- a single file (default)
+ a single file
--no-video-multistreams Only one video stream is downloaded for each
- output file
+ output file (default)
--audio-multistreams Allow multiple audio streams to be merged into
- a single file (default)
+ a single file
--no-audio-multistreams Only one audio stream is downloaded for each
- output file
+ output file (default)
--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
- --list-formats-as-table Present the output of -F in a more tabular form
- --list-formats-old Present the output of -F in older form (default)
+ --list-formats-as-table Present the output of -F in a more tabular
+ form (default)
+ --list-formats-old Present the output of -F in older form
(Same as --no-list-formats-as-table)
--youtube-skip-dash-manifest Do not download the DASH manifests and
related data on YouTube videos
To use percent literals in an output template use `%%`. To output to stdout use `-o -`.
-The current default template is `%(title)s-%(id)s.%(ext)s`.
+The current default template is `%(title)s [%(id)s].%(ext)s`.
In some cases, you don't want special characters such as δΈ, spaces, or &, such as when transferring the downloaded filename to a Windows system or the filename through an 8bit-unsafe channel. In these cases, add the `--restrict-filenames` flag to get a shorter title:
# 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 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 and avconv are 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.
Note that any other **numerical** field made available by the extractor can also be used. All fields, unless specified otherwise, are sorted in decending order. To reverse this, prefix the field with a `+`. Eg: `+res` prefers format with the smallest resolution. Additionally, you can suffix a prefered value for the fields, seperated by a `:`. Eg: `res:720` prefers larger videos, but no larger than 720p and the smallest video if there are no videos less than 720p. For `codec` and `ext`, you can provide two prefered values, the first for video and the second for audio. Eg: `+codec:avc:m4a` (equivalent to `+vcodec:avc,+acodec:m4a`) sets the video codec preference to `h264` > `h265` > `vp9` > `av01` > `vp8` > `h263` > `theora` and audio codec preference to `mp4a` > `aac` > `vorbis` > `opus` > `mp3` > `ac3` > `dts`. You can also make the sorting prefer the nearest values to the provided by using `~` as the delimiter. Eg: `filesize~1G` prefers the format with filesize closest to 1 GiB.
-The fields `has_video`, `extractor`, `lang`, `quality` are always given highest priority in sorting, irrespective of the user-defined order. This behaviour can be changed by using `--force-format-sort`. Apart from these, the default order used by youtube-dlc is: `tbr,filesize,vbr,height,width,protocol,vext,abr,aext,fps,filesize_approx,source_preference,format_id`. Note that the extractors may override this default order, but not the user-provided order.
+The fields `has_video`, `extractor`, `lang`, `quality` are always given highest priority in sorting, irrespective of the user-defined order. This behaviour can be changed by using `--force-format-sort`. Apart from these, the default order used by youtube-dlc is: `res,fps,codec,size,br,asr,proto,ext,has_audio,source,format_id`. Note that the extractors may override this default order, but not the user-provided order.
If your format selector is `worst`, the last item is selected after sorting. This means it will select the format that is worst in all repects. Most of the time, what you actually want is the video with the smallest filesize instead. So it is generally better to use `-f best -S +size,+br,+res,+fps`.