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;
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);
# 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.
[^] # Re: Interet
Posté par Anonyme . En réponse au journal Videz vos portefeuilles !. Évalué à 4.
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.