Ask Lemmy
A Fediverse community for open-ended, thought provoking questions
Rules: (interactive)
1) Be nice and; have fun
Doxxing, trolling, sealioning, racism, toxicity and dog-whistling are not welcomed in AskLemmy. Remember what your mother said: if you can't say something nice, don't say anything at all. In addition, the site-wide Lemmy.world terms of service also apply here. Please familiarize yourself with them
2) All posts must end with a '?'
This is sort of like Jeopardy. Please phrase all post titles in the form of a proper question ending with ?
3) No spam
Please do not flood the community with nonsense. Actual suspected spammers will be banned on site. No astroturfing.
4) NSFW is okay, within reason
Just remember to tag posts with either a content warning or a [NSFW] tag. Overtly sexual posts are not allowed, please direct them to either !asklemmyafterdark@lemmy.world or !asklemmynsfw@lemmynsfw.com.
NSFW comments should be restricted to posts tagged [NSFW].
5) This is not a support community.
It is not a place for 'how do I?', type questions.
If you have any questions regarding the site itself or would like to report a community, please direct them to Lemmy.world Support or email info@lemmy.world. For other questions check our partnered communities list, or use the search function.
6) No US Politics.
Please don't post about current US Politics. If you need to do this, try !politicaldiscussion@lemmy.world or !askusa@discuss.online
Reminder: The terms of service apply here too.
Partnered Communities:
Logo design credit goes to: tubbadu
view the rest of the comments
I've been working on a hobby Python project to extract YT URLs from a CSV file, mass download them as audio files, extract their thumbnails and crop them to be square (Like proper album art), then re-encode them again.
I've gotten the functionality of the CSV Extractor and Thumbnail Fixer completed, but I still need proper message displays for them, as well as a menu to select between the 2 functionalities.
If it's possible, I would love to automatically add the title and artist metadata to the files based on the filename, though I haven't figured out a way to do that yet.
I should probably do something like that as well. I get plenty of music off of YouTube and usually prefer to listen to it locally rather than stream it and it's always nice when they have the proper thumbnail and metadata, but I've been getting by so far with just using a well prepared CLI command for each song I want and substituting the URL in. It does most everything pretty well, but it usually ends up with my audio in a .webm format that my phone keeps wanting to interpret as a video file and usually the thumbnail only gets added to the one file with both audio and video, but not to the audio only file.
I'd be interested in hearing more about what you're doing for this to see if my own solution could be improved.
I'm making my project in Python. I use a CSV module to extract the data from a CSV file. In my case, my CSVs are playlists created by Kreate, an android YouTube Music client. In those playlist CSV files, there's a colum that contains the video IDs for each item in the playlist. Part of my script extracts those, and formats YouTube video URLs out of them.
I use an app called media-downloader on Linux to do the actual batch downloading. It uses yt-dlp as its backend. I have my download options set to
-f bestaudio --extract-audio --audio-quality 0 --embed-thumbnail. My filename format is set to"%(uploader)s - %(title).200s.%(ext)s". The.200limits the title to 200 characters.Then for the thumbnail editing, I use my script to call ffmpeg to extract the thumbnail from the video, use
wand(Basically ImageMagick for Python) to crop the image to a square based on the image's height (You ever see those thumbnails with the solid colors on the side? That's what I'm removing.), then re-encode them using ffmpeg.For my setup, Media-downloader downloads files as OPUS, so I convert them to MP3 during the thumbnail portion of my script.
That was quite a wall of text, but I'll probably put my project on Codeberg when I'm done if you're interested in looking at the code.