Audiolänge ...
Vielleicht kann ja einer von Euch auch etwas damit anfangen. Das Skript berechnet die Summe der Längen aller Audiodateien in einem Verzeichnis, dazu muss der absolute Pfad angegeben werden. Zusätzlich zu Perl muss noch das Schweizer Taschenmesser der Audiobearbeitung, SoX, installiert sein. Es gibt kaum ein Audioformat, dass SoX nicht versteht. Wenn sox, oder vielmehr das Tool soxi im Pfad ist, funktioniert das Skript auch unter allen gängigen Betriebssystemen, Windows inklusive.
Es ist für den Eigenbedarf entstanden und macht keinerlei Prüfungen oder Fehlermeldungen.
Es ist für den Eigenbedarf entstanden und macht keinerlei Prüfungen oder Fehlermeldungen.
#!/usr/bin/perl -w
use strict;
use File::Find;
my $playtimesec = 0;
my $playtimetme = "";
my @directories = @ARGV;
sub audiolength {
my $len = `soxi -D "$File::Find::name" 2>/dev/null`;
$playtimesec += $len if ((defined $len) && ($len ne ""));
}
sub seconds2time( $ ) {
my ($ss) = @_;
my ($hh,$mm);
$mm = int($ss / 60);
$ss = int($ss) - ($mm * 60);
$ss = "0${ss}" if (length($ss) == 1);
$hh = int($mm / 60);
$mm = $mm - ($hh * 60);
$mm = "0${mm}" if (length($mm) == 1);
return "$hh:$mm:$ss";
}
find(\&audiolength, @directories);
$playtimetme = seconds2time($playtimesec);
print "$playtimetme";
use strict;
use File::Find;
my $playtimesec = 0;
my $playtimetme = "";
my @directories = @ARGV;
sub audiolength {
my $len = `soxi -D "$File::Find::name" 2>/dev/null`;
$playtimesec += $len if ((defined $len) && ($len ne ""));
}
sub seconds2time( $ ) {
my ($ss) = @_;
my ($hh,$mm);
$mm = int($ss / 60);
$ss = int($ss) - ($mm * 60);
$ss = "0${ss}" if (length($ss) == 1);
$hh = int($mm / 60);
$mm = $mm - ($hh * 60);
$mm = "0${mm}" if (length($mm) == 1);
return "$hh:$mm:$ss";
}
find(\&audiolength, @directories);
$playtimetme = seconds2time($playtimesec);
print "$playtimetme";