Softpanorama

May the source be with you, but remember the KISS principle ;-)
Home Switchboard Unix Administration Red Hat TCP/IP Networks Neoliberalism Toxic Managers
(slightly skeptical) Educational society promoting "Back to basics" movement against IT overcomplexity and  bastardization of classic Unix

Grabbing Your Music from YouTube: Do It Your Way

News Recommended Links Working with computer sound      
      Streaming audio from laptop via bluetooth Humor Etc

May 23, 2011 By Emre Sevinc

... I decided to see if I could hack my way through my favorite development environment, Bash, and come up with something that can handle the task.

The first step was to think about which components I needed so that I could integrate them using Bash, the perfect glue:

Remembering that one of the key aspects of UNIX and GNU/Linux utilities is “do one thing and do it very well”, I came up with the following utilities that did one thing and did it very well:

The first component, youtube-dl, is a very simple-to-use command line utility to download the video files from YouTube. For example in order to download Frank Sinatra’s “My Way” from http://www.youtube.com/watch?v=6E2hYDIFDIU all you have to do is issue the command:

$ youtube-dl http://www.youtube.com/watch?v=6E2hYDIFDIU

to have the video file stored at the some location. In this particular case you should be able to see 6E2hYDIFDIU.flv at the directory you ran the youtube-dl command. You also have the capability of getting the title of the video automatically with the help of youtube-dl:

$ youtube-dl --get-title http://www.youtube.com/watch?v=6E2hYDIFDIU 

Frank Sinatra, My Way, With Lyrics

Once you have video file, the second step is to extract the audio data from it which can be easily achieved with a simple ffmpeg command:

$ ffmpeg -i 6E2hYDIFDIU.flv 6E2hYDIFDIU.wav

This will immediately extract the audio information from the already downloaded file into a WAV encoded file. And once you have audio data in that file, it is ready to be converted into and MP3 file which can be done using the lame encoder utility. As with the previous utilities the basic usage of lame is very simple:

$ lame 6E2hYDIFDIU.wav 6E2hYDIFDIU.mp3

Voilà! You have your MP3 file ready for your listening pleasure. You can delete the big .wav file and burn your .mp3 file to a CD to listen to it on your car stereo.

Once we have all the components ready and tested we can create a very simple Bash script that can take the input as the YouTube web address and produce the MP3 file as the output:

1 #!/bin/bash 
2	# A very simple Bash script to download a YouTube video 
3	# and extract the music file from it. 
4 address=$1 
5 regex='v=(.*)' 
6	if [[ $address =~ $regex ]]; then 
7	video_id=${BASH_REMATCH[1]}
8	video_id=$(echo $video_id | cut -d'&' -f1) 
9	video_title="$(youtube-dl --get-title $address)" 
10	youtube-dl $address 
11	ext="flv" 
12	ffmpeg -i $video_id.$ext "$video_title".wav 
13	lame "$video_title".wav "$video_title".mp3 
14	rm $video_id.$ext "$video_title".wav 
15 else 
16	echo "Sorry but the system encountered a problem." 
17 fi

If you save this script as youtube2mp3.sh and turn it into an executable by issuing the

chmod +x youtube2mp3.sh

You can run run it to download “My Way” using the following command:

./youtube2mp3.sh http://www.youtube.com/watch?v=6E2hYDIFDIU

The fourth line of the script is where we get the YouTube video address from the command line as the first parameter. Lines 5, 6, 7 and 8 rely on the use of regular expressions in Bash and the cut utility. We want the part which is starting after ‘v=’ and we don’t need the parameters that may follow it such as ‘&feature=related’. Once they are processed we get the unique code that YouTube uses to identify the videos and store it in the video_id variable. Line 9 is where we retrieve the title of the video file with the help of youtube-dl and store it in the video_title variable. For reasons of simplicity I assumed that the extension of the video file will be ‘.flv’ and stored it in the variable ext. Lines 12 and 13 finish the task of extracting of sound data and storing it in an MP3 file and finally at line 14 we do the house cleaning by deleting the video file as well as the .wav file that is no longer required. If the script encounters any problem with with the YouTube address format that was provided line 16 reports a very simple error message.

