Jump to content
DarkyAngel

Youtube Playlist Downloader

Recommended Posts

dac? dore?te cineva..

#!/bin/bash

# set -x

# By Ed Wiget
# This script automates downloading youtube video plylists and converting to mp3 file

# 20120625 - initial script based off of http://www.edwiget.name/2011/08/ge%E2%80%A0-%C2%A5d-%C2%A7hd%C2%A2k-dn/
# 20120628 - add a check to see if the name already exists and if so skips it

# you should do this sudo command and the svn rtmpdump commands below before running this script
# sudo apt-get install youtube-dl lame faad ffmpeg ffprobe

# for rtmp and librtmp do this:
# svn co svn://svn.mplayerhq.hu/rtmpdump rtmpdump
# cd rtmpdump/trunk
# make
# sudo make install

# set this variable to the location of your scripts:
BASE_DIR=~/scripts

# this sets the location of the python youtube-dl script, relative to above
YOUTUBE_DL=${BASE_DIR}/youtube-dl/youtube-dl

# this sets the path of the downloaded files and temp directory
DL_FILES=~/test-yt

# this sets the path to were the final mp3 is stored
MP3_LOCATION=~/Music

# this sets the location of the video file downloaded
VID_LOCATION=~/Videos

# this checks for the youtube-dl script and if it doesn't exist, it gets it
# if it does exist, it checks to make sure its the latest version
if [ ! -d ${BASE_DIR}/youtube-dl ]; then
echo "grabbing the youtube-dl script"
cd ${BASE_DIR}
git clone git://github.com/rg3/youtube-dl.git youtube-dl
chmod 700 ${BASE_DIR}/youtube-dl/youtube-dl
else
echo -e "youtube-dl already exists\n\nMaking sure we have the latest version"
${YOUTUBE_DL} -U
chmod 700 ${BASE_DIR}/youtube-dl/youtube-dl
fi

# this checks to make sure we have ffmpeg and lame installed, and if not, grabs them
FFMPEG1=`which ffmpeg | wc -l`
LAME1=`which lame | wc -l`

if [ ${FFMPEG1} = 1 ]; then
echo "ffmpeg already exists"
else
echo "grabbing ffmpeg"
# for ubuntu based distros, use this line
sudo apt-get install ffmpeg
# for redhat based distros, use this line
#sudo yum install ffmpeg
fi

if [ ${LAME1} = 1 ]; then
echo "lame already exists"
else
echo "grabbing lame"
# for ubuntu use this line
sudo apt-get install lame
# for redhat use this line
# sudo yum install lame
fi

# next we ask the user for the video file, it should be in format like:
# http://www.youtube.com/playlist?list=PL4E71AC1BFE99D171
echo -e "What is the video playlist to download, ie. http://www.youtube.com/playlist?list=PL4E71AC1BFE99D171"
read VIDEO_URL

echo "You entered ${VIDEO_URL} is this correct? ( y / n )"
read ANS
if [ ${ANS} = "y" ]; then
wget -O /tmp/playlist.output ${VIDEO_URL}

for i in `cat /tmp/playlist.output | grep --color=auto -E 'watch\?v=' | cut -d '=' -f3 | sed 's/&list//g' | grep -iv "hid"`; do
URL="http://www.youtube.com/watch?v=$i"
cd ${DL_FILES}
# grab the song title
SONG_TITLE=`${YOUTUBE_DL} --get-title ${URL}`
echo -e "the song title is ${SONG_TITLE}"
# here we check if the song already exists, if so it skips it....
SONGCHK=`ls ${MP3_LOCATION}/"${SONG_TITLE}"* | wc -l`
if [ "${SONGCHK}" -ge "1" ]; then
echo "song already exists....."
else
# downloading video
echo "downloading video....please wait"
${YOUTUBE_DL} ${URL}
# we need to convert the dl url to a filename for later processing
# the url is like: http://www.youtube.com/watch?v=6E2hYDIFDIU
# the downloaded file will be 6E2hYDIFDIU.mp4
MP4_FILE=`echo ${URL} | awk -F/ '{print$4}' | awk -F= '{print$2}' `
# get the downloaded file extension
FILE_EXT=`ls ${DL_FILES}/${MP4_FILE}* | awk -F. '{print$2}' `
echo "your video is located in ${DL_FILES}/${MP4_FILE}.${FILE_EXT}"
echo ""
echo "converting ${DL_FILES}/${MP4_FILE}.${FILE_EXT} to wav.....please wait"
# ffmpeg -i 6E2hYDIFDIU.flv 6E2hYDIFDIU.wav
ffmpeg -i ${DL_FILES}/${MP4_FILE}.${FILE_EXT} ${DL_FILES}/"${SONG_TITLE}".wav
echo "video converted to wav file....converting wav to mp3"
lame -b 128 ${DL_FILES}/"${SONG_TITLE}".wav ${MP3_LOCATION}/"${SONG_TITLE}".mp3
echo "${SONG_TITLE} is now available at ${MP3_LOCATION}/${SONG_TITLE}.mp3"
# added 20110813
# check to see if video is mp4, if so, mv to Music folder. If not, convert to mp4 then move.
if [ "`echo ${FILE_EXT}`" = "mp4" ]; then
echo -e "\n\nmoving video download file ${DL_FILES}/${MP4_FILE}.${FILE_EXT} to ${VID_LOCATION}/${SONG_TITLE}.${FILE_EXT}"
mv ${DL_FILES}/${MP4_FILE}.${FILE_EXT} ${VID_LOCATION}/"${SONG_TITLE}".${FILE_EXT}
echo "video file is now at ${VID_LOCATION}/"${SONG_TITLE}".${FILE_EXT}"
else
echo -e "converting ${DL_FILES}/${MP4_FILE}.${FILE_EXT} to ${DL_FILES}/${MP4_FILE}.mp4....please wait"
ffmpeg -i ${DL_FILES}/${MP4_FILE}.${FILE_EXT} ${DL_FILES}/${MP4_FILE}.mp4
mv ${DL_FILES}/${MP4_FILE}.mp4 ${VID_LOCATION}/"${SONG_TITLE}".mp4
echo "video file is now at ${VID_LOCATION}/"${SONG_TITLE}".mp4"
fi
echo -e "\n\ndone .... and enjoy"
fi
done
else
echo "there was an error...."
exit
fi
echo "all done.....enjoy"
0 0share0share1

"enjoy"!

Sursa

Edited by DarkyAngel
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...