Re: lsdvd: Alle Titel ab bestimmter Laenge

David Haller <[email protected]>
Newsgroups gmane.linux.suse.multimedia.german
Message-ID <[email protected]>
Hallo,

Am Son, 21 Feb 2010, Al Bogner schrieb:
>Am Samstag, 20. Februar 2010 23:55:59 schrieb David Haller:
>
>Hallo David,
>
>> Am Sam, 20 Feb 2010, Al Bogner schrieb:
>> >Wie definiere ich alle Titel, die zB länger als 30 Minuten sind?
>> 
>> Parse den Output von lsdvd.
>
>Grins, mit der bash geht das nicht so einfach. Ich dachte mir schon, dass da 
>was mit perl oder awk kommt.
>
>> Oder das hier:
>> 
==== ~/bin/lsdvd-longest_track.pl ====
#!/usr/bin/perl -w
use strict;
use Data::Dumper;

our (%lsdvd, $lsdvddata);
{ local $/; $lsdvddata = <>; }
eval $lsdvddata; die "$@" if "$@";
foreach (@{$lsdvd{track}}) {
#   if( $_->{ix} == $lsdvd{longest_track} ) {
#     print Dumper($_);
#   }
    printf "LENGTHS[%i]=%s;\n", $_->{'ix'}, $_->{'length'};
}
1;
====

Wenn du dann im shellscript

    declare -a LENGTHS
    eval "$(lsdvd -Op -a -v foo.iso | ~/bin/lsdvd-longest_track.pl)"

machst, kannst du anschließend per

    "${LENGTHS[$i]}"

auf die Länge jedes Tracks zugreifen. Ist zwar auch nicht grad was ich
machen würde, aber ... ;)
 
>> lsdvd -Op [-a -v -s] [foo.iso] | lsdvd-longest_track.pl
>
>Man müsste da etwas verändern, aber ich blicke nicht so recht durch.
>
>Ich will nicht die Zeit des längsten Titels, sondern die Zeit von jedem.
>
>Mein bash-script hat $i für die Titelnummer und das sollte an das Perl-Script 
>übergeben werden, dass dann als Ergebnis _nur_ "length' => '738.24' ausgibt 
>bzw. nur '738.24' als Variable an die Bash gibt.

Ineffizient ;)

-dnh

-- 
Die ultimativen Man-Pages haben ein ".c" als Dateiendung.
                                    -- am DLUG-Stammtisch
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.