The simple Bash script above is far from perfect. Its purpose was to be as simple as possible without taking lots of important things into account such as realistic error handling, different YouTube video formats and a simple help system to report the usage in case the parameters were not entered correctly or missing. A slightly more complicated Bash script which also makes use of a simple graphical user interface with the help of wonderful xenity utility is available at https://github.com/emres/youtube2mp3 (feel free to hack the code and send pull requests to the author ;-) As usual I had a lot of fun exploring those utilities and combining them to create a solution that can be useful for other people, too. Of course that would be almost impossible without the flexibility of GNU/Linux and the free software world in which we live. I hope you’ll enjoy your music while you drive your car as much as I and my father-in-law do.

Happy hacking.

______________________

Emre Sevinç currently works as a researcher, software developer and a system administrator at Linguapolis Institute of University of Antwerp, Belgium. He's been involved with GNU/Linux since 1994 when he first met it at the math department of Istanbul


Top Visited
Switchboard
Latest
Past week
Past month

NEWS CONTENTS

Old News ;-)

Movgrab

freshmeat.net

Movgrab is a command-line movie downloader for sites like YouTube. It has no dependencies; everything that's needed should be there in the tar.gz package. Movgrab can connect through an HTTP proxy, can output the download to stdout for piping into another program, and can fork into the background to free up the console. When forked into the background, its progress can still be seen in a ps list.

youtube-dl

youtube-dl is a small command-line program for downloading videos from YouTube.com.

youtube-pl

youtube-pl plays Youtube videos from the command-line. The video is streamed as it is played. Limited seeking is supported, as are all operations mplayer allows with video streams: speed up/down, brightness/contrast adjustment, A/V delay adjustment, and fast forward.

FreeStar YouTube MP3 Converter

FreeStar YouTube MP3 Converter downloads and converts videos from YouTube. It allows you to extract and download music from YouTube movies and save it as MP3 files. It automatically detects the FLV file URL. This program gives you the option of creating MP3s at 40-bit rates and three sampling rates and in two channels. It can batch-convert unlimited FLV files in a fast and easy WinZip-style interface. It can encode FLV files into custom file sizes for use with portable MP3 players. Multithreading is supported.

Youtube Batch Downloader

Youtube Batch Downloader downloads all video entries in your Youtube playlists. It creates a filesystem structure that stores your videos.

clive

clive is a command line utility for extracting videos from Youtube and other video sharing Web sites. It was originally written to bypass the Adobe Flash requirement needed to view the hosted videos.

LuckyTubes

LuckyTubes is a command-line utility to find, download, and rip audio from YouTube videos. Its main goals are simplicity, low development overhead, and cross-platform usability, in that order. It resembles clive, but it is targeted at playing music that just happens to have a video on YouTube.

Free YouTube to MP3 Converter Download YouTube Video (.flv) to iPod, PSP & mobile phones MP4 video



Etc

Society

Groupthink : Two Party System as Polyarchy : Corruption of Regulators : Bureaucracies : Understanding Micromanagers and Control Freaks : Toxic Managers :   Harvard Mafia : Diplomatic Communication : Surviving a Bad Performance Review : Insufficient Retirement Funds as Immanent Problem of Neoliberal Regime : PseudoScience : Who Rules America : Neoliberalism  : The Iron Law of Oligarchy : Libertarian Philosophy

Quotes

War and Peace : Skeptical Finance : John Kenneth Galbraith :Talleyrand : Oscar Wilde : Otto Von Bismarck : Keynes : George Carlin : Skeptics : Propaganda  : SE quotes : Language Design and Programming Quotes : Random IT-related quotesSomerset Maugham : Marcus Aurelius : Kurt Vonnegut : Eric Hoffer : Winston Churchill : Napoleon Bonaparte : Ambrose BierceBernard Shaw : Mark Twain Quotes

Bulletin:

Vol 25, No.12 (December, 2013) Rational Fools vs. Efficient Crooks The efficient markets hypothesis : Political Skeptic Bulletin, 2013 : Unemployment Bulletin, 2010 :  Vol 23, No.10 (October, 2011) An observation about corporate security departments : Slightly Skeptical Euromaydan Chronicles, June 2014 : Greenspan legacy bulletin, 2008 : Vol 25, No.10 (October, 2013) Cryptolocker Trojan (Win32/Crilock.A) : Vol 25, No.08 (August, 2013) Cloud providers as intelligence collection hubs : Financial Humor Bulletin, 2010 : Inequality Bulletin, 2009 : Financial Humor Bulletin, 2008 : Copyleft Problems Bulletin, 2004 : Financial Humor Bulletin, 2011 : Energy Bulletin, 2010 : Malware Protection Bulletin, 2010 : Vol 26, No.1 (January, 2013) Object-Oriented Cult : Political Skeptic Bulletin, 2011 : Vol 23, No.11 (November, 2011) Softpanorama classification of sysadmin horror stories : Vol 25, No.05 (May, 2013) Corporate bullshit as a communication method  : Vol 25, No.06 (June, 2013) A Note on the Relationship of Brooks Law and Conway Law

