Commit graph

79 commits

Author SHA1 Message Date
pukkandan 732044afb2 Add --write-*-link by h-h-h-h
Authored-by: h-h-h-h
2020-12-13 20:05:04 +05:30
pukkandan f96bff99cb Relaxed validation for format filters so that any arbitrary field can be used 2020-12-13 20:05:03 +05:30
pukkandan 909d24dd6d Better Format Selection
* Added options: --video-multistreams, --no-video-multistreams, --audio-multistreams, --no-audio-multistreams
* New format selectors: best*, worst*, bestvideo*, bestaudio*, worstvideo*, worstaudio*
* Added b,w,v,a as alias for best, worst, video and audio respectively in format selection
* Changed video format sorting to show video only files and video+audio files together.
2020-12-13 20:05:03 +05:30
pukkandan eb8a44336c Better Format Sorting (Squashed)
* Added --format-sort (-S height,filesize)
* Made fields reversible (-S +height)
* Added --format-sort-force, --no-format-sort-force
* Added limit (-S height:720)
* Added codec preference (-S vcodec,acodec)
* Correct handling of preference<-1000

* Rebased to yt-dlc
* Automatically determine missing bitrates
* aext, vext, protocol, acodec, vcodec can now takes priority as string, not number (-S vext:webm)
* Correct handling of None in codec, audio_codec (None means the codec is unknown while 'none' means it doesn't exist)
* Correctly parse filesize (-S filesize:200M)
* Generalized preference calculation

* Rewrote entire code into the class FormatSort
* Correctly handle user input errors
* Combined fields (-S +ext:webm:webm)
* Closest mode (-S filesize~50M)
* Aliases (framerate=fps, br=bitrate etc)

* Documentation
2020-12-13 20:05:02 +05:30
pukkandan a0566bbf5c Updated to release 2020.11.21.1 2020-11-22 03:51:26 +05:30
pukkandan 3462ffa892 Implemented all Youtube Feeds (ytfav, ytwatchlater, ytsubs, ythistory, ytrec) and SearchURL 2020-11-22 03:51:09 +05:30
Tom-Oliver Heidel 228385340e
Merge pull request #187 from pukkandan/break-on-existing
Stop download after encountering video in archive
2020-11-16 23:00:44 +01:00
pukkandan ea6e0c2b0d Add --break-on-existing by @gergesh
Authored-by: Yoav Shai <gergesh@gmail.com>
2020-11-13 14:19:00 +05:30
pukkandan fe5caa2a7c Handle IndexError 2020-11-13 03:05:29 +05:30
pukkandan 9a68de1217 Pre-check video IDs in the archive before downloading 2020-11-13 02:44:47 +05:30
Unknown fa57af1ef3 flake8. added sha256 check to updater. 2020-10-31 08:57:55 +01:00
Unknown 9f448fcb26 [core/yt_live_chat] live_chat is back. dl() new parameter 2020-10-31 05:46:51 +01:00
Unknown 0704d2224b [core] be able to hand over id and title using url_result 2020-10-29 01:56:55 +01:00
Unknown bdc3fd2f35 [core] add option to trim file name length with integer
https://github.com/blackjack4494/youtube-dlc/issues/85
2020-09-30 05:50:09 +02:00
Unknown 0c9df79e17 [core] no sleep affected subtitles only with enforced flag 2020-09-29 05:11:32 +02:00
Jody Bruchon a45e861918 Switch from binary search tree to Python sets
Signed-off-by: Jody Bruchon <jody@jodybruchon.com>
2020-09-18 21:18:23 -04:00
Jody Bruchon fd87f42378 Randomize the ArchiveTree the proper Python way
Signed-off-by: Jody Bruchon <jody@jodybruchon.com>
2020-09-18 14:22:42 -04:00
Jody Bruchon 2459b6e1cf Style revisions 2020-09-18 09:35:21 -04:00
Jody Bruchon a4d834fb3e Fix wrong variable in position swap corrupting archive list
It's always a simple error in the end, you know?

Signed-off-by: Jody Bruchon <jody@jodybruchon.com>
2020-09-18 00:11:36 -04:00
Jody Bruchon fda63a4e87 Randomize archive order before populating search tree
This doesn't result in an elegant, perfectly balanced search tree,
but it's absolutely good enough. This commit completely mitigates
the worst-case scenario where the archive file is sorted.

Signed-off-by: Jody Bruchon <jody@jodybruchon.com>
2020-09-17 21:45:40 -04:00
Jody Bruchon 1d74d8d9f6 Try to mitigate the problem of loading a fully sorted archive
Sorted archives turn the binary tree into a linked list and make
things horribly slow. This is an incomplete mitigation for this
issue.
2020-09-17 17:28:22 -04:00
Jody Bruchon 1de7ea76f8 Remove recursion in at_insert() 2020-09-17 15:08:33 -04:00
Jody Bruchon a5029645ae Remove debugging print statements 2020-09-17 14:46:11 -04:00
Jody Bruchon ecdec1913f Keep download archive in memory for better performance
The old behavior was to open and scan the entire archive file for
every single video download. This resulted in horrible performance
for archives of any remotely large size, especially since all new
video IDs are appended to the end of the archive. For anyone who
uses the archive feature to maintain archives of entire video
playlists or channels, this meant that all such lists with newer
downloads would have to scan close to the end of the archive file
before the potential download was rejected. For archives with tens
of thousands of lines, this easily resulted in millions of line
reads and checks over the course of scanning a single channel or
playlist that had been seen previously.

The new behavior in this commit is to preload the archive file
into a binary search tree and scan the tree instead of constantly
scanning the file on disk for every file. When a new download is
appended to the archive file, it is also added to this tree. The
performance is massively better using this strategy over the more
"naive" line-by-line archive file parsing strategy.

The only negative consequence of this change is that the archive
in memory will not be synchronized with the archive file on disk.
Running multiple instances of the program at the same time that
all use the same archive file may result in duplicate archive
entries or duplicated downloads. This is unlikely to be a serious
issue for the vast majority of users. If the instances are not
likely to try to download identical video IDs then this should
not be a problem anyway; for example, having two instances pull
two completely different YouTube channels at once should be fine.

Signed-off-by: Jody Bruchon <jody@jodybruchon.com>
2020-09-17 14:22:07 -04:00
Tom-Oliver Heidel acdb1a4ec6 Merge branch 'arbitrary-merges' of https://github.com/fstirlitz/youtube-dlc 2020-09-14 13:04:24 +02:00
felix d03cfdce1b Support arbitrary stream merges
With this change, the merge operator may join any number of media streams,
video or audio. The streams are downloaded in the order specified.

Also, fix the metadata post-processor so that it doesn't leave out
any streams.
2020-09-14 12:53:09 +02:00
Unknown f791b41970 flake8 2020-09-13 11:08:02 +02:00
Unknown 57df9f53e0 [youtube] convert subtitles with --skip-download 2020-09-13 11:03:48 +02:00
Unknown cefecac12c [skip travis] renaming
to avoid using same folder when using pip install for example
2020-09-02 20:25:25 +02:00
Renamed from youtube_dl/YoutubeDL.py (Browse further)