|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Oct 2003
Messaggi: 2987
|
Ho creato questo registratore di radio internet, vi piace?
Ciao a tutti,
negli ultimi giorni ho creato questo script che permette di registrare le radio internet (anche quelle che non si trovano su shoutcast e simili tipo le radio rai, la bbc, radio deejey) in mp3. Mi sono basato in parte su quanto esposto qui: http://walkingtowel.org/2006/03/03/r...linux-part-ii/ modificandolo in modo da avere una sorta di interfaccia grafica (ho usato kdialog per cui penso sia utile solo per gli utenti kde) che permettesse di selezionare i vari parametri e di iniziare e terminare la registrazione. Che ne pensate? Come faccio a pubblicarlo per renderlo disponibile a tutti? Se vedete lo script ho usato xterm perchè mplayer una volta che si è connesso alla radio si duplica diventando due processi. Se faccio partire mplayer dentro xterm, uccidendo xterm uccido tutti i processi figli. Se lo avviao senza xterm conosco il pin solo del primo processo mplayer e il secondo rimane vivo. Per me va anche bene così solo che se l'utente chiude la finestra di xterm non è previsto alcun controllo nel programma. Insomma mancano ancora alcune cose da fare, ma gradirei un vostro aiuto e vostri pareri. Grazie, Xwang Codice:
#!/bin/bash # radioRecoder.sh # v0.3.0 - 20080814 # Xwang <xwang1976@email.it> # Released under GPL 2.0 and following (can you help me and tell if it is GPL3 compliant?) # This script acts as a wizard enabling the user to select the URL to listen and eventually rip it after having specified # the directory and the file name # The cancel button is used to go to the previous page # To exit the program press cancel in the URL page and follow the instruction # TBD # store inserted URL in external file and use them in a combobox # check if parameter is passed or not # modify parameters so that recording can be done without user iteration # capture Ctrl-C in order to clean all temporary files and kill opened processes before closing # give some indication on recording time and if possible file dimension # put confirmation on registration stop # open the directory where last file has been saved (maybe asking for it) at the end of the recording # translate messanges # # assign as default stream value the one passed ad first parameters if any (check TBD) STREAM=$1 TEMPDIR=/tmp # inizialize variables LISTENERmode=0 # if 0 listener in separate window with xterm # if 1 listener without separate window EXIT=1 STATE=1 if [ $LISTENERmode -eq 1 ] then PIDlistener2="" fi PIDrecorder2="" while [ $EXIT -eq 1 ] do case $STATE in 0) kdialog --title "RadioRecorder" --yesno "Do you want to exit the program?" EXIT=$? if [ $EXIT -eq 1 ] then STATE=1 fi ;; 1) # ask radio stream URL STREAM=`kdialog --title "RadioRecorder" --inputbox "Insert the radio stream url" $1 ` STREAMBUTTON=$? if [ $STREAMBUTTON -eq 1 ] then STATE=0 else # start mplayer in background to listen to the radio only if the ok button has been selected else exit if [ $LISTENERmode -eq 1 ] then mplayer -vo null -vc null -cache 512 $STREAM& else xterm -e mplayer -vo null -vc null -cache 512 $STREAM& fi PIDlistener=$! # listener PID if [ $LISTENERmode -eq 1 ] then while [ -z $PIDlistener2 ] do #repeat the check till PIDlistener2 is correctly detected PIDlistener2=`ps -ef| awk '$3 == '$PIDlistener' { print $2 }'` done fi STATE=2 fi ;; 2) # select action to do ACTION=`kdialog --title "RadioRecorder" --menu "Select an action:" 1 "Change URL" 2 "Record stream"` ACTIONBUTTON=$? if [ $ACTIONBUTTON -eq 1 ] then ACTION=$ACTIONBUTTON # if cancel is selected go back to url dialog fi if [ $ACTION -eq 1 ] then #if Change URL or Cancel has been selected kill listener and go back to URL page #kill listener processes if [ $LISTENERmode -eq 1 ] then kill -9 $PIDlistener2 fi kill -9 $PIDlistener # reinitialize PID variables PIDlistener="" if [ $LISTENERmode -eq 1 ] then PIDlistener2="" fi STATE=1 else STATE=3 fi ;; 3) # ask destination directory -- default home DIR=$HOME DIR=`kdialog --title "RadioRecorder - Select destination directory" --getexistingdirectory $DIR` #default destination directory is the user home DIRBUTTON=$? if [ $DIRBUTTON -eq 1 ] then #if Cancel has been selected go back to action page STATE=2 else STATE=4 fi ;; 4) # ask file name at which will be added the date and eventually record stream FILENAME="radio" FILENAME=`kdialog --title "RadioRecorder - Save as" --inputbox "Insert the file name (date will be automatically added)" $FILENAME` FILENAMEBUTTON=$? if [ $FILENAMEBUTTON -eq 1 ] then #if Cancel has been selected go back to action page STATE=3 else #capture stream DATE=`date +%Y_%m_%d_%H%M%S` TEMPFILE=$TEMPDIR/$FILENAME-$DATE FILE=$DIR/$FILENAME-$DATE mkfifo $TEMPFILE.wav lame $TEMPFILE.wav $FILE.mp3>/dev/null& PIDconverter=$! #converter PIN mplayer -cache 512 -vo null -vc null -ao pcm:fast:file="$TEMPFILE.wav" $STREAM>/dev/null& PIDrecorder=$! #recorder PIN while [ -z $PIDrecorder2 ] do #repeat the check till PIDrecorder2 is correctly detected PIDrecorder2=`ps -ef| awk '$3 == '$PIDrecorder' { print $2 }'` done kdialog --msgbox "Press OK button to stop recording" #stop recording #kill converter kill -9 $PIDconverter #kill recorder processes kill -9 $PIDrecorder2 kill -9 $PIDrecorder # reinitialize PID variables PIDconverter="" PIDrecorder="" PIDrecorder2="" #removing temporary file rm $TEMPFILE.wav #go back to action page STATE=2 fi ;; esac done kdialog --title "RadioRecorder" --msgbox "Thank you for using radioRecorder" echo "Bye Bye" exit
__________________
ASUS N752VX Arch AMD64 + KDE Ultima modifica di xwang : 14-08-2008 alle 12:55. Motivo: 2008-08-14: New script version |
![]() |
![]() |
![]() |
#2 |
Moderatore
Iscritto dal: Feb 2003
Città: Anagni/Firenze
Messaggi: 9133
|
Non mi sembra niente male...
![]() Complimenti!!!! ![]() ![]() ![]() Non mi esprimo sulla parte "codice" perché non ne sono in grado... Pensi di fare anche un'interfaccia GTK? P.S. Tralasciando il discorso "pesantezza" hai pensato magari ad usare Java come GUI in modo che sia portabile? Un saluto a tutti.. masand
__________________
Regole Sezione Linux - [Ubuntu] HWupgrade Clan - Installare Ubuntu 13.10 64bit su Asus N56JR |
![]() |
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: Oct 2003
Messaggi: 2987
|
Quote:
Per il momento vorrei fare in modo che lo script esca correttamente anche premendo ctrl-c e vorrei vedere se si può evitare di chiamare xterm in modo che non mi debba preoccupare del caso in cui l'utente chiuda le finestre di xterm. Xwang PS se qualcuno ha voglia di trasformarlo in un'applicazione java, ovviamente è liberissimo di farlo
__________________
ASUS N752VX Arch AMD64 + KDE |
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Sep 2004
Città: Padova
Messaggi: 11757
|
fiko, non appena ho tempo ci gioco.
__________________
mac user = hai soldi da buttare; linux user = hai tempo da buttare; windows user = hai soldi e tempo da buttare ![]() |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Oct 2003
Messaggi: 2987
|
Qualcuno sa come ottenere la lista dei pid dei sottoprocessi conoscendo il pid del genitore?
Potrei eliminare xterm Xwang
__________________
ASUS N752VX Arch AMD64 + KDE |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Oct 2003
Messaggi: 2987
|
Ho fatto delle modifiche eliminando xterm.
Manca ancora di detectare il ctrl-C e se possibile di prevedere la pausa della registrazione (ma non saprei proprio come fare ... idee?) Xwang PS che dite lo pubblico? KDEdev o direttamente in sourceforge?
__________________
ASUS N752VX Arch AMD64 + KDE Ultima modifica di xwang : 14-08-2008 alle 13:20. Motivo: Eliminato il codice - L'ultima versione sarà sempre presente nel primo post |
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Oct 2003
Messaggi: 2987
|
Pensavo che sarebbe bello poter memorizzare le URL inserite dal'utente e riproporle in un capo tipo tendina (da cui poter eventualmente inserire anche nuove url).
Come faccio a gestire questi dati? Devo usare un file esterno che devo parsare, giusto? Qualcuno mi può aiutare? Xwang PS metto nel primo post la versione attuale
__________________
ASUS N752VX Arch AMD64 + KDE |
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Sep 2004
Città: Padova
Messaggi: 11757
|
per favore, ogni tanto quando aggiorni lo uppi 'sto tread, mi interessa molto, come utente... non so programmare...
fra qualche giono di ritorno dalle ferie lo proverò, intanto grazie.
__________________
mac user = hai soldi da buttare; linux user = hai tempo da buttare; windows user = hai soldi e tempo da buttare ![]() |
![]() |
![]() |
![]() |
#9 | |
Moderatore
Iscritto dal: Feb 2003
Città: Anagni/Firenze
Messaggi: 9133
|
Quote:
il tuo progetto non è niente male... Potresti pubblicarlo su www.kde-apps.org, se non lo conosci, è organizzato grosso modo come un forum, dove i thread sono i programmi proposti e ognuno poi posta le sue impressioni e/o eventuali suggerimenti. Potresti impostare il tuo post mettendo l'elenco delle caratteristiche e una lista delle cose che vorresti implementare... vedrai che troverai sicuramente chi ti potrà aiutare. L'unico limite, se limite lo vogliamo chiamare, è di usare obbligatoriamente la lingua inglese. Un saluto a tutti... masand
__________________
Regole Sezione Linux - [Ubuntu] HWupgrade Clan - Installare Ubuntu 13.10 64bit su Asus N56JR |
|
![]() |
![]() |
![]() |
#10 | |
Senior Member
Iscritto dal: Oct 2003
Messaggi: 2987
|
Quote:
Tuttavia, poichè ho scoperto che c'è in gnome un programma simile a kdialog, lo vorrei trasformare in uno script indipendente dal window manager utilizzato, o meglio, che capisca se è in esecuzione gnome o kde e si adegui. In quest'ottica, forse è preferibile metterlo in un sito "neutrale" come può essere sourceforge. Sei d'accordo? Il tutto a ferie finite perchè, a parte lo slancio iniziale, tutte queste aggiunte e abbellimenti, le farò con calme nei ritagli di tempo del dopolavoro. Xwang
__________________
ASUS N752VX Arch AMD64 + KDE Ultima modifica di xwang : 14-08-2008 alle 13:21. |
|
![]() |
![]() |
![]() |
#11 | |
Moderatore
Iscritto dal: Feb 2003
Città: Anagni/Firenze
Messaggi: 9133
|
Quote:
![]() Hai pensato di postare il tuo lavoro anche nella sezione "Programmazione" di questo forum? In bocca al lupo per il tuo progetto ![]() Un saluto a tutti... masand
__________________
Regole Sezione Linux - [Ubuntu] HWupgrade Clan - Installare Ubuntu 13.10 64bit su Asus N56JR |
|
![]() |
![]() |
![]() |
#12 | |
Senior Member
Iscritto dal: Oct 2003
Messaggi: 2987
|
Quote:
Non l'ho postata in programmazione perchè temevo che potesse essere considerata una forma di cross-posting. Inoltre ho pensato che trattandosi di script bash, gli utenti linux fossero il "pubblico" migliore (oltre che i fruitori del programma che di certo non ho intenzione di portare su win). Xwang
__________________
ASUS N752VX Arch AMD64 + KDE |
|
![]() |
![]() |
![]() |
#13 | |
Moderatore
Iscritto dal: Feb 2003
Città: Anagni/Firenze
Messaggi: 9133
|
Quote:
![]() E comunque non la vedo come una forma di cross posting in realtà, in fin dei cnti qui cerchi pareri prettamente "linuxiani" ![]() ![]() Un saluto a tutti... masand
__________________
Regole Sezione Linux - [Ubuntu] HWupgrade Clan - Installare Ubuntu 13.10 64bit su Asus N56JR |
|
![]() |
![]() |
![]() |
#14 |
Senior Member
Iscritto dal: Jan 2008
Messaggi: 424
|
Per le gtk credo tu possa usare buc http://buc.intilinux.com/wiki/index....ina_principale
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:01.