Aller au contenu

Indexation Automatique Serveur Itunes

Featured Replies

Posté(e)

Bonjour,

Tes fichiers seront index

Posté(e)

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.

Posté(e)

Le code a

Posté(e)

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

Posté(e)
  • Auteur

J'ai bien pris note... Mais j'ai un nouveau soucis.

Je ne sais pas du tout si c'est li

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…

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.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.