8 ms·
Show HN: YouTube-dl wrapper with added features to easily manage YouTube audio
- pseudoroot 7y agoyt-audio has added features like custom CLI arguments (users can setup their own CLI arguments to manage playlists/audios), save each audio/playlist to a separate directory, added option to keep track of downloaded titles without archive file, and more ...
- whatsmyusername 7y agoyoutube-dl is the only thing that makes the modern web actually usable. I ended up writing a bot that runs on a docker scheduled task and looks at trello. I can drop a youtube link on the board and it will grab the audio. Great for when I hear a song somewhere that I want to add to my phone later.
- mmastrac 7y agoHow are you managing this integration? IFTTT?
- whatsmyusername 7y agoIt's just python running in a docker container in a scheduled task on ECS once an hour. I built it to test the pattern for work. I use a trello integration library, shell out for youtube-dl, run a normalizer on anything it pulls, boto3 the files to s3 and then call SNS to text me it's done. I pick the files up later. When youtube-dl updates (which it does, regularly) I just redeploy as it's tagged for latest in the requirements file. I could add this update step to the container or pull a copy from s3 that I maintain, but I'm not a big fan of pulling in code at runtime. Trello is acting as an SQS queue, RabbitMQ queue, or redis set. If something fails the code will dump the error text into the card and retry indefinitely till I fix it. This entire setup costs me < $1 a month. I think my route53 domains cost more.
- whywhywhywhy 7y agoYouTube-dl demolishes 100 pain points of using the modern web This wrapper gets rid of the only pain point in using YouTube-dl which was having to google every time you wanted just the audio. Great work
- jchw 7y agoOff the top of my head, isnt that just the -x flag?
- pseudoroot 7y agoIt's a bit more than that. Eg: One can configure their own CLI arguments to keep track of particular playlist(s). $ yt-audio --your-arg1 --your-arg2 This will sync playlist/audios configured against these arguments.
- jchw 7y agoSorry, no doubt your app does more than -x. I just meant for extracting audio alone.
- rwmj 7y agoI have a file under ~/bin called youtube-mp3 which has this one-liner: exec $HOME/d/youtube-dl/youtube-dl -t -x --audio-format=mp3 "$@" (Edit: I'm sure this script does a lot more, but making ytdl download only the audio is fairly simple. Note the above command converts the file to mp3 which some people may not want to do because it's lossy.)
- cordite 7y agoWill this get into brew?
- pseudoroot 7y agoHaven't used brew before. I'll look into it when I'll get some free time.
- igetspam 7y agoTypo in the readme: yt-audo I'd make a PR but I'm not near a computer right now. This is great. I have a couple audio files I need to pull for my kid and this is gonna save me a couple steps. Thank you!
- asadlionpk 7y agodone
- krick 7y agoCannot understand what exactly is that. I have used a simple alias called (unsurprisingly) yt-audio for years, which is youtube-dl with appropriate flags (-x, --audio-quality, --download-archive, -o, etc.), and this seems to be exactly that, only written in python for some reason.
- pseudoroot 7y agoIt adds a few more functionalities like setting up custom arguments, option to keep track of downloaded titles without archive file, and a few more. It just tries to make audio/playlist management easy. As mentioned, it is a youtube-dl wrapper. So under the hood it uses classic youtube-dl arguments.
- toomuchtodo 7y agoIs there any reason these features couldn't be pushed upstream into youtube-dl proper?
- darau1 7y agoCan you share this? I've been meaning to do something very similar for the longest while and haven't got around to it.
- z3ncyberpunk 7y agoJust read the man page and make an alias? That's just lazy on your part
- 3PS 7y agoFor the record, if you only use youtube-dl for the purposes of downloading audio (like me), then you can keep a config file in $HOME/.config/youtube-dl/config with default arguments so you don't have to look them up each time. For example, here's a sample from my config: # extract audio only -x # stick to mp3 --audio-format mp3 # get rid of the annoying URL stuff at the end -o "%(title)s.%(ext)s"
- crystaldev 7y agoAnyone else write a a lot of ripper scripts like youtube-dl but never share them for fear of starting an arms race with the content provider? It's easy to rip most .ts/XHR video streams with a bash loop.
- orf 7y agoyoutube-dl supports a _lot_ of providers/sites[1]. Perhaps it's easier to contribute a new downloader (it's pretty simple[2]), and judging by the number of updates required most sites don't care that much. 1. https://github.com/ytdl-org/youtube-dl/tree/master/youtube_dl/extractor https://github.com/ytdl-org/youtube-dl/tree/master/youtube_d... 2. https://github.com/ytdl-org/youtube-dl/blob/master/youtube_dl/extractor/cartoonnetwork.py#L24 https://github.com/ytdl-org/youtube-dl/blob/master/youtube_d...
- deleted 7y ago[deleted]
- deleted 7y ago[deleted]
- rasz 7y agoYes :( I even removed mine from github after reading about people losing their gmail over unrelated google account problems.
- mikewhy 7y agoPrecisely why I never shared any of the backend code for ss-plex.
- weq 7y agoIm going to claim to be the first person to democratise the downloading of videos for later watching from websites. I created this for google video, because at the time they had lots of car videos i was interested in, but it had plugins for youtube and other content providers i used. http://gvdownloader.sourceforge.net/ http://gvdownloader.sourceforge.net/ And yes, it was about a month after publishing that the arms race started with google. It was exciting at first, but then they started getting dirty, excluding me from search results and using whatever muscle they could to stop people finding the app. (here is a link the hockeystick download graph, it got picked up by various other distribution networks in between) https://sourceforge.net/projects/gvdownloader/files/stats/timeline?dates=2003-10-22+to+2020-01-20 https://sourceforge.net/projects/gvdownloader/files/stats/ti... I wrote it because bandwith was really expensive and slow back then. It was an experiment to solidify some programming concepts i was learning at the time, and also my first foray into browser plugin development.
- air7 7y agoOT but does ytdl violate YouTube's tos? I'd guess so as it skips the ads. Can it be used commercially, say?
- nadermx 7y agoHow does simply opening a website bind you to any contract?
- edgineer 7y agoIt isn't backed by the force of the US judicial system, but when YouTube says a person's Google account will be banned for commercial usage, I trust them.
- LeoPanthera 7y agoYouTube (and youtube-dl) does not require you to be logged in. And anyway I don't see how downloading a video is "commercial usage".
- deleted 7y ago[deleted]
- monkeydust 7y agoNice, I have script that does speech to text using google cloud and I wanted an easy way to get text out of youtube videos so this will help.
- genidma 7y agoCan you please share the code? Thx!
- qwerty456127 7y ago> MP3 works fine. M4a does not work. Doesn't make much sense then. YouTube doesn't have MP3 so MP3 means unnecessary transcoding i.e. quality and time loss. Why would anybody convert to MP3 today having AAC and OPUS originals? OPUS provides unprecedented quality at all bitrates (better than AAC and MP3), AAC also provides great quality&compression (better than MP3) and plays everywhere.
- SisRob 7y agoWell, the audio quality is already reduced on upload - and much more than mp3 transcoding would.
- qwerty456127 7y agoAmong other options, YouTube offers 160 kbps OPUS (which, AFAIK, can be expected to be perceptually lossless and better than 320 kbps MP3). Would they waste bandwidth on streaming it this high if the actual quality they store is worse than that? As far as I know every transcoding reduces it further. Even transcoding from 128 kbps AAC to 320 kbps MP3 will make the quality slightly worse.
- pseudoroot 7y agoWhen using file's metadata method for tracking downloaded records, m4a file extension is not supported. Metadata method relies on 'purl' metadata tag. And m4a format has no purl tag, so it does not work. One can use archive file method instead. This limitation has nothing to do with yt-audio's capability of downloading m4a format. M4a limitation only applies to metadata method of tracking downloaded tracks.
- qwerty456127 7y agoWhy rely on tags if there is the ID appended to the file name and the file name is the title of the video? Youtube-dl names the files it downloads this way by default, just leave it as it is and you can identify the files easily.