Anzeige:
Ergebnis 1 bis 5 von 5

Thema: perl newbie sucht tutor (glaub ich)?

  1. #1
    Peter der Große
    Gast

    perl newbie sucht tutor (glaub ich)?

    hi

    ich hab mir in den letzten drei tagen, das buch einführung in perl reingezogen.
    ist echt nicht schlecht, aber ich hab oft keine ahnung was ich da gerade mache?
    Ja, mir wird selbst angst dabei!

    darum, hab ich mir gedacht, frag mal hier im forum.

    ich will, so zur übung, ein script schreiben, dass audio-cd's in mp3's umwandelt.
    natürlich mit einer cddb abfrage, und automatischer playlisterstellung.

    also das ist mein erstes perl-script, bitte bei der kritik berücksichtigen

    Code:
    #!/usr/bin/perl -w
    
    #------------------------------------------------------------------------------
    #Module
    #------------------------------------------------------------------------------
    
    #use Net::CDDB; # Kann das kack modul leider nicht finden ist aber laut apt-get istalliert
    
    #-------------------------------------------------------------------------------
    # Variablen
    #-------------------------------------------------------------------------------
    
    # Arbeitsverzeichniss des Script's
    #
    $scrdir="/mp3/script" ;
    
    #-------------------------------------------------------------------------------
    # Subroutinen
    #-------------------------------------------------------------------------------
    
    #-------------------------------------------------------------------------------
    # Die eingelegte CD wird über CDDB abgefragt
    #
    
    sub getcddb {
    
    if (system 'isdnctrl status ippp0 > /dev/null') {
        print "Sie sind nicht mit dem Internet verbunden! Wählen Sie sich bitte ein.\n";
        }
    
        else {
       
        if (system `dagrab -d /dev/cdrom -H www.freedb.org -P 888 -Ci > $scrdir/cddb.tmp`) { 
    
    # Macht man das so? eine tmp datei?
    
            print "Die CDDB-Anfrage war erfolgreich!\n";
            } 
        }
    }
    
    
    sub getcddbint { 
    
    # cddb abfrage mit perl modul
    
    if (system 'isdnctrl status ippp0 > /dev/null') {
        print "Sie sind nicht mit dem Internet verbunden! Wählen Sie sich bitte ein.\n";
        }
    
        else {
    
        my $disc_data=`discid`;
        chomp ($disc_data);
    
        my ($cat,$disc_id,$artist,$title) = cddb_query($disc_data);
    
        print "$cat\n";
        print "$disc_id\n";
        print "$artist\n";
        print "$title\n";
    
       my ($title,@tracks) = cddb_read("$cat $disc_id"); 
       my  $num_tracks = $#tracks + 1;
    
       print "$title\n";
       print "$num_tracks";
    
       foreach (@tracks) {
       	$num++;
    	print "$num. $_\n";
       }
    }
    
    #------------------------------------------------------------------------------
    # Das Album und der Interpret werden gespeichert
    #
    
    sub cdinfo {
    
    open CDDBTMP, "$scrdir/cddb.tmp"
        or die "Huch! Wo ist denn die Datei hingekommen?\n";
    
    while (<CDDBTMP>) {
        if ( /(DISK: )\s(.*)\s\/\s(.*)/ ) {
        $artist="$2";
        $album="$3";
        }
      }
    close CDDBTMP;
    }
    
    #------------------------------------------------------------------------------
    # Die Titel werden in ein Array gespeichert
    #
    
    # sieht auch irgendwie seltsam aus, funktioniert aber!
    
    sub titles {
    
    open CDDBTMP, "$scrdir/cddb.tmp"
        or die "Huch! Wo ist denn die Datei hingekommen?\n";
    
    while (<CDDBTMP>) {
        if ( /\s*(\d*)\s*\d*\s*\d*\s\w*\s*(\d*:\d*:\d*)\s*\d*\s*\d*\s*(.*)/ ) {
        push @tracks, $1;
        push @times, $2;
        push @titles, $3;
    #    print "$1 - $2 - $3\n";
        }
      }
    close CDDBTMP;
    }
    
    #------------------------------------------------------------------------------
    # CD auf Festplatte rippen
    #
    
    sub cdrip {
        print "Rippe CD\n";
        if (system `dagrab -a &> /dev/null `) {
        print "Rippen beendet\n";
        }
        else {
        print "Rippen fehlgeschlagen\n";
        }
    }
    
    #------------------------------------------------------------------------------
    # Wav => MP3
    # 
    
    sub wav2mp3 {
    
        @wav = <$scrdir/*.wav>;
        foreach (@wav) {
         $titles1 = pop @titles;
         $tracks1 = pop @tracks;
         $opt="-b 192 -m s -h --tt $titles1 --tl $album --ta $artist -tn $tracks1";
    
    # wo soll ich die variablen abspeichern?
    
         print "$opt\n";
    
         system "lame", "$opt", "$_";
      }
    }
    
    #------------------------------------------------------------------------------
    # Test Subroutine
    #
    
    sub testing {
    
    #print "$artist\n";
    #print "$album\n";
    
    #foreach (@tracks) {
    #    print "$_\n";
    #    }
    foreach (@wav) {
        print "$_\n";
        }
    
    }
    
    #------------------------------------------------------------------------------
    # Aufrufen der Subroutinen
    #------------------------------------------------------------------------------
    
    #&getcddb;
    &getdccbint;
    #print "$?\n";
    #&cdinfo;
    #&titles;
    #&wav2mp3;
    #&testing;
    also, wenn jemand so freundlich wäre und jetzt kritik an der syntax
    und den anderen dingen nehmen würde, wäre dass schon mal toll!

    benutzt man so subroutinen?
    soll ich use strict benuzen?

    ich hab das script auch gleich mal angehängt, vielleicht findet sich ja einer der
    es ein bischen modifiziert.

    sers

    peter der große
    Geändert von Peter der Große (25-01-2004 um 13:53 Uhr)

  2. #2
    Registrierter Benutzer
    Registriert seit
    30.12.2001
    Beiträge
    444
    Da gibt's schon Ripper-Script in perl: heisst ripit.pl oder so ähnlich.

    Tobias

  3. #3
    Peter der Große
    Gast
    hi,

    @fork
    bei mir ist der weg das ziel!

    würde mir aber schon mal gern das script ansehen.
    wo?

    mfg
    p-d-g

  4. #4
    Registrierter Benutzer
    Registriert seit
    25.12.1999
    Ort
    Stuttgart
    Beiträge
    259
    Original geschrieben von Peter der Große
    würde mir aber schon mal gern das script ansehen.
    wo?
    http://freshmeat.net/projects/ripit

    Gruß micha
    IRC: irc.euirc.net #tux

  5. #5
    Peter der Große
    Gast
    wow!

    vielleicht sollte ich mit etwas einfacherem anfangen! ja, wird wohl besser sein.
    da gibts noch einiges, dass ich zu lernen hab (module, IO, etc)

    vielen dank schonmal!
    kennt jemand ne adresse mit ein haufen perl scripts zum abgucken?

    sers
    peter

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •