[RISOLTO][Script BASH] Problema con script bash, penso di formattazione...
[RISOLTO][Script BASH] Problema con script bash, penso di formattazione...
Salve, ho scritto un semplice script che mi scarica il video da youtube, ne trova il titolo e mi restituisce un file mp3 corredato di titolo
per funzionare lo script ha bisogno di: youtube-dl e ffmpeg
La stesura del prog è ancora base, senza controlli particolari per errori e cose del genere, nonche' il cambio di qualche variabile, tipo quella temporanea... ma perche' andare avanti se nn funziona cosi'....
-------------------------------------------------------------------------------------------------
#!/bin/bash
#Dichiarazione variabili
nameURL=$1;
title=${nameURL%%&*};
title=${nameURL##*=}.txt;
filenameURL=${nameURL##*=}.txt;
tmppath=/tmp/youtube2mp3/;
titlepath=$tmppath$filenameURL;
#creazione directory principale temporanea
mkdir $tmppath;
#scaricamento index della pagina del video per individuazione titolo
echo "Cerco il titolo:"
wget -q $nameURL -O $titlepath;
#manipolazione stringa
title=`head --lines=15 $titlepath | grep title`;
title="${title#*>}";
title="${title%}";
echo "$title"
#Scarica il video
echo "Scarico il video:";
youtube-dl $nameURL -o "${tmppath}${title}.flv";
#Converte il video in mp3
echo "Converto il video in mp3:";
ffmpeg -title "$title" -i "${tmppath}${title}.flv" -acodec mp3 -ac 2 -ab 128 -vn -y "$title.mp3";
echo "$title.mp3 salvato";
--------------------------------------------------------------------------------------------------
il problema mi si pone con questo comando:
ffmpeg -title "$title" -i "${tmppath}${title}.flv" -acodec mp3 -ac 2 -ab 128 -vn -y "$title.mp3";
che si blocca o ancora peggio va in loop... la cosa curiosa e' che eseguendo il comando con sh -x e prendendo quella parte di codice incriminata (es: ffmpeg -i 6IdAb24SnRk.txt.flv -acodec mp3 -ac 2 -ab 128 -vn -y 6IdAb24SnRk.txt.mp3) eseguendola nel terminale funziona... all'interno dello script no...
aggiungo che nella prima fase di test... funzionava anche... non vorrei fosse impazzino ffmpeg... io penso sia un problema di virgolette cose cosi', ma ho gia' provato anche a metterle cosi' \" per preservarle, ma niente... lo provate??? mi fate sapere???
anticipatamente ringrazio, attendo notizie
se lo provate dopo l'uso cancellate la cartella /tmp/youtube2mp3
dimenticavo
sh -x youtube2mp3 URLYOUTUBE per provarlo
per funzionare lo script ha bisogno di: youtube-dl e ffmpeg
La stesura del prog è ancora base, senza controlli particolari per errori e cose del genere, nonche' il cambio di qualche variabile, tipo quella temporanea... ma perche' andare avanti se nn funziona cosi'....
-------------------------------------------------------------------------------------------------
#!/bin/bash
#Dichiarazione variabili
nameURL=$1;
title=${nameURL%%&*};
title=${nameURL##*=}.txt;
filenameURL=${nameURL##*=}.txt;
tmppath=/tmp/youtube2mp3/;
titlepath=$tmppath$filenameURL;
#creazione directory principale temporanea
mkdir $tmppath;
#scaricamento index della pagina del video per individuazione titolo
echo "Cerco il titolo:"
wget -q $nameURL -O $titlepath;
#manipolazione stringa
title=`head --lines=15 $titlepath | grep title`;
title="${title#*>}";
title="${title%}";
echo "$title"
#Scarica il video
echo "Scarico il video:";
youtube-dl $nameURL -o "${tmppath}${title}.flv";
#Converte il video in mp3
echo "Converto il video in mp3:";
ffmpeg -title "$title" -i "${tmppath}${title}.flv" -acodec mp3 -ac 2 -ab 128 -vn -y "$title.mp3";
echo "$title.mp3 salvato";
--------------------------------------------------------------------------------------------------
il problema mi si pone con questo comando:
ffmpeg -title "$title" -i "${tmppath}${title}.flv" -acodec mp3 -ac 2 -ab 128 -vn -y "$title.mp3";
che si blocca o ancora peggio va in loop... la cosa curiosa e' che eseguendo il comando con sh -x e prendendo quella parte di codice incriminata (es: ffmpeg -i 6IdAb24SnRk.txt.flv -acodec mp3 -ac 2 -ab 128 -vn -y 6IdAb24SnRk.txt.mp3) eseguendola nel terminale funziona... all'interno dello script no...
aggiungo che nella prima fase di test... funzionava anche... non vorrei fosse impazzino ffmpeg... io penso sia un problema di virgolette cose cosi', ma ho gia' provato anche a metterle cosi' \" per preservarle, ma niente... lo provate??? mi fate sapere???
anticipatamente ringrazio, attendo notizie
se lo provate dopo l'uso cancellate la cartella /tmp/youtube2mp3
dimenticavo
sh -x youtube2mp3 URLYOUTUBE per provarlo
Ultima modifica di rapep il mercoledì 29 luglio 2009, 16:03, modificato 1 volta in totale.
Re: [Script BASH] Problema con script bash, penso di formattazione...
Prova a togliere i ";" (a differenza del c/c++, in bash non sono necessari)
Se ffmpeg non va (posta gli errori), probabilmente è perchè qualche variabile non è inizializzata bene...
ora vado al mare
, poi vedo...
Se ffmpeg non va (posta gli errori), probabilmente è perchè qualche variabile non è inizializzata bene...
ora vado al mare
Ultima modifica di dyrkpw il martedì 28 luglio 2009, 8:23, modificato 1 volta in totale.
io sono ciò che sono non solo per merito di ciò che siamo tutti:
Io non sono te, tu non sei me, ma entrambi siano noi.
Io non sono te, tu non sei me, ma entrambi siano noi.
- difesaparcosempione
- Rampante Reduce

- Messaggi: 6031
- Iscrizione: giovedì 27 luglio 2006, 19:06
- Località: Torino
- Contatti:
Re: [Script BASH] Problema con script bash, penso di formattazione...
posta l'output del comando ...
bash -x youtube2mp3 URLYOUTUBE > out.txt 2>&1
l'output del comando sarà nel file out.txt.
Probabile che " " non servano nel comando incriminato , adesso non ho una bash sotto mano per provare
ciao

bash -x youtube2mp3 URLYOUTUBE > out.txt 2>&1
l'output del comando sarà nel file out.txt.
Probabile che " " non servano nel comando incriminato , adesso non ho una bash sotto mano per provare
ciao
Re: [Script BASH] Problema con script bash, penso di formattazione...
Allora...
Il programma disgraziatamente, a causa della "&" presente in quasi ogni url di youtube va in background (è fastidioso, xk a volte per notificare la fine del processo e la "liberazione" della shell bisogna premere 'invio'...è un problemino di cui soffre anche youtube-dl)
Per aggirare il problema , qui (http://www.inrich.it/guide/abs-guide-it/x6205.html) è consigliato di aggiungere "wait" alla fine dello script...l'ho provato ma funziona una volta si e 3 no...
cmq...
title e filenameURL assumono lo stesso valore...basterebbe title...ma per ora sto solo all' inizio del programma, magari più avanti è utile in qualche maniera...
Il primo problema si verifica (almeno da me) con youtube-dl.
Il titolo del video, estratto dalla pagina html precedentemente scaricato, contiene degli spazi.
Youtube-dl interpreta male questi spazi, e non scarica.
Quindi vanno eliminati gli spazi con sed e sostituiti con degli underscore
andando avanti, ffmpeg non riconosce l'opzione "-title", non so perchè.
Va tolto, o forse messo da qualche parte.
Tuttavia, dato che alla fine c'è "-y" che sovrascrive...non credo sia una grave perdita.
il codec "mp3" io non ce l'ho....uso libmp3lame.
Però mi dice
non mi intendo di musica, ne di ffmpeg....ma decisamente non va.
Anche riducendo le istruzioni al minimo
non va.
Mentre funziona perfettamente con winff
Il programma disgraziatamente, a causa della "&" presente in quasi ogni url di youtube va in background (è fastidioso, xk a volte per notificare la fine del processo e la "liberazione" della shell bisogna premere 'invio'...è un problemino di cui soffre anche youtube-dl)
Per aggirare il problema , qui (http://www.inrich.it/guide/abs-guide-it/x6205.html) è consigliato di aggiungere "wait" alla fine dello script...l'ho provato ma funziona una volta si e 3 no...
cmq...
Due dichiarazioni di title sono inutili...la prima la puoi anche cancellare.#!/bin/bash
#Dichiarazione variabili
nameURL=$1;
title=${nameURL%%&*};
title=${nameURL##*=}.txt;
filenameURL=${nameURL##*=}.txt;
tmppath=/tmp/youtube2mp3/;
titlepath=$tmppath$filenameURL;
title e filenameURL assumono lo stesso valore...basterebbe title...ma per ora sto solo all' inizio del programma, magari più avanti è utile in qualche maniera...
Il primo problema si verifica (almeno da me) con youtube-dl.
Il titolo del video, estratto dalla pagina html precedentemente scaricato, contiene degli spazi.
Youtube-dl interpreta male questi spazi, e non scarica.
Codice: Seleziona tutto
dyrkpw@catorcio:~/Scrivania$ ./y2mp3.sh http://www.youtube.com/watch?v=UpwC6hx0AE4&NR=1
[1] 5452
http://www.youtube.com/watch?v=UpwC6hx0AE4
title : UpwC6hx0AE4.txt
filenameURL : UpwC6hx0AE4.txt
titlepath : /tmp/youtube2mp3/UpwC6hx0AE4.txt
mkdir: impossibile creare la directory "/tmp/youtube2mp3/": Il file esiste
Cerco il titolo:
title dopo head : <title>YouTube - CALABRIA pitbull feat lil john the_anthem</title>
title dopo strano comando : YouTube - CALABRIA pitbull feat lil john the_anthem</title>
title dopo secondo strano comando : YouTube - CALABRIA pitbull feat lil john the_anthem
Scarico il video:
youtube-dl http://www.youtube.com/watch?v=UpwC6hx0AE4 -o /tmp/youtube2mp3/YouTube - CALABRIA pitbull feat lil john the_anthem.flv
Usage: youtube-dl [options] video_url
Options:
-h, --help print this help text and exit
-v, --version print program version and exit
-u USERNAME, --username=USERNAME
account username
-p PASSWORD, --password=PASSWORD
account password
-o FILE, --output=FILE
output video file name
-q, --quiet activates quiet mode
-s, --simulate do not download video
-t, --title use title in file name
-l, --literal use literal title in file name
-n, --netrc use .netrc authentication data
-g, --get-url print final video URL only
-2, --title-too used with -g, print title too
-f FORMAT, --format=FORMAT
append &fmt=FORMAT to the URL
-b, --best-quality alias for -f 18
Codice: Seleziona tutto
...
title="${title#*>}";
title="${title%<*>}";
title=$(echo $title | sed -e 's/ /_/g')
...
andando avanti, ffmpeg non riconosce l'opzione "-title", non so perchè.
Va tolto, o forse messo da qualche parte.
Tuttavia, dato che alla fine c'è "-y" che sovrascrive...non credo sia una grave perdita.
il codec "mp3" io non ce l'ho....uso libmp3lame.
Però mi dice
Codice: Seleziona tutto
WARNING: The bitrate parameter is set too low. It takes bits/s as argument, not kbits/s
Anche riducendo le istruzioni al minimo
Codice: Seleziona tutto
ffmpeg -i ${tmppath}${title}.flv -acodec libmp3lame $title.mp3Mentre funziona perfettamente con winff
Ultima modifica di dyrkpw il mercoledì 29 luglio 2009, 10:28, modificato 1 volta in totale.
io sono ciò che sono non solo per merito di ciò che siamo tutti:
Io non sono te, tu non sei me, ma entrambi siano noi.
Io non sono te, tu non sei me, ma entrambi siano noi.
- difesaparcosempione
- Rampante Reduce

- Messaggi: 6031
- Iscrizione: giovedì 27 luglio 2006, 19:06
- Località: Torino
- Contatti:
Re: [Script BASH] Problema con script bash, penso di formattazione...
Questa cosa non la capisco perchè & può e deve essere gestito.dyrkpw ha scritto: Allora...
Il programma disgraziatamente, a causa della "&" presente in quasi ogni url di youtube va in background (è fastidioso, xk a volte per notificare la fine del processo e la "liberazione" della shell bisogna premere 'invio'...è un problemino di cui soffre anche youtube-dl)
La & ha senso solo se a termine di un comando e quindi in un contesto tipo parametro può essere gestito mettendo dei " oppure \ davanti al & o altre diavolerie di questo tipo..
ciao
(mad)
Re: [Script BASH] Problema con script bash, penso di formattazione...
Si, hai ragione, e ho verificato che aggiungendo uno slash davanti alla "&" lo script funziona....ma nessun'utente farebbe una cosa del genere ;Ddifesaparcosempione ha scritto:Questa cosa non la capisco perchè & può e deve essere gestito.dyrkpw ha scritto: Allora...
Il programma disgraziatamente, a causa della "&" presente in quasi ogni url di youtube va in background (è fastidioso, xk a volte per notificare la fine del processo e la "liberazione" della shell bisogna premere 'invio'...è un problemino di cui soffre anche youtube-dl)
La & ha senso solo se a termine di un comando e quindi in un contesto tipo parametro può essere gestito mettendo dei " oppure \ davanti al & o altre diavolerie di questo tipo..
ciao
(mad)
Ultima modifica di dyrkpw il mercoledì 29 luglio 2009, 14:44, modificato 1 volta in totale.
io sono ciò che sono non solo per merito di ciò che siamo tutti:
Io non sono te, tu non sei me, ma entrambi siano noi.
Io non sono te, tu non sei me, ma entrambi siano noi.
Re: [Script BASH] Problema con script bash, penso di formattazione...
da quando abbiamo installato il tar.gz ti stai a fomentà eh danì? (rotfl)dyrkpw ha scritto: Prova a togliere i ";" (a differenza del c/c++, in bash non sono necessari)
Se ffmpeg non va (posta gli errori), probabilmente è perchè qualche variabile non è inizializzata bene...
ora vado al mare, poi vedo...
(ot)
Re: [Script BASH] Problema con script bash, penso di formattazione...
Io ho ffmpeg installato dai repository di medibuntu.
la stesura del programma è ancora parziale, ecco il perche' di alcune variabili inutilizzate o uguali ad altre, ma servono per la gestione di possibili errori/eccezioni non ancora prese in considerazione.
il problema su youtube_dl a me non si presenta... ecco il mio output:
eseguo: sh -x youtube2mp3.sh http://www.youtube.com/watch?v=2cE1GrG6 ... =topvideos
Il comando che viene eseguito in rosso, se copiato ed incollato funziona,invece nello script, rimane in loop o bloccato nell'encoding. Questo non capisco!!!
Ho risolto il problema della &, con quelli che te chiami comandi "strani", uso il patch matching, mi sembra si chiami cosi', per comodita'!
reinserisco il codice con qualche piccola modifica... i due title erano un errore.
Grazie per l'attenzione
la stesura del programma è ancora parziale, ecco il perche' di alcune variabili inutilizzate o uguali ad altre, ma servono per la gestione di possibili errori/eccezioni non ancora prese in considerazione.
il problema su youtube_dl a me non si presenta... ecco il mio output:
eseguo: sh -x youtube2mp3.sh http://www.youtube.com/watch?v=2cE1GrG6 ... =topvideos
sh -x youtube2mp3.sh http://www.youtube.com/watch?v=2cE1GrG6 ... =topvideos >> Output.txt
+ nameURL=http://www.youtube.com/watch?v=2cE1GrG6dT0
+ title=http://www.youtube.com/watch?v=2cE1GrG6dT0
+ title=2cE1GrG6dT0.txt
+ filenameURL=http://www.youtube.com/watch?v=2cE1GrG6dT0
+ filenameURL=2cE1GrG6dT0.txt
+ tmppath=/tmp/youtube2mp3/
+ titlepath=/tmp/youtube2mp3/2cE1GrG6dT0.txt
+ mkdir /tmp/youtube2mp3/
mkdir: impossibile creare la directory "/tmp/youtube2mp3/"[3] 8755
: Il file esiste
+ echo Cerco il titolo:
Cerco il titolo:
+ wget -q http://www.youtube.com/watch?v=2cE1GrG6dT0 -O /tmp/youtube2mp3/2cE1GrG6dT0.txt
rapep@UBUNTU:~/progetti/youtube2mp3/youtube2mp3_0.1$ + head --lines=15 /tmp/youtube2mp3/2cE1GrG6dT0.txt
+ grep title
+ title= YouTube - Ferrari 458 Italia
+ title=YouTube - Ferrari 458 Italia
+ title=YouTube - Ferrari 458 Italia
+ echo Found: YouTube - Ferrari 458 Italia
Found: YouTube - Ferrari 458 Italia
+ echo Scarico il video:
Scarico il video:
+ youtube-dl http://www.youtube.com/watch?v=2cE1GrG6dT0 -o /tmp/youtube2mp3/YouTube - Ferrari 458 Italia.flv
Retrieving video webpage... done.
Extracting URL "t" parameter... done.
Requesting video file... done.
Video data found at http://v9.lscache1.c.youtube.com/videop ... 1ab1ba753d
Retrieving video data: 100.0% ( 880.50k of 880.50k) at 249.06k/s ETA 00:00 done.
Video data saved to /tmp/youtube2mp3/YouTube - Ferrari 458 Italia.flv
+ echo Converto il video in mp3:
Converto il video in mp3:
+ ffmpeg -title YouTube - Ferrari 458 Italia -i /tmp/youtube2mp3/YouTube - Ferrari 458 Italia.flv -acodec mp3 -ac 2 -ab 128 -vn -y YouTube - Ferrari 458 Italia.mp3
FFmpeg version SVN-rUNKNOWN, Copyright (c) 2000-2007 Fabrice Bellard, et al.
configuration: --enable-gpl --enable-pp --enable-swscaler --enable-pthreads --enable-libvorbis --enable-libtheora --enable-libogg --enable-libgsm --enable-dc1394 --disable-debug --enable-libmp3lame --enable-libfaadbin --enable-libfaad --enable-libfaac --enable-xvid --enable-x264 --enable-liba52 --enable-amr_nb --enable-amr_wb --enable-shared --prefix=/usr
libavutil version: 1d.49.3.0
libavcodec version: 1d.51.38.0
libavformat version: 1d.51.10.0
built on Mar 17 2009 21:37:49, gcc: 4.2.4 (Ubuntu 4.2.4-1ubuntu3)
Seems stream 0 codec frame rate differs from container frame rate: 1000.00 (1000/1) -> 25.00 (25/1)
Input #0, flv, from '/tmp/youtube2mp3/YouTube - Ferrari 458 Italia.flv':
Duration: 00:00:21.3, start: 0.000000, bitrate: 56 kb/s
Stream #0.0: Video: flv, yuv420p, 400x176, 25.00 fps(r)
Stream #0.1: Audio: mp3, 22050 Hz, stereo, 56 kb/s
Output #0, mp3, to 'YouTube - Ferrari 458 Italia.mp3':
Stream #0.0: Audio: mp3, 22050 Hz, stereo, 0 kb/s
Stream mapping:
Stream #0.1 -> #0.0
Press [q] to stop encoding
Il comando che viene eseguito in rosso, se copiato ed incollato funziona,invece nello script, rimane in loop o bloccato nell'encoding. Questo non capisco!!!
Ho risolto il problema della &, con quelli che te chiami comandi "strani", uso il patch matching, mi sembra si chiami cosi', per comodita'!
reinserisco il codice con qualche piccola modifica... i due title erano un errore.
non capisco se e' un errore sintattico... se sono gli spazi nei nomi dei files... sto' fatto che nn prosegue, non riesco proprio a capire...#!/bin/bash
#Dichiarazione variabili
nameURL=${1%%&*};
title=${nameURL%%&*};
title=${title##*=}.txt;
filenameURL=${nameURL%%&*};
filenameURL=${filenameURL##*=}.txt;
tmppath=/tmp/youtube2mp3/;
titlepath=$tmppath$filenameURL;
#creazione directory principale
mkdir $tmppath;
#scaricamento index del video per individuazione titolo
echo "Cerco il titolo:"
wget -q $nameURL -O $titlepath;
#manipolazione stringa
title=`head --lines=15 $titlepath | grep title`;
title="${title#*>}";
title="${title%}";
echo "Found: $title"
#Scarica il video
echo "Scarico il video:";
youtube-dl $nameURL -o "${tmppath}${title}.flv";
#Converte il video in mp3
echo "Converto il video in mp3:";
ffmpeg -title "$title" -i "${tmppath}${title}.flv" -acodec mp3 -ac 2 -ab 128 -vn -y "$title.mp3";
#ffmpeg -i "${tmppath}${title}.flv" -y "$title.mp3";
echo "$title.mp3 salvato";
#pulitura tmp
#rm "$tmppath$filenameURL" "$tmppath$title.flv";
Grazie per l'attenzione
Re: [Script BASH] Problema con script bash, penso di formattazione...
mi sa che hai ragione... sara' un problema che il processo va in background.... mmm...
Re: [Script BASH] Problema con script bash, penso di formattazione...
eh no...purtroppo non è un problema risolvibile.rapep ha scritto: Ho risolto il problema della &, con quelli che te chiami comandi "strani", uso il patch matching, mi sembra si chiami cosi', per comodita'!
Ci litigo da stamattina alle 10 ;D
se scrivi
c'è sempre quella straca#£!@ di "&" , che non si può togliere. :)./youtube2mp3.sh http://www.youtube.com/watch?v=2cE1GrG6dT0&feature=topvideos
La shell l'interpreta come desiderio da parte dell' utente di far eseguire il comando in background, e non so perchè, questo crea grandi problemi.
provando a scrivere
lo script funziona perfettamente../youtube2mp3.sh http://www.youtube.com/watch?v=2cE1GrG6dT0\&feature=topvideos
quindi....
o l'utente sta attento ed copia l'Url prima dell' "&" , oppure bisogna salvare l'url in un file e poi ripescarlo da lì.
ma entrambi le soluzioni sono scomode
P.S li ho chiamati comandi strani x comodità
io sono ciò che sono non solo per merito di ciò che siamo tutti:
Io non sono te, tu non sei me, ma entrambi siano noi.
Io non sono te, tu non sei me, ma entrambi siano noi.
Re: [Script BASH] Problema con script bash, penso di formattazione...
ma se al posto di passarlo come parametro lo passassi come variabile acquisita da stdin?
forse così, essendo già stato lanciato il programma, la & non verrà interpretata! O_O!
forse così, essendo già stato lanciato il programma, la & non verrà interpretata! O_O!
io sono ciò che sono non solo per merito di ciò che siamo tutti:
Io non sono te, tu non sei me, ma entrambi siano noi.
Io non sono te, tu non sei me, ma entrambi siano noi.
Re: [Script BASH] Problema con script bash, penso di formattazione...
FUNGE!
è un po' banale, ma al momento è la soluzione più comoda.
il codice ora funziona bene (semplicemente xk l'url non viene più passato come primo parametro, ma viene acquisito come variabile.
inoltre, per ottenere il nome del video è necessario usare cat e cercare il tag di chiusura , altrimenti nella variabile viene acquisita solo una linea bianca; inoltre non sempre le pagine html di youtube sono uguali, alcune hanno del codice javascript che quindi non permettono di trovare il titolo nelle prime 15 righe.
per comodità è meglio togliere "Youtube -" dal nome, ed anche tutti gli spazi bianchi (non si sa mai).
probabilmente c'è qualcos'altro da sistemare, ma ora devo uscire...
non c'è mai bisogno del ";" .... è necessario solo nei cicli.
infine...ffmpeg non riconosce l'opzione "-title", nonostante sia presente anche nel suo man
ciao
è un po' banale, ma al momento è la soluzione più comoda.
Codice: Seleziona tutto
#!/bin/bash
#Dichiarazione variabili
echo -e "\nInserisci il link a youtube\n Link:"
read nameURL
#nameURL=${1%%&*};
title=${nameURL%%&*};
echo -e "\nnameURL : $nameURL\n";
#title=${title##*=}.txt;
filenameURL=${nameURL%%&*};
echo -e "\nfilenameURL : $filenameURL\n"
filenameURL=${filenameURL##*=}.txt;
echo -e "$filenameURL"
tmppath=/tmp/youtube2mp3/;
titlepath=$tmppath$filenameURL;
#creazione directory principale
mkdir $tmppath;
#scaricamento index del video per individuazione titolo
echo "Cerco il titolo:"
wget -q $nameURL -O $titlepath;
#manipolazione stringa
title=`cat $titlepath | grep "</title>"`;
title="${title#*>}";
title="${title%<*>}";
title=$(echo $title | sed -e 's/YouTube -//g')
title=$(echo $title | sed -e 's/ /_/g')
echo "Found: $title"
#Scarica il video
echo "Scarico il video:";
youtube-dl $nameURL -o "${tmppath}${title}.flv";
#Converte il video in mp3
echo "Converto il video in mp3:";
ffmpeg -title "$title" -i "${tmppath}${title}.flv" -acodec mp3 -ac 2 -ab 128 -vn -y "$title.mp3";
#ffmpeg -i "${tmppath}${title}.flv" -y "$title.mp3";
echo "$title.mp3 salvato";
#pulitura tmp
#rm "$tmppath$filenameURL" "$tmppath$title.flv";inoltre, per ottenere il nome del video è necessario usare cat e cercare il tag di chiusura , altrimenti nella variabile viene acquisita solo una linea bianca; inoltre non sempre le pagine html di youtube sono uguali, alcune hanno del codice javascript che quindi non permettono di trovare il titolo nelle prime 15 righe.
per comodità è meglio togliere "Youtube -" dal nome, ed anche tutti gli spazi bianchi (non si sa mai).
probabilmente c'è qualcos'altro da sistemare, ma ora devo uscire...
non c'è mai bisogno del ";" .... è necessario solo nei cicli.
infine...ffmpeg non riconosce l'opzione "-title", nonostante sia presente anche nel suo man
ciao
Ultima modifica di dyrkpw il mercoledì 29 luglio 2009, 16:15, modificato 1 volta in totale.
io sono ciò che sono non solo per merito di ciò che siamo tutti:
Io non sono te, tu non sei me, ma entrambi siano noi.
Io non sono te, tu non sei me, ma entrambi siano noi.
Re: [Script BASH] Problema con script bash, penso di formattazione...
e infatti e' quello il problema... senza funziona... Grazie... è bello vedere persone preparate... maledetta semanticaaaaaa!
ed hai ragione anche sulle due variabili uguali sono inutili...
reincollo lo script modificato, se qualcuno lo vuole, io lo suo per farmi i cd con la ultima musica, si la qualità e' molto scadente, ma sono cd che ascolto due volte e li butto quindi...
la soluzione piu' semplice e' quella di mettere un controllo, uscire dal programma ed avvertire in caso della presenza della &...
Metto RISOLTO
posso proseguire con lo script... si vede che bisogna levarlo manualmente quel pezzo...sh -x youtube2mp3.sh http://www.youtube.com/watch?v=2cE1GrG6dT0
+ nameURL=http://www.youtube.com/watch?v=2cE1GrG6dT0
+ title=2cE1GrG6dT0.txt
+ filenameURL=2cE1GrG6dT0.txt
+ tmppath=/tmp/youtube2mp3/
+ titlepath=/tmp/youtube2mp3/2cE1GrG6dT0.txt
+ mkdir /tmp/youtube2mp3/
+ echo Cerco il titolo:
Cerco il titolo:
+ wget -q http://www.youtube.com/watch?v=2cE1GrG6dT0 -O /tmp/youtube2mp3/2cE1GrG6dT0.txt
+ head --lines=15 /tmp/youtube2mp3/2cE1GrG6dT0.txt
+ grep title
+ title= YouTube - Ferrari 458 Italia
+ title=YouTube - Ferrari 458 Italia
+ title=YouTube - Ferrari 458 Italia
+ echo Found: YouTube - Ferrari 458 Italia
Found: YouTube - Ferrari 458 Italia
+ echo Scarico il video:
Scarico il video:
+ youtube-dl http://www.youtube.com/watch?v=2cE1GrG6dT0 -o /tmp/youtube2mp3/YouTube - Ferrari 458 Italia.flv
Retrieving video webpage... done.
Extracting URL "t" parameter... done.
Requesting video file... done.
Video data found at http://v9.lscache1.c.youtube.com/videop ... 1ab1ba753d
Retrieving video data: 100.0% ( 880.50k of 880.50k) at 233.90k/s ETA 00:00 done.
Video data saved to /tmp/youtube2mp3/YouTube - Ferrari 458 Italia.flv
+ echo Converto il video in mp3:
Converto il video in mp3:
+ ffmpeg -title YouTube - Ferrari 458 Italia -i /tmp/youtube2mp3/YouTube - Ferrari 458 Italia.flv -acodec mp3 -ac 2 -ab 128 -vn -y YouTube - Ferrari 458 Italia.mp3
FFmpeg version SVN-rUNKNOWN, Copyright (c) 2000-2007 Fabrice Bellard, et al.
configuration: --enable-gpl --enable-pp --enable-swscaler --enable-pthreads --enable-libvorbis --enable-libtheora --enable-libogg --enable-libgsm --enable-dc1394 --disable-debug --enable-libmp3lame --enable-libfaadbin --enable-libfaad --enable-libfaac --enable-xvid --enable-x264 --enable-liba52 --enable-amr_nb --enable-amr_wb --enable-shared --prefix=/usr
libavutil version: 1d.49.3.0
libavcodec version: 1d.51.38.0
libavformat version: 1d.51.10.0
built on Mar 17 2009 21:37:49, gcc: 4.2.4 (Ubuntu 4.2.4-1ubuntu3)
Seems stream 0 codec frame rate differs from container frame rate: 1000.00 (1000/1) -> 25.00 (25/1)
Input #0, flv, from '/tmp/youtube2mp3/YouTube - Ferrari 458 Italia.flv':
Duration: 00:00:21.3, start: 0.000000, bitrate: 56 kb/s
Stream #0.0: Video: flv, yuv420p, 400x176, 25.00 fps(r)
Stream #0.1: Audio: mp3, 22050 Hz, stereo, 56 kb/s
Output #0, mp3, to 'YouTube - Ferrari 458 Italia.mp3':
Stream #0.0: Audio: mp3, 22050 Hz, stereo, 0 kb/s
Stream mapping:
Stream #0.1 -> #0.0
Press [q] to stop encoding
size= 168kB time=21.4 bitrate= 64.0kbits/s
video:0kB audio:168kB global headers:0kB muxing overhead 0.074604%
+ echo YouTube - Ferrari 458 Italia.mp3 salvato
YouTube - Ferrari 458 Italia.mp3 salvato
+ rm /tmp/youtube2mp3/2cE1GrG6dT0.txt /tmp/youtube2mp3/YouTube - Ferrari 458 Italia.flv
ed hai ragione anche sulle due variabili uguali sono inutili...
reincollo lo script modificato, se qualcuno lo vuole, io lo suo per farmi i cd con la ultima musica, si la qualità e' molto scadente, ma sono cd che ascolto due volte e li butto quindi...
la soluzione piu' semplice e' quella di mettere un controllo, uscire dal programma ed avvertire in caso della presenza della &...
Metto RISOLTO
Re: [RISOLTO][Script BASH] Problema con script bash, penso di formattazione...
com'e' la tua soluzione... me la scrivi in modo piu' esplicito?
Re: [RISOLTO][Script BASH] Problema con script bash, penso di formattazione...
ah ho capito inserendo l'indirizzo attraverso un read dopo l'esecuzione?
Re: [RISOLTO][Script BASH] Problema con script bash, penso di formattazione...
Usando per motivi miei youtube-dl ho notato due cose:
-C'è un parametro (-t o -l) che se impostato rinomina automaticamente il video con il suo titolo (ma ho notato che non lo fa bene come nel tuo script, quindi meglio lasciar perdere)
-youtube-dl scarica la versione "base" del video, e non quella hd...
-C'è un parametro (-t o -l) che se impostato rinomina automaticamente il video con il suo titolo (ma ho notato che non lo fa bene come nel tuo script, quindi meglio lasciar perdere)
-youtube-dl scarica la versione "base" del video, e non quella hd...
io sono ciò che sono non solo per merito di ciò che siamo tutti:
Io non sono te, tu non sei me, ma entrambi siano noi.
Io non sono te, tu non sei me, ma entrambi siano noi.
Chi c’è in linea
Visualizzano questa sezione: 0 utenti iscritti e 2 ospiti
