JunkFood02 / Seal

🦭 Video/Audio Downloader for Android, based on yt-dlp, designed with Material You
GNU General Public License v3.0
11.78k stars 510 forks source link

Ability to Add Multiple Custom Output Templates for Different Video Types #1873

Open UMA1R-01 opened 1 day ago

UMA1R-01 commented 1 day ago

Checklist

Is your feature request related to a problem? Please describe.

Currently, I need to manually copy-paste the output template code each time I want to switch between downloading a playlist and a single video. For instance, when downloading from a playlist, I use an output template that includes playlist indexing, which is %(playlist_index)s. %(title).200B (%(height)sp).%(ext)s, but for single video downloads, I do not need the playlist index, for those I use %(title).200B (%(height)sp).%(ext)s.

It would be much easier to have different output templates ready for selection, so I don’t have to manually adjust the template each time.

Describe the solution you'd like

I would like the option to save and choose between multiple custom output templates within Seal. This would allow me to easily switch between different templates based on the type of content I am downloading (e.g., one template for playlist videos with indexing, and another template for single videos without indexing). Having preset templates to choose from would streamline the process and save time when switching between different types of downloads.

Video link

This feature request is applicable to all types of video downloads, especially when switching between YouTube playlist and single video downloads.

Additional context

Currently, managing templates manually for different types of downloads is cumbersome. Adding multiple template options would improve user experience and efficiency when downloading videos with varying needs.

hseg commented 5 hours ago

Note that for this case specifically, you could use yt-dlp's replacement feature and just use %(playlist_index&{}. )s%(title).200B (%(height)sp).%(ext)s instead.

My own usecase uses %(upload_date>%Y-%m-%d)s instead of the playlist index when individual videos are downloaded. I haven't yet managed to merge the two into a single output template, so I'll deal with the redundancy of always having the date for now. UPDATE: I have partially succeeded here: %(playlist_title,upload_date>%Y-%m-%d&{} - |)s%(playlist_index&{} - |)s does what I want, at the cost of not being able to just use /@user/videos and Seal's video selection dialog -- yt-dlp's youtube:tab extractor presents tabs as URLs, so this will always use the playlist branch here. But that's a yt-dlp issue: https://github.com/yt-dlp/yt-dlp/issues/11583.

hseg commented 3 hours ago

Though for some reason Seal is stripping some of the formatting from the output template I gave it: %(uploader)s - %(playlist_title,upload_date>%Y-%m-%d&{} - |)s%(playlist_index&{} - |)s%(title).200B [%(id)s].%(ext)s on https://www.youtube.com/playlist?list=PLTZM4MrZKfW9kFDPcNmKgcjryMW8WqwPJ yields

Practical_Engineering - Corrosion1You_Spend_More_on_Rust_Than_Gasoline_Probably [2RbiCOFffRs].mkv
Practical_Engineering - Corrosion2What_s_the_Difference_Between_Paint_and_Coatings [M7-7EO3odMg].mkv
Practical_Engineering - Corrosion3Why_Spillway_Gates_Don_t_Rust_Out [qFXWjv65JWg].mkv

rather than the expected

Practical Engineering - Corrosion - 1 - You Spend More on Rust Than Gasoline (Probably) [2RbiCOFffRs].mp4
Practical Engineering - Corrosion - 2 - What's the Difference Between Paint and Coatings? [M7-7EO3odMg].mp4
Practical Engineering - Corrosion - 3 - Why Spillway Gates Don't Rust Out [qFXWjv65JWg].mp4