• [^] # Re: Interet

    Posté par . En réponse au journal Videz vos portefeuilles !. Évalué à 4.

    juk fait cela aussi, il cherche les fichiers dans les dossiers, indexe le tout. Par ailleurs, il peut aussi ajouter des listes de lecture (playlists).

    Comme j'aime avoir une liste par dossier dans mon dossier où sont les ogg, j'ai le script suivant qui génére ces listes avec un cronjob toutes les semaines (les 3 premières lignes sont spécifiques à mon réseau local) :

    #!/usr/bin/perl

    use Sys::Hostname;
    use File::Find::Rule;

    do "/etc/hosts.nib.pl" or exit;
    exit unless $server;
    exit if hostname() ne $server;

    my $path = "/stock/sons";

    # Build a big list of mp3/ogg, but ignoring some directories
    my @biglist;
    my %biglist_ignore;

    $biglist_ignore{"sautil"} = 1;
    $biglist_ignore{"daube"} = 1;
    $biglist_ignore{"itscrap-lowquality"} = 1;
    $biglist_ignore{"kraftschlag"} = 1;

    opendir(REP, $path);
    while (defined(my $dir = readdir(REP))) {
    # Look into directories only
    next unless -d "$path/$dir";
    next if $dir eq ".";
    next if $dir eq "..";

    # Find ogg and mp3 available
    my @files = File::Find::Rule->file()
    ->name('*.ogg', '*.mp3')
    ->in("$path/$dir");

    # Print m3u if any
    if (scalar(@files) > 0) {
    open(M3U, "> $path/$dir/X-$dir.m3u");
    print M3U "#EXTM3U\n";
    foreach $file (sort(@files)) {
    $file =~ s@^/stock/sons/$dir/@@g;
    print M3U "#EXTINF:,$file\n";
    print M3U "$file\n";

    # Add in big list only if not ignored
    next if $biglist_ignore{$dir};
    push(@biglist, "$dir/$file");
    }
    close(M3U);
    }
    }
    closedir(REP);


    open(M3U, "> $path/T-tout.m3u");
    print M3U "#EXTM3U\n";
    foreach $file (@biglist) {
    print M3U "#EXTINF:,$file\n";
    print M3U "$file\n";
    }
    close(M3U);

    # Off topic: make sure nobody can remove files by mistake
    system("chown", "root.sons", "-R", $path);




    Avec juk, c'est ok pour 3625 fichiers sons, 8 jours et 3h de musique :) Ca marche bien, c'est fiable.
    Perfectible (exemple : http://bugs.kde.org/show_bug.cgi?id=113769 ), mais bien.