History:

Fifty glorious years (1950-2000): the triumph of the US computer engineering : Donald Knuth : TAoCP and its Influence of Computer Science : Richard Stallman : Linus Torvalds  : Larry Wall  : John K. Ousterhout : CTSS : Multix OS Unix History : Unix shell history : VI editor : History of pipes concept : Solaris : MS DOSProgramming Languages History : PL/1 : Simula 67 : C : History of GCC developmentScripting Languages : Perl history   : OS History : Mail : DNS : SSH : CPU Instruction Sets : SPARC systems 1987-2006 : Norton Commander : Norton Utilities : Norton Ghost : Frontpage history : Malware Defense History : GNU Screen : OSS early history

Classic books:

The Peter Principle : Parkinson Law : 1984 : The Mythical Man-MonthHow to Solve It by George Polya : The Art of Computer Programming : The Elements of Programming Style : The Unix Hater’s Handbook : The Jargon file : The True Believer : Programming Pearls : The Good Soldier Svejk : The Power Elite

Most popular humor pages:

Manifest of the Softpanorama IT Slacker Society : Ten Commandments of the IT Slackers Society : Computer Humor Collection : BSD Logo Story : The Cuckoo's Egg : IT Slang : C++ Humor : ARE YOU A BBS ADDICT? : The Perl Purity Test : Object oriented programmers of all nations : Financial Humor : Financial Humor Bulletin, 2008 : Financial Humor Bulletin, 2010 : The Most Comprehensive Collection of Editor-related Humor : Programming Language Humor : Goldman Sachs related humor : Greenspan humor : C Humor : Scripting Humor : Real Programmers Humor : Web Humor : GPL-related Humor : OFM Humor : Politically Incorrect Humor : IDS Humor : "Linux Sucks" Humor : Russian Musical Humor : Best Russian Programmer Humor : Microsoft plans to buy Catholic Church : Richard Stallman Related Humor : Admin Humor : Perl-related Humor : Linus Torvalds Related humor : PseudoScience Related Humor : Networking Humor : Shell Humor : Financial Humor Bulletin, 2011 : Financial Humor Bulletin, 2012 : Financial Humor Bulletin, 2013 : Java Humor : Software Engineering Humor : Sun Solaris Related Humor : Education Humor : IBM Humor : Assembler-related Humor : VIM Humor : Computer Viruses Humor : Bright tomorrow is rescheduled to a day after tomorrow : Classic Computer Humor

The Last but not Least Technology is dominated by two types of people: those who understand what they do not manage and those who manage what they do not understand ~Archibald Putt. Ph.D


Copyright © 1996-2021 by Softpanorama Society. www.softpanorama.org was initially created as a service to the (now defunct) UN Sustainable Development Networking Programme (SDNP) without any remuneration. This document is an industrial compilation designed and created exclusively for educational use and is distributed under the Softpanorama Content License. Original materials copyright belong to respective owners. Quotes are made for educational purposes only in compliance with the fair use doctrine.

FAIR USE NOTICE This site contains copyrighted material the use of which has not always been specifically authorized by the copyright owner. We are making such material available to advance understanding of computer science, IT technology, economic, scientific, and social issues. We believe this constitutes a 'fair use' of any such copyrighted material as provided by section 107 of the US Copyright Law according to which such material can be distributed without profit exclusively for research and educational purposes.

This is a Spartan WHYFF (We Help You For Free) site written by people for whom English is not a native language. Grammar and spelling errors should be expected. The site contain some broken links as it develops like a living tree...

You can use PayPal to to buy a cup of coffee for authors of this site

Disclaimer:

The statements, views and opinions presented on this web page are those of the author (or referenced source) and are not endorsed by, nor do they necessarily reflect, the opinions of the Softpanorama society. We do not warrant the correctness of the information provided or its fitness for any purpose. The site uses AdSense so you need to be aware of Google privacy policy. You you do not want to be tracked by Google please disable Javascript for this site. This site is perfectly usable without Javascript.

Last modified: March, 12, 2019