Youtube videó letöltés és konvertálás Linuxon (szkript)
Az itt olvasható leírást követve, el tudunk készíteni egy youtube videó letöltő szkriptet, ami egyúttal mp3 formátumba is konvertálja a letöltött tartalmat. Remélhetőleg ez a leírás segítséget nyújt a bash szkriptek írásához szükséges alapok elsajátításában.
A szkript futtatásához szükségünk van 2 program telepítésére (youtube-dl, mencoder), ezeket a következő parancs kiadásával tudjuk a legegyszerűbben telepíteni:
sudo apt-get install youtube-dl mencoder
A szkriptünket a következő paranccsal és értékekkel tudjuk majd működésre bírni:
youtube.sh http://www.youtube.com/watch?v=XXXXXXXXXXX szerzo-cim
A youtube.sh a szkriptünk neve, az utána következő link a letöltendő videó címe, végül pedig egy név, amellyel szeretnénk elmenteni az állományunkat. Vágjunk is bele.
Első lépésként hozzunk létre egy üres fájlt a neve legyen youtube.sh:
touch youtube.shNyissuk meg szerkesztésre a kedvenc szövegszerkesztőnkkel. Lehet grafikus felületen a gedit, kedit, vagy karakteres felületen az mcedit, nano… stb. Én a nano-t fogom használni.
nano youtube.shMivel bash szkriptet írunk, a fájl elején meg kell adnunk ezt, mégpedig a következő sorral:
#!/bin/bashMajd, hogy a későbbiekben könnyebben tudjunk dolgozni, állítsunk be egy könyvtárat, amibe szeretnénk dolgozni. Én egy saját könyvtárat hoztam létre a $HOME könyvtáramban.
download=$HOME/youtube
Ha nem alapértelmezett könyvtárról van szó, akkor érdemes ellenőrizni a létezését. (Igazából érdemes ellenőrizni minden esetben.) Egy feltételes utasítással ellenőrizzük a létezését, illetve nem létezését. A következő sorokban megvizsgáljuk, hogy a download változóban eltárolt könyvtár nem létezik-e, ha ez igaz, akkor létrehozzuk a könyvtárat.
if [ ! -e $download ] then mkdir $download echo "A "$download" könyvtár létrehozva" # The directory is created fi
Az előzőekben ismertetett módon leellenőrizzük az flv könyvtár létezését.
if [ ! -e $download/flv ] then mkdir $download/flv echo "A "$download"/flv könyvtár létrehozva" # The directory is created fi
Belépünk a munka könyvtárunkba.
cd $download
Egy üzenettel jelezzük, hogy éppen mit is csinál a szkriptünk.
echo "A letöltés megkezdése" # Start the download
majd letöltjük a fájlt. A $1 változó a szkriptünk meghívása mögött álló szöveget tartalmazza, ami a hivatkozást kell tartalmaznia. Pl.: youtube.sh http://www.youtube.com/watch?v=XXXXXXXXXXX
youtube-dl $1Majd kiíratjuk, hogy sikeresen letöltöttük a videó fájlt:
echo "A video letöltve" # Video is downloaded
A következő paranccsal létrehozunk egy video változót, melyben eltároljuk a szkript meghívásánál megadott link egyenlőségjel mögötti karaktereit, ugyanis a youtube-dl ezzel a névvel fogja elmenteni a videót.
video=`echo $1 | awk -F= '{print $2 }'`
Itt egy új változóval ismerkedünk meg ez a $2 (nem azonos az awk mögötti $2-vel!). Ez a szkript meghívásakor másodikként megadott karaktersorozatot tartalmazza, amelyben az mp3 nevét kell megadnunk. Tehát a szkript helyes meghívása a következőképpen fog kinézni: youtube.sh http://www.youtube.com/watch?v=XXXXXXXXXXX szerzo-cim
A zene változó a következőt fogja tartalmazni: szerzo-cim.mp3
zene=`echo $2 | awk -F. '{print $1}'`.mp3
A változók beállítása után egy üzenettel jelezzük, hogy a konvertálást fogjuk elkezdeni:
echo "A konvertálás megkezdése" # Start the convert
Majd ténylegesen készítünk egy mp3 fájlt a videóból (az eredeti fájl megmarad):
mencoder $video.flv -of rawaudio -oac copy -ovc copy -o $zene
Ismételten jelezzük, hogy hol tart a szkriptünk:
echo "Az mp3 elkészült" # The mp3 is ready
A video változó értékét beállítjuk az általunk megadott névre. A következőt fogja tartalmazni: szerzo-cim.flv
video=`echo $zene | awk -F. '{print $1}'`.flv
Majd átnevezzük az flv fájlunkat:
mv *.flv $video
Végül áthelyezzük a videót az flv könyvtárba:
mv $video $download/flv/
Lezárásképpen jelezhetjük, hogy a szkriptünk lefutott:
echo "A program sikeresen lefutott!" # The script ran succesfully
A szkriptet ízlésünknek megfelelően lehet módosítani. Például, ha nincs szükségünk az flv videóra, akkor törölhetjük is, illetve akár mindkét fájlt más könyvtárakba is helyezhetjük, minden csak rajtunk múlik.
A szkript tovább fejlesztése várható. Igyekszem hamarosan grafikus felületet készíteni hozzá, illetve flv-ből avi-t készíteni.
A szkript egyben:
#!/bin/bash ####################################################### ## Youtube downloader and converter ## Create by blaselinux: (blaselinux KUKAC gmail.com) ## Licence GNU GPL v3 or later. ## http://www.gnu.org/licenses/gpl.html ## http://gnu.hu/gplv3.html ####################################################### # Set the download variable to the working directory download=$HOME/youtube # Check the working directory; exist or not, if not the script make it if [ ! -e $download ] then mkdir $download echo "A "$download" könyvtár létrehozva" # The directory is created fi if [ ! -e $download/flv ] then mkdir $download/flv echo "A "$download"/flv könyvtár létrehozva" # The directory is created fi # Go to the working directory cd $download echo "A letöltés megkezdése" # Start the download # Download the video youtube-dl $1 echo "A video letöltve" # The video is downloaded # Set the video variable video=`echo $1 | awk -F= '{print $2 }'` # Set the zene variable zene=`echo $2 | awk -F. '{print $1}'`.mp3 echo "A konvertálás megkezdése" # Start the convert # Convert the flv file to mp3 mencoder $video.flv -of rawaudio -oac copy -ovc copy -o $zene echo "Az mp3 elkészült" # The mp3 is ready video=`echo $zene | awk -F. '{print $1}'`.flv # Rename the flv file mv *.flv $video # Move the flv file to the flv directory mv $video $download/flv/ echo "A program sikeresen lefutott!" # The script ran succesfully
Az elkészítés után ne felejtsünk el futtatási jogot adni az állományra:
chmod +x youtube.shA kész szkript letölthető innen.
