pdf2mp3

Stellt hier eure Projekte vor.
Internetseiten, Skripte, und alles andere bzgl. Python.
Antworten
busfahrer
User
Beiträge: 111
Registriert: Donnerstag 9. Oktober 2008, 17:42

Hallo
ausgehend von diesem Thread http://forum.ubuntuusers.de/topic/pdf-d ... n-pdf2mp3/ im UU-Forum und diesem http://media.cdn.ubuntu-de.org/forum/at ... 17/pdf2mp3 original Skript, habe ich mich mal versucht das Skript zu überarbeiten.Habe diverse os.popen und os.system aufrufe durch subprocess bzw. durch Python Bordmittel ersetzt.Würde jetzt gerne ein oder zwei Meinungen dazu hören ob man das Skript so auf die Menschheit los lassen kann.

Gruß....busfahrer

Hier der Link zum überarbeiteten Skript -> http://www.python-forum.de/pastebin.php?mode=view&s=88
Alles wird gut ;-)
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Ich würde ein wenig zusammenstampfen:

Code: Alles auswählen

def main():
    ...
    result = convert(options.file, options.output)
    if result is not None:
        print result
        return 2


def convert(filename_inp, filename_out):
    if not os.path.isfile(filename_inp):
        return '*** input file %s does not exist ***' % filename_inp

    extension_out = os.path.splitext(filename_out)[1]
    if extension_out not in('.wav', '.mp3'):
        return 'please decide whether you want wav or mp3 format by \
               typing -o filename.wav or -o filename.mp3'

    extension = os.path.splitext(filename_inp)[1]

    if extension not in('.dat', '.txt', '.pdf')
        return '*** input file does not have extension (.txt, .dat, .pdf) ***'

    if extension == '.pdf':
        print 'converting pdf file: %s to ASCII' % filename_inp
        pdf_convert_to_ascii(filename_inp)
        filename_inp = "%s.txt" % filename_inp[:-len(extension)]

    convert_to_wav(filename_inp, filename_out, options.voice)
    if extension_out == '.mp3':
        convert_wav_2_mp3(filename_out)
Vielleicht noch hier und dort ein paar Konstanten.

Natürlich alles ungetestet.
Das Leben ist wie ein Tennisball.
busfahrer
User
Beiträge: 111
Registriert: Donnerstag 9. Oktober 2008, 17:42

Hallo
vielen Dank @EyDu für deine Anregungen.Habe mal versucht sie umzusetzen und das ist dabei raus gekommen.Wäre nett wenn da noch mal jemand drüber schaut.
Skript -> http://www.python-forum.de/pastebin.php?mode=view&s=89

Gruß...busfahrer
Alles wird gut ;-)
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Man könnte statt den "return"s in "convert" auch Ausnahmen werfen.
Das Leben ist wie ein Tennisball.
busfahrer
User
Beiträge: 111
Registriert: Donnerstag 9. Oktober 2008, 17:42

EyDu hat geschrieben:Man könnte statt den "return"s in "convert" auch Ausnahmen werfen.
Das Spiel mit den Exceptions bereitet mit noch große Schwierigkeiten :oops: Ansonsten könnte man das Skript so auf die Menschheit los lasse?

Gruß...busfahrer

P.s.: Ich wäre dir natürlich auch nicht böse, wenn du mir für so eine Ausnahme ein kleines Beispiel geben würdest :wink:
Alles wird gut ;-)
Benutzeravatar
DaMutz
User
Beiträge: 202
Registriert: Freitag 31. Oktober 2008, 17:25

ohne das ich dein Skript im Detail angesehen habe, hätte ich noch eine kleine Anpassung im folgenden Codeteil:

Code: Alles auswählen

def convert_wav_2_mp3(filename_out):
    call(['lame', '-f', filename_out[:-4] + '.wav', filename_out[:-4] + '.mp3'])
    os.remove(filename_out[:-4] + '.wav')
was ist wenn lame nicht installiert ist, oder die Konvertierung fehlschlägt. Dann wird die .wav Datei einfach gelöscht. Nicht unbedingt ein Benutzerfreundliches verhalten, imho.
busfahrer
User
Beiträge: 111
Registriert: Donnerstag 9. Oktober 2008, 17:42

Hallo
das ``lame`` nicht installiert ist sollte so Gott will nicht passieren, da die Abhängigkeiten des Skripts im Skript selbst erwähnt werden.

Code: Alles auswählen

# LIST OF PACKAGES NEEDED:
# you need to install the following packages:
# sudo apt-get install python poppler-utils festival festvox-rablpc16k
# lame espeak 
Ansonsten hab ich diesen Teil jetzt so geändert

Code: Alles auswählen

def convert_wav_2_mp3(filename_out):
    retcode = call(['lame', '-f', filename_out[:-4] + '.wav',
                    filename_out[:-4] + '.mp3'])
    if retcode == 0:
        print 'Datei %s wurde erfolgreich erstellt'% filename_out
        os.remove(filename_out[:-4] + '.wav')
Gruß...busfahrer
Alles wird gut ;-)
Antworten