summaryrefslogtreecommitdiffstats
path: root/player/lua/ytdl_hook.lua
Commit message (Collapse)AuthorAgeFilesLines
* ytdl_hook: pre-append id-only playlist items with shortened youtube URLRicardo Constantino2018-01-291-1/+1
|
* ytdl_hook: whitelist segmented DASH and HLS for the manifests codeRicardo Constantino2018-01-271-7/+9
| | | | Close #5453
* ytdl_hook: prefer hls/dash manifest if availableRicardo Constantino2018-01-261-6/+10
| | | | | | | This makes all the video/audio variants available for selection. Might break with non-hls/dash, or even with dash if FFmpeg wasn't compiled with the demuxer.
* ytdl_hook: fix safe url checking with EDL urlsRicardo Constantino2018-01-261-11/+11
|
* ytdl_hook: move url_is_safe earlier in codeRicardo Constantino2018-01-261-9/+9
| | | | lua isn't javascript.
* ytdl_hook: whitelist protocols from urls retrieved from youtube-dlRicardo Constantino2018-01-261-7/+47
| | | | | | Not very clean since there's a lot of potential unsafe urls that youtube-dl can give us, depending on whether it's a single url, split tracks, playlists, segmented dash, etc.
* ytdl_hook: support native dash demuxer, if presentRicardo Constantino2018-01-151-1/+44
| | | | | | Uses track tbr instead of track disposition id for dash selection Works just as expected because youtube-dl also takes tbr from the manifests.
* ytdl_hook: look for the right ytdl binary according to systemRicardo Constantino2018-01-121-1/+2
| | | | | | | | package.config is available in 5.1, 5.2, 5.3 and luajit, so should be fine. The first character is the path separator, so it's '\' on windows and '/' on *nix. This should also prevent cases where users download the wrong binary.
* ytdl_hook: be more informative when youtube-dl failsRicardo Constantino2018-01-121-2/+8
|
* ytdl_hook: don't try to use webpage_url if non-existentRicardo Constantino2018-01-111-1/+1
|
* ytdl_hook: actually use the script option from 87d3af6Ricardo Constantino2018-01-071-1/+1
|
* ytdl_hook: add script option to revert to trying youtube-dl firstRicardo Constantino2018-01-071-2/+3
| | | | | Should only make a difference if most of the URLs you open need youtube-dl parsing.
* ytdl_hook: check for possible infinite loop in playlist generationRicardo Constantino2018-01-061-7/+8
|
* ytdl_hook: add additional check for comedycentral urlsRicardo Constantino2018-01-061-1/+2
| | | | | | | If this breaks another site again, remove this whole if and just leave them as separate playlist items. Close #5364
* ytdl_hook: update obsolete warning about retrying URL if failedRicardo Constantino2018-01-041-1/+1
|
* player: add on_load_fail hookRicardo Constantino2018-01-021-1/+1
|
* ytdl_hook: fix single-entry playlistsRicardo Constantino2018-01-021-9/+8
| | | | Close #5313
* ytdl_hook: use table concat for playlist buildingRicardo Constantino2017-12-241-5/+4
| | | | Faster and more efficient than string concat with large playlists.
* ytdl_hook: don't preappend ytdl:// to non-youtube links in playlistsRicardo Constantino2017-12-241-1/+5
| | | | Close #5003
* Revert "ytdl: handle HLS with FFmpeg"Kevin Mitchell2017-12-071-4/+1
| | | | | | Apparently, this breaks youtube live and possibly other things. This reverts commit 06519aae5837312437b07e8bfef10c025ec2f688.
* ytdl: handle HLS with FFmpegwm42017-12-061-1/+4
| | | | | Using youtube-dl's metadata ends up with stupid things like missing variant streams, or missing audio streams entirely.
* ytdl_hook: resolve relative paths when joining segment urlsRicardo Constantino2017-09-031-1/+21
| | | | | FFmpeg/mpv don't do it automatically. See #4827
* ytdl_hook: support fragments with relative pathsRicardo Constantino2017-08-061-5/+16
| | | | | | | Unbreaks segmented DASH with the change in https://github.com/rg3/youtube-dl/commit/1141e9104 which made each segment URL only use relative path from fragment_base_url with a different key.
* ytdl_hook: add a header to support geo-bypassJagannathan Tiruvallur Eachambadi2017-07-161-1/+1
| | | | | | youtube-dl supports bypassing some geographic restrictions by setting X-Forwarded-For header when used with geo-bypass and geo-bypass-country.
* ytdl_hook: actually load the script-optsRicardo Constantino2017-07-111-5/+7
| | | | | Also, comma-separated list doesn't actually work, even quote-surrounded. Switch to using | instead.
* ytdl_hook: add option to exclude URLs from being parsedRicardo Constantino2017-07-111-4/+30
| | | | | | | | | This is more of a niche usecase than --ytdl-format and --ytdl-raw-options, so a simple script option should be enough. Either create lua-settings/ytdl_hook.conf with 'exclude=example.com,sub.example.com' option or "--script-opts=ytdl_hook-exclude=example.com,sub.example.com"
* ytdl_hook: add times for ytdl and hook running on debug-levelRicardo Constantino2017-07-111-0/+3
| | | | Not really important, but still interesting to know.
* ytdl_hook: add pre-parsed chapters, if availableRicardo Constantino2017-07-021-3/+13
| | | | Available since 2017.05.07 but only on certain extractors.
* ytdl_hook: don't override start time set by saved stateMartin D2017-06-091-1/+7
| | | | This affects resuming playback from a watch_later directory so that you can resume playback even for URLs that have a start parameter.
* ytdl_hook: don't override user-set start timeRicardo Constantino2017-06-081-1/+2
|
* ytdl_hook: rework edl joining to use lua tablesRicardo Constantino2017-05-041-5/+7
| | | | Seems much more resource efficient than concatenating a string.
* ytdl_hook: treat single-entry playlists as a single videoRicardo Constantino2017-04-231-1/+9
|
* ytdl_hook: move single video code to a separate functionRicardo Constantino2017-04-231-94/+98
|
* ytdl_hook: support livestream segmented DASH VODsRicardo Constantino2017-02-101-4/+6
| | | | | | | | | | | | Seen with a VOD of a recently ended livestream on Youtube. They seem to use segmented DASH but unlike normal Youtube segmented DASH, the segments don't seem to need the initialization segment. The video actually fails to start to play if the init segment is prepended with a lot of 'Found duplicated MOOV Atom. Skipped it' errors popping up.
* ytdl_hook: reenable support for length-less segments in EDLRicardo Constantino2017-02-061-12/+28
| | | | They're unsupported only in MP4 DASH mode.
* ytdl_hook: fix EDL syntaxwm42017-02-051-1/+1
| | | | | All entries must be separated by ";" or "\n". The parser just doesn't enforce it if an entry uses quoting.
* ytdl_hook: Add non-dash fallbacks to default formatsRicardo Constantino2017-02-041-3/+3
|
* ytdl_hook, edl: implement pseudo-DASH supportwm42017-02-041-3/+9
| | | | | | | | | We use the metadata provided by youtube-dl to sort-of implement fragmented DASH streaming. This is all a bit hacky, but hopefully a makeshift solution until libavformat has proper mechanisms. (Although in danger of being one of those temporary hacks that become permanent.)
* ytdl: support segmented dashRicardo Constantino2017-02-041-12/+16
|
* ytdl_hook: refactor edl track joiningRicardo Constantino2017-01-301-20/+28
| | | | | | Only used once for now. Also, support switched format strings, like bestaudio+bestvideo.
* ytdl_hook: respect --no-audio, don't force-select trackRicardo Constantino2017-01-301-1/+1
|
* ytdl_hook: fix opening hitbox.tv rtmp streamRicardo Constantino2017-01-291-0/+2
| | | | | Worked with librtmp, but ffrtmp needs to set rtmp_swfurl in addition to rtmp_swfverify, even if they're the same value.
* stream_lavf: add support for data URIsRicardo Constantino2017-01-251-1/+1
| | | | | | | Only FFmpeg supports them and they need to be in the format data:// like other protocols or prefixed with ffmpeg:// or lavf://. Closes #4058
* ytdl_hook: sort chapters by timeRicardo Constantino2016-11-151-1/+1
| | | | | mpv doesn't work well with unordered chapters. ex: https://youtu.be/DIKPUL6b4N8
* ytdl_hook: Add title to playlist items if availableRicardo Constantino2016-10-151-0/+6
|
* ytdl_hook: add chapters by parsing video's descriptionMaurycy Skier2016-10-061-0/+46
|
* ytdl_hook: Set aspect ratio for anamorphic videoRicardo Constantino2016-09-281-0/+6
|
* ytdl_hook: temporarily force disable dash segments formatsRicardo Constantino2016-09-221-4/+5
|
* ytdl_hook: don't bother adding subtitles if duration isn't knownRicardo Constantino2016-09-131-5/+3
| | | | EDL doesn't work with subtitles with unknown length.
* ytdl_hook: Support playlist entries without subtitlesRicardo Constantino2016-09-131-3/+17
| | | | | | | | | | | | | Fixes missing subtitle tracks if the first entry didn't have any. Previously it just checked for the first entry in the playlist for requested languages and if that entry happened to not have subtitles they also wouldn't show up for the other entries. It will skip languages if the first entry with subs has less or different languages than the others. Unrelated to http_dash_segments.
* ytdl: Error out with http_dash_segmentsRicardo Constantino2016-07-301-0/+4
| | | | Unsupported for now.
* ytdl: fix brightcove urlsRicardo Constantino2016-05-301-3/+5
|
* ytdl_hook: support multi-arc subtitlesRicardo Constantino2016-05-231-1/+20
| | | | While at it, pass durations of segments from ytdl if available.
* ytdl_hook: Just check if protocol is rtmpRicardo Constantino2016-05-141-1/+1
| | | | Partial fix to #3090
* ytdl_hook: handle optional format_note▟ ▖▟ ▖2016-03-101-1/+1
| | | | | some extractors don't return a format_note for their audio stream which resulted in commandv complaining "argument 4 is not a string" (got nil).
* ytdl: Include Referer header as wellYen Chi Hsuan2016-01-101-3/+6
| | | | | Some videos require correct Referer header for downloading, or 403 Forbidden is thrown.
* ytdl: disable --all-subs if "sub-lang" is in raw-optionsRicardo Constantino2015-10-241-1/+9
| | | | | | Defaults stay the same (--all-subs is used if sub-lang wasn't used.) Don't forget to also add "write-sub=" if using sub-lang or else it won't work.
* ytdl: Set a proper label for external audio tracksChrisK22015-10-111-3/+3
|
* ytdl: Remove DASH hacks, use DASH by defaultChrisK22015-10-111-10/+12
| | | | | | | | | | | Thanks to rcombs, ffmpeg now properly supports DASH and we can remove our hacks for it and use it by default whenever available. If you don't like this for whatever reason, you can get the "normal" streams back with --ytdl-format=best . Closes #579 Closes #1321 Closes #2359
* ytdl: Remove version check and minor cleanupChrisK22015-10-061-55/+22
| | | | Closes #2370
* ytdl: Don't override user-set format in no-video modeChrisK22015-09-301-11/+23
|
* ytdl: catch bogous extractor infoChrisK22015-08-271-12/+12
| | | | | | | Some extractors may claim to have extracted subtitles, but then set the relevant fields to null. Try to catch those cases. Fixes #2254
* ytdl: get start_timeRicardo Constantino2015-07-291-0/+6
|
* ytdl: print command in debug modeRicardo Constantino2015-07-291-0/+1
|
* ytdl: don't print failure warning when youtube-dl was killed by uswm42015-06-271-3/+5
|
* ytdl_hook: Support 'multi_video' resultsJaime Marquínez Ferrándiz2015-06-071-1/+1
| | | | | They can be handled by the same codes used for playlists, most of them will use an EDL. Fixes #2027.
* ytdl: do not use deprecated optionwm42015-05-231-1/+1
| | | | This was missed in commit 450af053.
* options: rename --media-title optionwm42015-05-221-1/+1
| | | | Conflicts with the property.
* ytdl_hook: remove tabswm42015-05-091-5/+5
| | | | We don't allow tabs in normal source code.
* ytdl_hook: Escape EDL URLsChrisK22015-05-071-1/+3
| | | | | Should prevent the EDL parser from tripping over = and , in the URL.
* ytdl_hook.lua: Change format options when vid is "off"robin2015-04-271-6/+7
| | | | | | | | This will change the format option to "bestaudio/best" instead of passing the "-x" argument to yt-dl. Prevents the video still being downloaded in the new mpv versions where the yt-dl format is set to "best" by default.
* ytdl: set additional properties for rtmp streamsSebastian Mayr2015-04-091-3/+21
|
* ytdl_hook.lua: Disable video when vid option is "no"robin2015-04-091-0/+7
| | | | | | When setting options like --no-video, ytdl_hook adds the "-x" argument to youtube-dl, so that bandwith is saved by not downloading the video on some sites.
* ytdl: add "--ytdl-params" optionThiago Kenji Okada2015-02-251-0/+7
| | | | | | | | | | | This option allows the user to pass non-supported options directly to youtube-dl, such as "--proxy URL", "--username USERNAME" and '--password PASSWORD". There is no sanity checking so it's possible to break things (i.e. if you pass "--version" mpv exits with random JSON error). Signed-off-by: wm4 <wm4@nowhere>
* ytdl: add --no-warningswm42015-02-241-1/+1
| | | | | | Silences "[ytdl_hook] WARNING: video doesn't have subtitles", which was an annoying and pointless message printed with almost all youtube videos.
* ytdl: Adapt to new subtitles structureJaime Marquínez Ferrándiz2015-02-241-9/+11
| | | | The requested formats can be sorted by preference and the result gives now an url or the subtitles file content
* ytdl: implement user-agent and cookie overrideswm42015-01-241-5/+34
| | | | | | | | | | | | | | | | For some sites, youtube-dl sends a special user-agent. If we don't send the same user-agent, the server will reject mpv's connection attempt. This was observed with trailers.apple.com. Fix it by forcing the user-agent youtube-dl uses. Some sites set cookies when doing a website access, and require the client to provide these cookies when downloading the actual media. This is needed at least by nicovideo.jp. Fix by adding youtube-dl's cookies to our request headers. Both of these require a very recent youtube-dl version (youtube-dl added the necessary headers a few hours ago). The script still works with older youtube-dl versions, though.
* ytdl_hook: Check for empty playlistsChrisK22015-01-161-1/+7
| | | | | Sometimes we get empty playlists back, print a warning message instead of crash
* ytdl: silence "succeeded" messagewm42015-01-031-1/+1
| | | | Pretty useless by now.
* ytdl: bump requrired youtube-dl version to 2014.11.26ChrisK22014-11-261-1/+1
|
* ytdl: Try to handle multi-arc videosChrisK22014-11-261-14/+37
| | | | | | | | this currently uses a sketchy but apparently working workaround, which will be removed once the neccessary changes in youtube-dl are implemented Fixes #1277
* ytdl: When using DASH, print actual durationChrisK22014-11-261-1/+5