Aller au contenu

Indexation Automatique Serveur Itunes


Aelkaim

Messages recommandés

Bonjour,

Nouveau venu dans ce monde de ligne de commande, j'ai réussi en luttant pas mal à installer et paramétrer castget pour qu'il récupère mes podcasts et les ajoutent dans le dossier "music". L'utilisation par la suite devait se faire à travers le serveur itunes. Problème: les fichiers apportés par castget ne sont pas automatiquement indexés.

Ni une ni deux, je trouve un tuto intéressant (synoindex) dévrivant la marche à suivre pour ajouter à l'index les fichiers les plus récents. Et cela marche ! Voici mon script:

@include_files = ("MP3");


my $SYNO_ERROR_MSG = "Failed to get MediaInfo.";


my $scan_dir = shift;


if (!$scan_dir) {

        $scan_dir="/volume1/music";

}


my @files = `find $scan_dir -type f -mtime -2`;

my $files_indexed = 0;


foreach (@files) {

        my $file = $_;

        chomp($file);

        my $ext = ($file =~ m/([^.]+)$/)[0];


        if (grep {lc $_ eq lc $ext} @include_files) {

                my $result = `synoindex -g \"$file\" -t music`;

                chomp($result);


                if ($result =~ m/^$SYNO_ERROR_MSG/i) {

                        my @synorc = `synoindex -a \"$file\"`;

                        ++$files_indexed;

                }

        }}
Donc c'est plutot cool. Problème: quand j'exécute le script, le terminal m'indique en 10 exemplaires environ:
HINT:  Use the escape string syntax for backslashes, e.g., E'\\'.

WARNING:  nonstandard use of \\ in a string literal

LINE 1: ... * FROM music WHERE fs_online = 't' AND path like '/volume1/...

Comme si j'avais fait quelque chose de pas très propre.

Des idées pour lisser cela ?

D'avance merci !

Alexandre

déjà, mixer perl et bash c'est pas le mieux. Par exemple pour le find, il vaut mieux utiliser le module file:find de perl (http://world.std.com/~swmcd/steven/perl/pm/find.html pour des exemples), mais je ne sais pas si ce module est installé sur syno.

éviter l'usage de grep qui renvoie normalement un tableau des éléments remplissant la condition, tu ne fais que vérifier si c'est vrai, donc ce n'est pas la fonction adaptée (en fait, c'est une solution facile, mais il faudrait alors prendre le nombre d'éléments du tableau renvoyé, ou en faire un scalar.

ensuite, le code n'est pas parfait, tu peux retravailler un peu.

ex :

foreach (@files) {

my $file = $_;

chomp($file);

s'écrit mieux

foreach my $file (@files) {

chomp($file);

ou

foreach (@files) {

chomp;

my $file = $_;

Mais le message d'erreur est vraisemblablement donné par synoindex, que tu appelles ainsi :

my $result = `synoindex -g \"$file\" -t music`;

essaye comme ça :

my $result = qx(synoindex -g "$file" -t music);

man perlop pour les détails.

Lien vers le commentaire
Partager sur d’autres sites

Non non, il est toujours grognon.

Mais au fait, le message d'erreur veut juste dire qu'il y a une faute d'orthographe mais qu'il arrive quand meme

Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.