kieraneglin / pinchflat

Your next YouTube media manager
GNU Affero General Public License v3.0
1.28k stars 23 forks source link

[Request] - Refine video titles #174

Closed LoganJFisher closed 7 months ago

LoganJFisher commented 7 months ago

I'd like to request tools to do two things to video titles:

  1. Remove a fixed part of titles from a particular source. For example, videos from the channel "OverSimplified" have "- OverSimplified" as part of every title, which I'd like to remove.

  2. Remove "fluff" from titles. This is probably harder to implement. It involves automatically detecting parts of titles that aren't actually relevant to understanding what the video is about. This likely includes hashtags, the channel's own name, and some other things like information in parantheses.

kieraneglin commented 7 months ago

Hey there! Thanks for the report (:

This is technically possible already through yt-dlp, but in testing it out it's a bit of a pain for end-users to get going. I'll make a change that should improve that and get back to you on how to implement what you're looking for 🤙

kieraneglin commented 7 months ago

I don't plan to ever support this natively in-app, but this will be possible in the next version of Pinchflat by way of custom yt-dlp options (docs). Please read that page carefully because there are support implications from using this advanced feature!

I'm sure there's a better way to handle this, but I believe adding this to the applicable yt-dlp config file will do what you want:

--parse-metadata "title:(?P<title>.+?)(\s?-\s?OverSimplified.*)"

This will remove - Oversimplified and any characters after it from the {{ title }} output template placeholder


For your second point, this is not something I plan to implement since it's so open-ended and up to personal preference. You could likely achieve something acceptable using a combination of yt-dlp custom options and output syntax if you have firm constraints (like removing hashtags and data within parentheses)


This will be in a release either later today or tomorrow!

LoganJFisher commented 7 months ago

If I may, I think there's a more elegant way to go about this.

In creating a Pinchflat source, there could be a text field and a check box.

  1. The text field allows you to modify the titles of all videos downloaded with that source. It could use the same formatting as yt-dlp. Basically, for my case I would enter "\s?-\s?OverSimplified" which would remove ever instance of "- OverSimplified" from the title of every video.

  2. The check box (or better yet, a series of check boxes like you provide for Sponsorblock in Media Profiles) would enable a system that automatically filters out common spammy title elements like hashtags.

Allowing the user to do this through Pinchflat instead of through config makes it much more accessible and I think makes perfect sense.

kieraneglin commented 7 months ago

I appreciate the idea, but the issue always comes back to maintenance burden for a relatively niche feature.

Every time I change something to do with media indexing or downloading I'm also increasing the surface area for bugs, regressions, and issues from yt-dlp. Even then, making a half-attempt at this feature would work for some people, but others would want to, for example, provide much more advanced pattern matching on the title + description for normalizing their music library. So I've increased my workload and maintenance burden for a feature that serves a very niche use case but doesn't go far enough as to serve all instances of that use case.

The reason I say it's niche is because, as I see it, there are two main users of an app like this:

Of course there are exceptions to these rules (and you may be one of them!), but this is the vast majority. So given the options to either:

  1. Not support this feature at all
  2. Support it in a way that works for some people but doesn't go far enough for others, or;
  3. Support the full suite of yt-dlp functionality, but take the training wheels off

I figured 3 is the best option.


I want to make it clear that I genuinely appreciate the input! Comments like this make the app better for me and for everyone 💪

But I also want to be clear that I'm not being flippant in my choices. I may not paint the full picture in all my replies, but there is honest thought that goes into the implementation vs. impact vs. burden that comes with a feature (:

LoganJFisher commented 7 months ago

That's a very fair perspective. Thank you for your consideration.