pubblicato Lunedì 29 Giugno del 2009 alle 19:49.

Un po' di giorni fa' ero scarsamente disposto allo sforzo mentale e apatico a qualunque stimolo, senza alcuna voglia di aprire un terminale e ricordare il comando da lanciare per normalizzare un paio di tracce audio.

Poi penso che è arrivato il momento anche per l'utility mp3gain di essere inserita in uno script codato in python, un g-script, o gnome-script, o nautilus-script, insomma come vi pare!

Data la mia svogliatezza, la mente si rifiutava di concentrarsi. Dopo qualche minuto di tentennamento, piano piano riesco a stendere una bozza iniziale. Passano altri minuti e la bozza iniziale inizia a prendere la forma finale, fino a quando non inizia a fungere. Inizio a sistemare i dettagli e voilà lo script sembra essere terminato. Prende vita. È l'inizio della sua vita.

Purtroppo solo ad oggi ricevo il permesso dalla mia mente eccessivamente stressata di pubblicarlo. Ergo, non ho ricontrollato il codice, anche se brevissimo, sono di nuovo in stand by. Good night, good luck! [confused]

Lo battezzato GMP3gain: #! /usr/bin/env python # -*- coding: utf-8 -*- # # AUTHOR: Maurizio di NuvoleSparse # # License: GNU General Public version 2 or any later version. # This program comes with ABSOLUTELY NO WARRANTY; for details # see the COPYING file or visit "http://www.gnu.org/licenses/gpl.html". # This is free software, and you are welcome to redistribute it under # certain conditions. See the GPL license for details. # # Dependence: # mp3gain # python # zenity import os from sys import argv, exit from re import search, sub from commands import getstatusoutput if len(argv[1:]) == 0: os.system('zenity --title="Attenzione - gmp3gain" --error\ --text="Seleziona almeno un file."') exit(1) metodo = getstatusoutput('zenity --list --radiolist\ --width=450 --height=200 --title="gimageconvert"\ --text="Seleziona il metodo per normalizzare."\ --column=Selez. --column=metodo --column=descrizione\ false singoli "(applica automaticamente a tutti i file)"\ false album "(applica un unico livello a tutti i file)"\ false undo "(annulla la normalizzazione)"') if metodo[0] == 0 and metodo[1] == '': os.system('zenity --title="gmp3gain" --error\ --title="Attenzione" --text="Seleziona almeno un metodo."') count3 = count3 + 1 if count3 == 3: os.system('zenity --title="Errore - \ gmp3gain" --error --text="Odio girare in tondo! (Grrrrr)\nAddio! :-["') exit(1) elif metodo[0] == 256: exit(0) if metodo[1] == 'singoli': flags = '-r -k -p -q' elif metodo[1] == 'album': flags = '-a -k -p -q' elif metodo[1] == 'undo': flags = '-u -q' count = 1 while count < len(argv): if search(r"\.[mM][pP]3$", argv[count]): os.system("mp3gain "+flags+" \ '"+sub('\'', '\'\\\'\'', argv[count])+"' 2>>/tmp/gmp3gain.log") #QUOTING DEGLI APICI SINGOLI else: os.system('echo -e "Attenzione: \''+argv[count]+\ '\' non e\' un mp3." >>/tmp/gmp3gain.log') count = count + 1 if os.path.isfile("/tmp/gmp3gain.log") and \ os.path.getsize("/tmp/gmp3gain.log") != 0: os.system("cat /tmp/gmp3gain.log | zenity \ --title='Errore - gmp3gain' --text-info") os.remove("/tmp/gmp3gain.log") else: os.system('zenity --title="gmp3gain" --info\ --text="Lo script è terminato con successo."') exit(0)

Attenzione: gli script sono pubblicati SOLO a scopo dimostrativo (didattico) e ASSOLUTAMENTE SENZA GARANZIA: l'autore nega qualsiasi responsabilità di danni riscontrabili a seguito del loro uso (mancato funzionamento, errori ed eventuale perdita di dati, etc). Gli script sono pubblicati con la licenza d'uso GNU General Public License, peraltro ottenibile al seguente link GNU/GPL.

Aggiornamento del 07 Agosto 2009
Nei giorni scorsi ho scovato una piccola-grande bega nei codice dello script in oggetto, ma non in diretto riferimento al codice python ma alla bash. La problematica si riferisce al quoting in singoli apici di nomi di file contententi la singola virgoletta. Il problema è stato risolto usando la backslash davanti alla singola virgoletta dopo averla estratta dal quoting, così facendo racchiudiamo solo, si fa' per dire, il resto dei caratteri tra i singoli apici. Ad esempio, il procedimento: “l” apostrofo “oggetto”, quindi “l'oggetto”, verrebbe quotato come 'l'\''oggetto'. Spero di essere stato abbastanza chiaro.


powered by FreeFind
Il sito è una creazione di Maurizio... ed è pubblicato sotto una Licenza CC; esso non viene aggiornato
in maniera periodica, pertanto non può essere considerato un prodotto editoriale ai sensi della legge n. 62 del 7.03.2001.