Comments (28)
This feature was merged from animelover1984/youtube-dl just last night. Try out the master branch to see the feature in action. There is no additional switch for it. --write-info-json
now writes both video and playlist JSON
from yt-dlp.
I also just added a patch that does the same for --write-description
from yt-dlp.
Yes, I just saw it :D
The fields that have no value are omitted in the JSON. This is consistent with how video json works
from yt-dlp.
I will look into it.
Also, it seems playlist description is not being correctly extracted. I will let you know when there is any progress
from yt-dlp.
Playlist description have been fixed for youtube. While fixing that, I also found how to get some other metadata like thumbnails, views and last updated date. But YoutubeDl doesn't currently support these fields in the playlist dictionary, so I will need to check if it is feasible to add these.
playlist info.json be deposited in a custom location separate from the standard --output command?
yt-dlp already has an option to specify a separate directory for JSON. This could be extended to provide different path for the playlist json. But the issue is that this does not support variables.
I also thought about adding a new switch for specifying this new output template. But some other features like (split-tracks)[https://github.com/pukkandan/yt-dlp/projects/1#column-12545489] will also benefit from similar options. So it makes sense to implement this in a more general manner (similar to -P
), but that will take some time.
In the meantime, I have pushed a patch that will ensure %(playlist_title)s
, %(playlist_id)s
etc are populated correctly.
Also, you could download the metadata separately with a different output template by using --playlist-item 0 --write-info
from yt-dlp.
I just installed fresh via pip but am not seeing those lines. Currently when I compare the json line by line vs base youtube-dl, I'm only seeing the addition of subscriber count and playable in embed. Should I check out from git directly?
Edit: Checked out the master install. I see the playlist json now. However, it doesn't contain any lines of playlist data that aren't already included in the file json?
{
"_type":"playlist",
"id":"PLz3Be--ot61Mvmms68yBEhX6KrzPrqxsW",
"title":"Dead Suns Character Intros",
"uploader":"The Glass Cannon Network",
"uploader_id":"UC83CJFLyDe72XgkKBd5a9IA",
"uploader_url":"https://www.youtube.com/c/TheGlassCannon",
"extractor":"youtube:tab",
"webpage_url":"https://www.youtube.com/playlist?list=PLz3Be--ot61Mvmms68yBEhX6KrzPrqxsW",
"duration_string":null,
"webpage_url_basename":"playlist",
"extractor_key":"YoutubeTab"
}
Specifically, it doesn't contain any potential playlist description. (I know that playlist doesn't have one, but there is no entry for it in the JSON. Does it not pull if it is blank? I would expect it to pull and just say null.
Thank you.
from yt-dlp.
The feature has not been released yet. It will be available in the next release. If you want to check it out right now, you can install the master branch
python -m pip install --upgrade git+https://github.com/pukkandan/yt-dlp
from yt-dlp.
@pukkandan I just edited my prior as you were posting.
from yt-dlp.
Ah got it, thanks for that.
I wrote up some code to scrape out video information from the individual video info.json files to create .metadata files based on this Plex metadata agent - https://bitbucket.org/mjarends/extendedpersonalmedia-agent.bundle
##/bin/bash
YT_DIR="/mnt/storage/media/youtube/"
IFS=$'\n'
cd "$YT_DIR"
for i in $(find -type f -name "*.info.json")
do
noext=${i%.*.*}
if [[ -e "$noext.metadata" ]]; then
#echo "Skipping, metadata already exists."
:
else
#echo "Creating metadata for `basename \"$noext\"`."
cat "$i" | jq -r '"[metadata]","title="+.title,"summary="+.description,"release="+.upload_date[0:4]+"-"+.upload_date[4:6]+"-"+.upload_date[6:8],"writers="+.uploader,"directors="+.uploader' > "$noext.metadata"
fi
done
unset IFS
I can probably figure out a way to work with a separate metadata .json file, however the way I'm currently writing the folder/file structure is: %(uploader)s/%(playlist_title)s - [%(playlist_id)s]/%(playlist_title)s - S01E%(playlist_index)s - %(title)s [%(id)s].%(ext)s
and thus I'm getting an extra playlist subfolder entitled "NA - [NA]" right now but would there be a way to have the playlist info.json be deposited in a custom location separate from the standard --output command? Or pretty much no, everything is tied to one output location.
Thanks for any insight!
from yt-dlp.
I am closing this since the original feature request has been added. Feel free to make a new issue for the "multiple output tempates" if you want; though I will add it eventually even if you don't make the request
from yt-dlp.
This is great, I saw the playlist metadata come in as playlist ID 00, perfect! Thank you.
from yt-dlp.
I assume you mean playlist_index
from yt-dlp.
Yes, definitely meant that.
One other question, it appears the .json is being written upon each run of the program. This is probably fine, but in the unlikely event that a playlist is deleted or made private, or the info simply deleted by its creator but the playlist is left intact, could the data be overwritten? Is it possible to check if it is preexisting similar to the video archive?
Or perhaps a flag to default to overwriting (or not) with an option to run the alternative way?
from yt-dlp.
--no-overwrites
from yt-dlp.
I'm already running with no-overwrites, relevant part of my config:
# Use archive file
--download-archive "archive.log"
# Ignore errors / connection issues
--force-ipv4
--ignore-errors
--no-continue
--no-overwrites
# Sleep to prevent rate limiting
--sleep-interval 1
--max-sleep-interval 10
# Grab and embed metadata
--add-metadata
--write-thumbnail
--write-info-json
It is still writing all playlist files on run.
[youtube:tab] PLz3Be--ot61OS7lU-6I1TObQFbVBKaDbm: Downloading webpage
[download] Downloading playlist: Master of the Metaverse: Troy Plays Persona 5
[info] Writing playlist metadata as JSON to: /mnt/storage/media/youtube/The Glass Cannon Network/Master of the Metaverse - Troy Plays Persona 5 - [PLz3Be--ot61OS7lU-6I1TObQFbVBKaDbm]/Master of the Metaverse - Troy Plays Persona 5 - S01E00 - Master of the Metaverse - Troy Plays Persona 5 [PLz3Be--ot61OS7lU-6I1TObQFbVBKaDbm].info.json
[youtube:tab] playlist Master of the Metaverse: Troy Plays Persona 5: Downloading 11 videos
[download] Downloading video 1 of 11
[download] Master of the Metaverse: Troy Plays Persona 5 Episode 001 has already been recorded in archive
[download] Downloading video 2 of 11
[download] Master of the Metaverse: Troy Plays Persona 5 Episode 002.1 has already been recorded in archive
[download] Downloading video 3 of 11
[download] Master of the Metaverse: Troy Plays Persona 5 Episode 002.2 has already been recorded in archive
[download] Downloading video 4 of 11
[download] Master of the Metaverse: Troy Plays Persona 5 Episode 003 has already been recorded in archive
[download] Downloading video 5 of 11
[download] Master of the Metaverse: Troy Plays Persona 5 Episode 004.1 has already been recorded in archive
[download] Downloading video 6 of 11
[download] Master of the Metaverse: Troy Plays Persona 5 Episode 004.2 has already been recorded in archive
[download] Downloading video 7 of 11
[download] Master of the Metaverse: Troy Plays Persona 5 Episode 005 has already been recorded in archive
[download] Downloading video 8 of 11
[download] Master of the Metaverse: Troy Plays Persona 5 Episode 006.1 has already been recorded in archive
[download] Downloading video 9 of 11
[download] Master of the Metaverse: Troy Plays Persona 5 Episode 006.2 has already been recorded in archive
[download] Downloading video 10 of 11
[download] Master of the Metaverse: Troy Plays Persona 5 Episode 006.3 has already been recorded in archive
[download] Downloading video 11 of 11
[download] Master of the Metaverse: Troy Plays Persona 5 Episode 007 has already been recorded in archive
[download] Finished downloading playlist: Master of the Metaverse: Troy Plays Persona 5
[download] Downloading video 21 of 34
[youtube:tab] PLz3Be--ot61Ok9chgj0Q0vwhiItYQmeic: Downloading webpage
[download] Downloading playlist: RE7 with Skid and Grant
[info] Writing playlist metadata as JSON to: /mnt/storage/media/youtube/The Glass Cannon Network/RE7 with Skid and Grant - [PLz3Be--ot61Ok9chgj0Q0vwhiItYQmeic]/RE7 with Skid and Grant - S01E00 - RE7 with Skid and Grant [PLz3Be--ot61Ok9chgj0Q0vwhiItYQmeic].info.json
[youtube:tab] playlist RE7 with Skid and Grant: Downloading 2 videos
[download] Downloading video 1 of 2
[download] Resident Evil 7 biohazard with Skid and Grant Episode 001 has already been recorded in archive
Is one of the other options causing a conflict?
from yt-dlp.
There was a bug that prevented --no-overwrites from working correctly. I have already fixed it in the current master
from yt-dlp.
Got it, updating now. Thanks!
from yt-dlp.
Updated with python3 -m pip install --upgrade git+https://github.com/pukkandan/yt-dlp
but it appears to still be downloading each playlist json. Is there a better way to force/clean and reinstall in case its some kind of cache issue?
Defaulting to user installation because normal site-packages is not writeable
Collecting git+https://github.com/pukkandan/yt-dlp
Cloning https://github.com/pukkandan/yt-dlp to /tmp/pip-req-build-fk2tcxf1
Running command git clone -q https://github.com/pukkandan/yt-dlp /tmp/pip-req-build-fk2tcxf1
Requirement already satisfied: mutagen in ./.local/lib/python3.6/site-packages (from yt-dlp==2021.1.29) (1.45.1)
from yt-dlp.
You might have multiple yt-dlp installed. Check with python3 -m pip list
and uninstall older versions with python3 -m pip uninstall <NAME>
from yt-dlp.
Just:
youtube-dl 2021.1.24.1
yt-dlp 2021.1.29
And I'm manually calling youtube-dlc in my command.
from yt-dlp.
Could you give the verbose output of the command you are running? It is working for me:
$youtube-dlc.cmd PLnGaZWkydyfA8yC1i0RJN0iE7idaI2dv2 --write-info-json -v --no-overwrite
[debug] Command-line config: ['PLnGaZWkydyfA8yC1i0RJN0iE7idaI2dv2', '--write-info-json', '-v', '--no-overwrite']
[debug] Loading archive file None
[debug] Encodings: locale cp1252, fs utf-8, out utf-8, pref cp1252
[debug] yt-dlp version 2021.01.29
[debug] Plugin Extractors: ['SamplePlugin']
[debug] Git HEAD: abb10ff78
[debug] Python version 3.8.4 (CPython) - Windows-10-10.0.19041-SP0
[debug] exe versions: ffmpeg 4.3.1-2020-11-19-full_build-www.gyan.dev
[debug] Proxy map: {}
[youtube:tab] PLnGaZWkydyfA8yC1i0RJN0iE7idaI2dv2: Downloading webpage
[download] Downloading playlist: Les 2 Minutes Du Peuple - Intégrale
[info] Playlist metadata is already present
from yt-dlp.
Here's a short playlist I've been testing with.
youtube-dlc --config-location playlists.conf "https://www.youtube.com/watch?v=tO68f7aiwOA&list=PLz3Be--ot61Mvmms68yBEhX6KrzPrqxsW" -v
[debug] Custom config file: playlists.conf
[debug] Custom config: ['--download-archive', 'archive.log', '--force-ipv4', '--ignore-errors', '--no-continue', '--no-overwrites', '--sleep-interval', '1', '--max-sleep-interval', '10', '--add-metadata', '--write-thumbnail', '--write-info-json', '--format', '(bestvideo[vcodec^=av01][height>=2160][fps>30]/bestvideo[vcodec^=vp9.2][height>=2160][fps>30]/bestvideo[vcodec^=vp9][height>=2160][fps>30]/bestvideo[vcodec^=avc1][height>=2160][fps>30]/bestvideo[height>=2160][fps>30]/bestvideo[vcodec^=av01][height>=2160]/bestvideo[vcodec^=vp9.2][height>=2160]/bestvideo[vcodec^=vp9][height>=2160]/bestvideo[vcodec^=avc1][height>=2160]/bestvideo[height>=2160]/bestvideo[vcodec^=av01][height>=1440][fps>30]/bestvideo[vcodec^=vp9.2][height>=1440][fps>30]/bestvideo[vcodec^=vp9][height>=1440][fps>30]/bestvideo[vcodec^=avc1][height>=1440][fps>30]/bestvideo[height>=1440][fps>30]/bestvideo[vcodec^=av01][height>=1440]/bestvideo[vcodec^=vp9.2][height>=1440]/bestvideo[vcodec^=vp9][height>=1440]/bestvideo[vcodec^=avc1][height>=1440]/bestvideo[height>=1440]/bestvideo[vcodec^=av01][height>=1080][fps>30]/bestvideo[vcodec^=vp9.2][height>=1080][fps>30]/bestvideo[vcodec^=vp9][height>=1080][fps>30]/bestvideo[vcodec^=avc1][height>=1080][fps>30]/bestvideo[height>=1080][fps>30]/bestvideo[vcodec^=av01][height>=1080]/bestvideo[vcodec^=vp9.2][height>=1080]/bestvideo[vcodec^=vp9][height>=1080]/bestvideo[vcodec^=avc1][height>=1080]/bestvideo[height>=1080]/bestvideo[vcodec^=av01][height>=720][fps>30]/bestvideo[vcodec^=vp9.2][height>=720][fps>30]/bestvideo[vcodec^=vp9][height>=720][fps>30]/bestvideo[vcodec^=avc1][height>=720][fps>30]/bestvideo[height>=720][fps>30]/bestvideo[vcodec^=av01][height>=720]/bestvideo[vcodec^=vp9.2][height>=720]/bestvideo[vcodec^=vp9][height>=720]/bestvideo[vcodec^=avc1][height>=720]/bestvideo[height>=720]/bestvideo)+(bestaudio[asr=48000]/bestaudio[acodec^=opus]/bestaudio)/best', '--merge-output-format', 'mkv', '--output', '/mnt/storage/media/youtube/%(uploader)s/%(playlist_title)s - [%(playlist_id)s]/%(playlist_title)s - S01E%(playlist_index)s - %(title)s [%(id)s].%(ext)s']
[debug] Command-line config: ['--config-location', 'playlists.conf', 'https://www.youtube.com/watch?v=tO68f7aiwOA&list=PLz3Be--ot61Mvmms68yBEhX6KrzPrqxsW', '-v']
[debug] Loading archive file 'archive.log'
[debug] Encodings: locale UTF-8, fs utf-8, out UTF-8, pref UTF-8
[debug] yt-dlp version 2021.01.29
[debug] Python version 3.6.9 (CPython) - Linux-5.4.78-2-pve-x86_64-with-Ubuntu-18.04-bionic
[debug] exe versions: ffmpeg 3.4.8, ffprobe 3.4.8
[debug] Proxy map: {}
[youtube:tab] Downloading playlist PLz3Be--ot61Mvmms68yBEhX6KrzPrqxsW - add --no-playlist to just download video tO68f7aiwOA
[youtube:tab] PLz3Be--ot61Mvmms68yBEhX6KrzPrqxsW: Downloading webpage
[youtube:tab] PLz3Be--ot61Mvmms68yBEhX6KrzPrqxsW: Downloading webpage
[download] Downloading playlist: Dead Suns Character Intros
[info] Writing playlist metadata as JSON to: /mnt/storage/media/youtube/The Glass Cannon Network/Dead Suns Character Intros - [PLz3Be--ot61Mvmms68yBEhX6KrzPrqxsW]/Dead Suns Character Intros - S01E00 - Dead Suns Character Intros [PLz3Be--ot61Mvmms68yBEhX6KrzPrqxsW].info.json
[youtube:tab] playlist Dead Suns Character Intros: Downloading 5 videos
[download] Downloading video 1 of 5
[download] Dead Suns Character Introduction with Troy and Matthew has already been recorded in archive
[download] Downloading video 2 of 5
[download] Dead Suns Character Introduction with Troy and Skid has already been recorded in archive
[download] Downloading video 3 of 5
[download] Dead Suns Character Introduction with Troy and Ellinor has already been recorded in archive
[download] Downloading video 4 of 5
[download] Dead Suns Character Introduction with Troy and Grant has already been recorded in archive
[download] Downloading video 5 of 5
[download] Dead Suns Character Introduction with Troy and Joe has already been recorded in archive
[download] Finished downloading playlist: Dead Suns Character Intros
from yt-dlp.
No idea. I tried a fresh install in a venv and it still works correctly for me. Try which youtube-dlc
to confirm your PATH isn't polluted
from yt-dlp.
I spun up a brand new LXC to test. Documenting my steps (post install of ffmpeg, git, etc.):
python3 -m pip install --upgrade git+https://github.com/pukkandan/yt-dlp
PATH=$PATH:~/.local/bin
youtube-dlc --version
output: 2021.01.29nano playlists.conf
pasted in my config from other vmyoutube-dlc --config-location playlists.conf "https://www.youtube.com/watch?v=tO68f7aiwOA&list=PLz3Be--ot61Mvmms68yBEhX6KrzPrqxsW"
it downloaded everything appropriately - 5 episodes and their metadata, thumbnails, + the playlist jsonyoutube-dlc --config-location playlists.conf "https://www.youtube.com/watch?v=tO68f7aiwOA&list=PLz3Be--ot61Mvmms68yBEhX6KrzPrqxsW"
confirmed nothing new was downloaded.
Not sure what's happening with my original install but I'm going to just spin up a new clean container. Thanks for helping me test. I saw the Playlist metadata is already present
note.
from yt-dlp.
https://github.com/pukkandan/yt-dlp/issues/36#issuecomment-769246405
would there be a way to have the playlist info.json be deposited in a custom location separate from the standard --output command
Now you can do -o "pl_infojson:<template>"
(bestvideo[vcodec^=av01][height>=2160][fps>30]/bestvideo[vcodec^=vp9.2][height>=2160][fps>30]/bestvideo[vcodec^=vp9][height>=2160][fps>30]/bestvideo[vcodec^=avc1][height>=2160][fps>30]/bestvideo[height>=2160][fps>30]/bestvideo[vcodec^=av01][height>=2160]/bestvideo[vcodec^=vp9.2][height>=2160]/bestvideo[vcodec^=vp9][height>=2160]/bestvideo[vcodec^=avc1][height>=2160]/bestvideo[height>=2160]/bestvideo[vcodec^=av01][height>=1440][fps>30]/bestvideo[vcodec^=vp9.2][height>=1440][fps>30]/bestvideo[vcodec^=vp9][height>=1440][fps>30]/bestvideo[vcodec^=avc1][height>=1440][fps>30]/bestvideo[height>=1440][fps>30]/bestvideo[vcodec^=av01][height>=1440]/bestvideo[vcodec^=vp9.2][height>=1440]/bestvideo[vcodec^=vp9][height>=1440]/bestvideo[vcodec^=avc1][height>=1440]/bestvideo[height>=1440]/bestvideo[vcodec^=av01][height>=1080][fps>30]/bestvideo[vcodec^=vp9.2][height>=1080][fps>30]/bestvideo[vcodec^=vp9][height>=1080][fps>30]/bestvideo[vcodec^=avc1][height>=1080][fps>30]/bestvideo[height>=1080][fps>30]/bestvideo[vcodec^=av01][height>=1080]/bestvideo[vcodec^=vp9.2][height>=1080]/bestvideo[vcodec^=vp9][height>=1080]/bestvideo[vcodec^=avc1][height>=1080]/bestvideo[height>=1080]/bestvideo[vcodec^=av01][height>=720][fps>30]/bestvideo[vcodec^=vp9.2][height>=720][fps>30]/bestvideo[vcodec^=vp9][height>=720][fps>30]/bestvideo[vcodec^=avc1][height>=720][fps>30]/bestvideo[height>=720][fps>30]/bestvideo[vcodec^=av01][height>=720]/bestvideo[vcodec^=vp9.2][height>=720]/bestvideo[vcodec^=vp9][height>=720]/bestvideo[vcodec^=avc1][height>=720]/bestvideo[height>=720]/bestvideo)+(bestaudio[asr=48000]/bestaudio[acodec^=opus]/bestaudio)/best
btw, I noticed your long format string. You can achieve a similar format selection by using -S res,fps,vcodec,asr,acodec
. It is for use cases like this that I made the --format-sort
option. You can also see how yt-dlp orders the formats by using -F
alongside the -S
from yt-dlp.
This is awesome, thanks! And thanks for the tip regarding format sort. I think I've got things 99% where I want them currently. My planned process is:
- Grab my playlists and populate archive.log
- Grab my non-playlist channels and populate archive.log
- Use a bash script to scrape episode's json into a .metdata format per episode that works for mjarends scanner (currently still tweaking this, but its basically done)
- Use a (to be written) bash script to scrape the playlist json for populating 'show' level (playlist) info. (Seasons will only be leveraged for the single non-playlist channel based video, with SYYYY season subfolders. Everything else is a flat directory structure.)
- Manually populate for each artist/channel, via Plex's collection feature, data from the channel level itself from the channel json 1 time per channel.
Here's my configs, let me know what you think.
yt-dlc-playlist.conf
# Use archive file
--download-archive "/mnt/storage/media/youtube/archive.log"
# Ignore errors / connection issues
--force-ipv4
--ignore-errors
--no-continue
--no-overwrites
# Sleep to prevent rate limiting
--sleep-interval 1
--max-sleep-interval 10
# Grab and embed metadata
--add-metadata
--write-thumbnail
--write-info-json
# Set best audio / video quality
--format-sort res,fps,vcodec,asr,acodec
# Set output options
--merge-output-format "mkv"
--output "/mnt/storage/media/youtube/%(uploader)s - %(playlist_title)s - [%(playlist_id)s]/%(playlist_title)s - S01E%(playlist_index)s - %(title)s [%(id)s].%(ext)s" # For extended personal media scanner without parent, TV show fix
--output "pl_infojson:/mnt/storage/media/youtube/%(uploader)s - %(playlist_title)s - [%(playlist_id)s]/%(playlist_title)s - Playlist Info.%(ext)s"
yt-dlc-channel.conf
# Use archive file
--download-archive "/mnt/storage/media/youtube/archive.log"
# Ignore errors / connection issues
--force-ipv4
--ignore-errors
--no-continue
--no-overwrites
# Sleep to prevent rate limiting
--sleep-interval 1
--max-sleep-interval 10
# Grab and embed metadata
--add-metadata
--write-thumbnail
--write-info-json
# Reverse order for non-playlist videos so oldest are still first
--playlist-reverse
# Set best audio / video quality
--format-sort res,fps,vcodec,asr,acodec
# Set output options
--merge-output-format "mkv"
--output "/mnt/storage/media/youtube/%(playlist_title)s - [%(playlist_id)s]/S%(upload_date).4s/%(playlist_uploader)s - %(upload_date)s - %(title)s [%(id)s].%(ext)s"
--output "pl_infojson:/mnt/storage/media/youtube/%(playlist_title)s - [%(playlist_id)s]/%(playlist_uploader)s - Channel Info.%(ext)s"
I think I only have two outstanding to dos:
How do I automatically download a playlist's thumbnail and a channel's thumbnail as part of the json download? I'm already downloading episode thumbnails. Is this even a feature?
Here is my youtube subfolder during testing, for reference, with only 1 channel's data:
I have the channel level channel json flowing into the non-playlist videos subfolder as seen here, which is exactly what I want. Including a ls
of one subfolder as well (2016) for visual reference. This is the channel level JSON whose title is 'Channel Name - Videos'.
I also have each playlist's playlist json landing in the playlist subfolder as shown via an example here.
But I'm also getting an extra subfolder (well, not extra because it's valid data) with only one file, the playlist version of the "channel level" json showing up. It has identical data to the channel level json shown in the 'Videos' folder above. This folder, and the Videos folder, are easily identified in the first screenshot list as they both contain the [UC] code instead of a [PL] code.
(Same data, but the 'titles' are Channel Name - Videos vs Channel Name - Playlists). I'm assuming nothing can be done about this one extra file, but thought I'd ask. I don't want to delete it as part of a cron job as it'll just re-download each run, so likely I will ignore it - but if it is possible to exclude from download the playlist JSON if it's title value is literally %(uploader)s - Playlists
then that would be ideal (if not kind of niche/ridiculous request).
Thanks!
from yt-dlp.
How do I automatically download a playlist's thumbnail and a channel's thumbnail as part of the json download? I'm already downloading episode thumbnails. Is this even a feature?
Currently there is no such feature. It's something I have thought of adding. In the meantime, you could write a script to fetch the data from the JSON and download using CURL/wget
(Same data, but the 'titles' are Channel Name - Videos vs Channel Name - Playlists). I'm assuming nothing can be done about this one extra file, but thought I'd ask.
I have been thinking of an "advanced output template" which once implemented would make this possible. But no promises since I'm not even sure if It is possible for me to implement this feature in the first place. It is also nowhere near the top of my priorities
I am not too familiar with plex, but the youtube-dl part looks good. If you were using windows, I would be concerned about the long filenames, but it shouldn't be an issue in UNIX.
You might want to put the common parts of your config into either portable/user/home config file. That way, if you want to edit it, you only have to do so in one place
from yt-dlp.
Awesome, sounds good to me. Thanks for your insight!
from yt-dlp.
Related Issues (20)
- IBM SkillsBuilds videos HOT 2
- Reddit won't work anymore for maybe a month HOT 2
- Incorrect Metadata for youtube music upload HOT 1
- [ixigua] UnicodeDecodeError: 'utf-8' codec can't decode byte 0x85 in position 6: invalid start byte HOT 1
- [Errno 11002] getaddrinfo failed in Python HOT 2
- Audio Extraction Progress (Like the Downloading Progress) HOT 1
- [WDRPage] No suitable extractor (WDR) found for URL / wdrmaus.de HOT 4
- yt-dlp doesn't use aria2c for subtitles and download is slower than videos HOT 12
- [Youtube] Add --flat-playlist support for https://www.youtube.com/feed/playlists HOT 1
- [twitter] x.com links give Unsupported URL error HOT 8
- --merge-output-format mkv / Resulting file is missing bit rate metadata HOT 5
- Unable to download the meta data of Vimeo video HOT 2
- Vimeo - Unable to download JSON metadata: HTTP Error 400: Bad Request (caused by <HTTPError 400: Bad Request>) HOT 1
- ERROR: Unsupported URL: https://www.instagram.com/reels/C69PXQPPZlH/ HOT 1
- ERROR: Postprocessing: Error opening input files: Result too large
- orf.on No video formats found!
- Youtube comment Extractor Failed HOT 1
- DownloadError: ERROR: [vimeo] 942547573: Unable to download JSON metadata: HTTP Error 400: Bad Request (caused by <HTTPError 400: Bad Request>) HOT 1
- Produce json output when a live content is upcoming or offline, communicating as such HOT 9
- [ThePlatform] [CWTV] - This format is DRM protected HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from yt-dlp.