Het kon beter, maar heb het maar snel ineen geflanst

het werkt in ieder geval wel.
Maak eerst mp3gain-gui map aan in je home folder:
mkdir ~/mp3gain-guigedit ~/mp3gain-gui/mp3gain-guidit in lege tekstbestand plakken:
#!/usr/bin/env python
# simple mp3gain GUI frontend
# for normalizing mp3 files
#
# written by Wesley S. (profox@ubuntu-nl.org)
#
# released under GPLv2
# feel free to use in any way
import sys
try:
import os
import commands
import string
import time
from frmmain import frmMain
from frmend import frmEnd
from qt import *
except:
print "You miss some files. Exiting."
sys.exit(1)
class RunProgram(QApplication):
def __init__(self, args):
# Set up GUI
QApplication.__init__(self,args)
self.maindialog = MainWindow(None)
self.setMainWidget(self.maindialog)
self.maindialog.show()
self.timer = QTimer(self)
self.connect(self.timer, SIGNAL('timeout()'), self.StartLooping)
self.timer.start(0,1)
self.exec_loop()
def StartLooping(self):
#global cantopenfiles
#global unchangedfiles
#global normalizedfiles
self.cantopenfiles=""
self.unchangedfiles=""
self.normalizedfiles=""
### Loop through arguments
for arg in range(len(sys.argv)):
if arg != 0:
self.maindialog.labelProgress.setText("processing file " + str(arg) + " of " + str(len(sys.argv)-1))
self.maindialog.labelMP3.setText(sys.argv[arg])
self.maindialog.progressBar.setProgress((100/(len(sys.argv)-1))*(arg-1))
self.processEvents()
if sys.argv[arg][-4:].lower() == ".mp3":
self.normalize(sys.argv[arg])
## Set progress to 100%
self.maindialog.progressBar.setProgress(100)
self.enddialog = EndWindow(None,self)
self.enddialog.show()
self.exec_loop()
# Procedure to normalize mp3s
def normalize(self,mp3):
out = commands.getoutput("mp3gain -r -c '" + mp3 + "'")
tempvar = out.find("Applying mp3 gain change")
if out.find("Can't open") > -1:
self.cantopenfiles = self.cantopenfiles + "\n" + mp3
elif out.find("No changes to") > -1:
self.unchangedfiles = self.unchangedfiles + "\n" + mp3
elif tempvar > -1:
self.normalizedfiles = self.normalizedfiles + "\n" + mp3 + "\tGain change: " + out[tempvar+28:out.find(" ",tempvar+28)]
class MainWindow(frmMain):
def __init__(self,parent):
# Run the parent constructor and connect the slots to methods
frmMain.__init__(self,parent)
# self._connectSlots()
self.labelProgress.setText("please wait...")
self.labelMP3.setText("...")
#self.setpar=parent
# def _connectSlots(self):
# # Connect method to a SIGNAL the GUI emits
# self.connect(self.btnCancel,SIGNAL("clicked()"),self._slotCancel)
# def _slotCancel(self):
# print "Cancelled."
# sys.exit() // or sys.exit(1)
class EndWindow(frmEnd,object):
def __init__(self,parent,progvars):
# Run the parent constructor and connect the slots to methods
frmEnd.__init__(self,parent)
self._connectSlots()
self.progvars=progvars
if self.progvars.normalizedfiles == "":
txtnormal = "No files were normalized!\n\n"
else:
txtnormal = "The following files have been normalized:" + self.progvars.normalizedfiles + "\n\n"
if self.progvars.cantopenfiles == "":
txtcantopen = ""
else:
txtcantopen = "The following files couldn't be opened for reading:" + self.progvars.cantopenfiles + "\n\n"
if self.progvars.unchangedfiles == "":
txtunchanged = ""
else:
txtunchanged = "The following files didn't need normalization:" + self.progvars.unchangedfiles + "\n\n"
self.txtResult.setText("Normalize MP3 files - powered by mp3gain\nFrontend written by Wesley S.\nprofox@ubuntu-nl.org\n\n" + txtnormal + txtunchanged + txtcantopen)
def _connectSlots(self):
# Connect method to a SIGNAL the GUI emits
self.connect(self.btnOk,SIGNAL("clicked()"),self._slotOkay)
def _slotOkay(self):
print "End."
sys.exit(1)
# Program starts here
if __name__ == "__main__":
app = RunProgram(sys.argv)
gedit ~/mp3gain-gui/frmmain.pydit in lege tekstbestand plakken:
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'frmmain.ui'
#
# Created: zo sep 10 17:10:15 2006
# by: The PyQt User Interface Compiler (pyuic) 3.15.1
#
# WARNING! All changes made in this file will be lost!
from qt import *
class frmMain(QDialog):
def __init__(self,parent = None,name = None,modal = 0,fl = 0):
QDialog.__init__(self,parent,name,modal,fl)
if not name:
self.setName("frmMain")
self.setSizePolicy(QSizePolicy(QSizePolicy.Fixed,QSizePolicy.Fixed,0,0,self.sizePolicy().hasHeightForWidth()))
self.setMinimumSize(QSize(310,90))
self.textLabel2 = QLabel(self,"textLabel2")
self.textLabel2.setGeometry(QRect(10,10,77,20))
self.labelMP3 = QLabel(self,"labelMP3")
self.labelMP3.setGeometry(QRect(90,10,210,20))
labelMP3_font = QFont(self.labelMP3.font())
labelMP3_font.setBold(1)
self.labelMP3.setFont(labelMP3_font)
self.labelProgress = QLabel(self,"labelProgress")
self.labelProgress.setGeometry(QRect(140,60,161,20))
self.labelProgress.setPaletteForegroundColor(QColor(103,103,103))
self.labelProgress.setAlignment(QLabel.AlignVCenter | QLabel.AlignRight)
self.btnCancel = QPushButton(self,"btnCancel")
self.btnCancel.setEnabled(0)
self.btnCancel.setGeometry(QRect(10,60,81,21))
self.progressBar = QProgressBar(self,"progressBar")
self.progressBar.setGeometry(QRect(10,30,291,23))
self.languageChange()
self.resize(QSize(310,90).expandedTo(self.minimumSizeHint()))
self.clearWState(Qt.WState_Polished)
def languageChange(self):
self.setCaption(self.__tr("Normalize MP3 files"))
self.textLabel2.setText(self.__tr("Normalizing:"))
self.labelMP3.setText(self.__tr("mp3file.mp3"))
self.labelProgress.setText(self.__tr("processing file 1 of 1"))
self.btnCancel.setText(self.__tr("C&ancel"))
self.btnCancel.setAccel(self.__tr("Alt+A"))
def Cancel(self):
print "frmMain.Cancel(): Not implemented yet"
def __tr(self,s,c = None):
return qApp.translate("frmMain",s,c)
gedit ~/mp3gain-gui/frmend.pydit in lege tekstbestand plakken:
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'frmend.ui'
#
# Created: zo sep 10 17:12:07 2006
# by: The PyQt User Interface Compiler (pyuic) 3.15.1
#
# WARNING! All changes made in this file will be lost!
from qt import *
class frmEnd(QDialog):
def __init__(self,parent = None,name = None,modal = 0,fl = 0):
QDialog.__init__(self,parent,name,modal,fl)
if not name:
self.setName("frmEnd")
self.setModal(1)
self.textLabel4 = QLabel(self,"textLabel4")
self.textLabel4.setGeometry(QRect(0,0,111,21))
textLabel4_font = QFont(self.textLabel4.font())
textLabel4_font.setBold(1)
textLabel4_font.setItalic(1)
self.textLabel4.setFont(textLabel4_font)
self.btnOk = QPushButton(self,"btnOk")
self.btnOk.setGeometry(QRect(250,230,61,21))
self.txtResult = QTextEdit(self,"txtResult")
self.txtResult.setEnabled(1)
self.txtResult.setGeometry(QRect(0,21,321,200))
self.txtResult.setAutoFormatting(QTextEdit.AutoAll)
self.languageChange()
self.resize(QSize(322,258).expandedTo(self.minimumSizeHint()))
self.clearWState(Qt.WState_Polished)
def languageChange(self):
self.setCaption(self.__tr("Results"))
self.textLabel4.setText(self.__tr("Results:"))
self.btnOk.setText(self.__tr("&Close"))
self.btnOk.setAccel(self.__tr("Alt+C"))
def __tr(self,s,c = None):
return qApp.translate("frmEnd",s,c)
Hoe gebruiken?* met nautilustyp in de terminal: nautilus ~/.gnome2/nautilus-scripts/
Rechtermuisknop op een lege plek in nautilus (file browser) en kies voor "Document aanmaken" -> "Nieuw bestand"
Op het nieuwe bestand klik je dan nogmaals met de rechtermuisknop en je opent het bestand in een tekstbewerker/teksteditor zoals gedit
dit in lege tekstbestand plakken:
#!/bin/bash
# simple mp3gain nautilus script
# for normalizing mp3 files
#
# written by Wesley S. (profox@ubuntu-nl.org)
#
# released under GPLv2
# feel free to use in any way
#
# Requires: mp3gain, mp3gain-gui (python, qt)
~/mp3gain-gui/mp3gain-gui "$@"
Opslaan onder de naam "MP3Normalizer"
En je kan vanaf nu rechterklikken op 1 of meerdere mp3 bestanden en kiezen voor: Scripts -> MP3Normalizer (niet-mp3 files worden automatisch genegeerd)
Nu nog de scripts uitvoerbaar maken:
Rechtermuisknop op de bestanden mp3gain-gui en MP3Normalizer -> eigenschappen -> rechten -> overal een vinkje zetten bij uitvoeren
heb je dat gedaan?
Dat was ik vergeten erbij te zetten -- nu aangepast

------------
dit laatste kan ook via terminal, maar terminal is ouderwets
chmod +x ~/.gnome2/nautilus-scripts/MP3Normalizer ~/mp3gain-gui/mp3gain-guiIk hoop dat jullie er wat aan hebben... Het is vrij basic en het is geschreven in Python/Qt -- dit is trouwens de allereerste keer dat ik iets in Qt probeer. Veel mensen zullen liever een Gtk versie hebben gezien, maar persoonlijk vind ik Qt veel beter om in te programmeren... Als ik zin heb maak ik ook wel een Gtk versie. Er is niet zo erg veel specifieke Qt code.
Edit: Eerst natuurlijk die map aanmaken

thx bartek, was het vergeten in de "howto" te zetten