Aller au contenu

Messages recommandés

Posté(e) (modifié)

Salut,

J'ai fait un script en python pour l'indexation partielle (pas une ré-indexation complète) et le nettoyage des entrées obsolètes.

Il permet d'ajouter les entrées manquantes, de supprimer les entrées obsolètes et de supprimer les fichiers indexés 2 fois (et plus) par erreur.

Il est compatible DSM3.2 et DSM4.0.

Il fonctionne nickel chez moi, je n'avais plus besoin de lancer une re-indexation complète qui durait entre 2 et 3 semaines (!!!!) sur mon ancien DS110j.

Sur le DS212+ que je possède maintenant, pas de problèmes non plus.

Pré-requis variante ipkg

Il faut :

- installer ipkg

- py26-psycopg2 : module pour se connecter à une base PostgreSQL (à installer avec ipkg) :

ipkg install py26-psycopg2
Ce qui va installer toutes les dépendances automatiquement. Pré-requis variante paquet Synology Il faut installer Python (la version de Synology, pas celle de SynoCommunity) via le centre de paquets. Dans ce cas, la première ligne du script est à adapter, au lieu de :
#!/opt/bin/python2.6[/code]
[/color]

[color=#333333]Il faut :[/color]

[color=#333333]
[code]#!/usr/bin/env python[/code]
[/color] [color=#333333]Le reste ne change pas.[/color] [u][b]Installation[/b][/u] Le script est téléchargeable ici : . Il faut qu'il soit présent sur le NAS, l'emplacement n'a pas d'importance, l'essentiel étant de savoir le retrouver wink.png . [b][u]Utilisation[/u][/b] On peut le lancer en console (telnet ou ssh) sur le Syno : - variante ipkg :
[code]python2.6 index_updater.py --help[/code]
- variante Synology :
[code]python index_updater.py --help[/code]
pour voir les options. Il est possible de le rendre exécutable et de la lancer sans "python(2.6)". Pour une utilisation "normale", je propose d'utiliser cette option :
[code]python(2.6) index_updater.py -A[/code]
Pour mettre à jour un répertoire seulement (et les sous-répertoires) et pas l'ensemble des répertoires indexés, je propose d'utiliser cette option :
[CODE]python(2.6) index_updater.py -A -p /volume1/photo/2012/09\ Septembre/Partouze\ du\ 12[/code]

A vous de remplacer le répertoire par ce que vous souhaitez mettre à jour. Plusieurs répertoires peuvent être passés en paramètres avec autant de "-p"

Pour savoir exactement ce qui est fait, il est possible de rajouter -v 2, ce qui créera un fichier index_updater.log avec le détail des actions effectuées.

Afin de [b]tester d'abord[/b] ce qui sera fait il est possible de mettre l'option -t, dans ce cas, RIEN n'est modifié et en combinaison avec -v 2, tout ce qui serait fait est détaillé.

[u][b]Commentaire[/b][/u]

Comme dit, chez moi il fonctionne... Mais en cas d'erreur, merci de m'en tenir informé...

A+

Michel

Modifié par MrWaloo
Posté(e)

D'apres le log il me semble que le script prend en compte les répertoires "#recycle", extrait:

2012-03-17 17:34:42,743 - DEBUG	- Directory treatment on '/volume1/music/#recycle/albums'[/CODE]

Posté(e)

Ah je retrouve enfin le topic :)

Alors, j'ai pris la dernière version de ton script et ai lancé avec -A -t -v 2.

Ça me sort 22 Mo de log ! Il semble que le script ait voulu tout ré-indexer.

Alors j'ai forcé une reindex globale via le DSM puis refait le test du script => même résultat.

Après une réindeaxtion globale demandée via le DSM, le script n'aurait-il du pas me dire que tout était ok ?

Posté(e)

@CoolRaoul: OK, je filtre donc l'arborescence sous #recycle

Merci pour ton retour

@Amsonia: En effet, le script est dans un état second...

Merci pour ta patience, je sens qu'on se rapproche, chez moi la version en cours (pas encore uploadée) fonctionne pas mal, je teste un peu plus et j'upload

(j'ai fait pas mal de modif...)

Posté(e)

Mise à jour testée et uploadée. Nickel chez moi. Bon test

Bon, pour le dossier 'music' je crois qu'on est bon, bonne détection des nouveaux fichiers.

Pour 'video', il a détecté les nouveaux fichiers mais a aussi voulu me re-indexer des fichiers pourtant assez vieux pour avoir été pris en compte par l'indexation du DSM. Lesdits fichiers sont soit des .ogv ou des .VOB de DVD, peut-être est-ce donc normal, peut-être que ces extensions passent mal dans l'indexation officielle.

Pour 'photo' par contre, c'est toujours pas ça (chez moi du moins). Il semble que le script ait voulu encore une fois tout ré-indexer ou du moins une grande, grande partie.

D'ailleurs, je viens de m'apercevoir que j'avais perdu toutes mes vignettes (gloups vu le temps pour les générer). C'est possible que cela soit lié à ton script ?

Je n'ai opéré qu'en -A -t -v 2 ce soir mais j'avais fait un -A -v 2 le jour du log de 22 Mo :s

Posté(e) (modifié)

Si le répertoire qui contient les vignettes n'existe pas, l'indexation est re-faite, puisque ça re-génère les vignettes.

Ça ne rajoute pas d'entrée dans la BD, ça re-génère juste les vignettes.

Les répertoires contenant les vignettes (les fameux @eaDir) étaient mal gérés dans une version précédente, c'est sans doute le script qui les a effacés chez toi (comme chez moi d'ailleurs...).

Maintenant la reconnaissance des répertoires @eaDir inutiles (à effacer) est faite différemment et fonctionne bien mieux.

Quand aux fichiers vidéo qui sont indexés, il faut que j'explique la procédure de *détection* de fichiers multimédia :

Le fichier '/usr/syno/etc/mimetypes.txt' contient les types MIME connus par le (DSM du) NAS, le script le lit pour pouvoir associer les extensions de fichiers au type de fichier.

Si la partie avant le "/" du type doit être indexé, alors le fichier est indexé (sauf s'il l'est déjà). Ne sachant pas quels types étaient filtrés (pas indexés, ou pas indexables), je lance l'indexation sur toutes les extensions multimédia, sauf les 'm3u' que j'ai pu identifié comme non indexables.

Pour les extensions indexés sur lesquels tu as un doute (je n'ai pas des fichiers de tous les types) tu peux lancer la commande :


/usr/syno/pgsql/bin/psql mediaserver admin -c "select path from video where path ~* E'\.vob$';"

Dans cette requete, l'extension n'est pas sensible à la casse. Remplace l'extension par ce que tu souhaites tester et dis moi STP.

Chez moi les VOB sont indexés et je n'ai pas de OGV pour tester...

Sinon tu peux t'économiser le "-v 2" avec "-t", c'est moins verbeux et bien plus compréhensible maintenant.Les options "-A -t" suffisent donc. (Oui, j'ai fait pas mal de modifs...)

Tu peux aussi ne tester que les vidéos avec "-A -t -p /volume1/VIDEO". Ou même un sous-répertoire quelconque à tester.

Modifié par MrWaloo
Posté(e)

Ok donc certains .VOB étaient bien indexés par l'index officiel mais pas tous, va savoir…

Ta commande confirme qu'aucun .ogv n'est présent dans l'index officiel.

Ok pour les @eaDir. Le problème c'est que la génération des vignettes ne s'est pas relancée !

J'ai arrêté et relancé le processus de génération, j'ai arrêté/relancé le service "Photo Station" et suis même allé jusqu'à le désinstaller puis le réinstaller mais c'est toujours pareil, je n'obtiens, dans PhotoStation, que des loaders en lieu et place des vignettes et même des photos en taille normale.

o97Vn.png

7bbCQ.png

Posté(e) (modifié)

Je n'ai pas installé ni ne connais Photo Station.

Je testerai ce soir.

Photo Station a sa propre BD, c'est ce que j'ai pu constater, et c'est tout ce que j'en sais.

Tu peux vérifier pour une photo si elle est indexée :


/usr/syno/pgsql/bin/psql mediaserver admin -c "select path from video where path = '/volume1/PHOTO/chemin/vers/une/photo';"

Pour savoir si elle est dans la base multimedia. Dans le répertoire @eaDir, un répertoire avec le même nom que la photo doit exister et contenir les vignettes. Si elle n'y est pas, lance la commande :

synoindex -a /volume1/PHOTO/chemin/vers/une/photo

Ça va l'indexer (si elle ne l'est pas) et créer les vignettes de toutes les photos du répertoire de la photo si elles n'existent pas (j'espère être clair...).

Je te suggère donc de copier un répertoire contenant des photos et d'en garder 5 pour le test, de supprimer le répertoire @eaDir et de vérifier si Photo Station affiche les photos correctement après synoindex, sinon c'est qu'il faut autre chose.

edit: D'après tu n'es pas le seul à avoir des soucis avec Photo station, ça ne vient peut être pas de l'indexation.

edit2: idem avec la solution, semble-t-il

Modifié par MrWaloo
Posté(e)

J'ai trouvé une solution, ma solution, qui fonctionne pour l'instant.

J'ai simplement renommé mon dossier 'PHOTO' en 'photo'. Je crois que cela a eu pour effet de non seulement vider/supprimer tous les dossiers @eaDir mais également de supprimer la bdd. Je voyais dans mon /var/log/messages que le processus de génération des vignettes n'arrivait pas/plus à ouvrir le fichier de bdd…

C'est en train de regénérer les vignettes là. (en bonus, ton script ne cherche plus à toujours indexer toutes mes photos, tout roule donc)

15000+ photos dont 90% de RAW…je suis parti pour quelque jours de 100% CPU je crois :s

J'en ai profité pour renommer tous mes autres dossiers partagés en minuscules.

Le programme est le suivant :

1/ attendre que toutes les vignettes soient re-générées

1.1/ reconstruire l'index des fichiers du NAS ainsi que l'index du mediacenter

1.2/ passer un coup de ton script

2/ rebooter

3/ repasser un coup de ton script

4/ tester toutes les méthodes d'ajout de photo (DSM, PhotoStation depuis Poste local, PhotoStation depuis Diskstation, FTP, AFP)

5/ aller aux putes pour fêter ça :P

  • 4 semaines après...
Posté(e)

Bonjour et merci pour le script, il fonctionne très bien sur mon syno :)

Une petite question (et je me rends compte que c'est surtout abuser de votre temps, mais bon), j'aimerais que ce script s'exécute quand j'appuie sur le bouton Usbcopy de mon syno (voir ). Cependant je n'ai pas les connaissance pour comprendre comment faire. Puisque le fichier "synousbcopy", quand je l'ouvre sous vi, c'est juste de la boullie numérique.

J'ai bien compris qu'il faut demander d'exécuter la commande "python2.6 index_updater.py -A" dans le "synousbcopy", cependant je ne sais pas dans quel "langage" le faire et ne veux pas risquer de faire une erreur. Quelqu'un pourrait-il m'aider ?

Posté(e) (modifié)

Salut,

Il faut que le fichier /usr/syno/bin/synousbcopy contienne ceci :



#!/bin/sh

/opt/bin/python2.6 /chemin/absolu/vers/le/script/index_updater.py -A

Et le tour sera joué.

A+

Michel

Modifié par MrWaloo
Posté(e)

Merci pour le suivie ;)

Cependant, problème ! ça n'a pas l'air de fonctionner.

J'ai renommé l'ancien synousbcopy en .sav. Créé un nouveau avec les 2 lignes de codes (en mettant bien le chemin absolu vers le script) puis fait un chmod +x. mais lorsque j'appuie sur le bouton usbcopy, le script ne semble pas se lancer, je le suppose car même en -v 2 je n'ai pas de .log.

Une idée ?

Posté(e) (modifié)

Re, désolé pour le retard...

Quand tu lances le script /usr/syno/bin/synousbcopy directement, une erreur est retournée ?

Il se lance et pas d'erreur.

Edit, je précise un peu plus, le synousbcopy ressemble à ça :


#!/bin/sh

echo A > /dev/ttyS1

/opt/bin/python2.6 /chemin/absolu/vers/le/script/index_updater.py -A

echo B > /dev/ttyS1

le proprio est root; le droits, le même que l'ancien. Le lancement manuel fonctionne, echo A fait clignoter le voyant puis echo B l'éteint quand c'est terminé. J'ai le log si je mets -V 2.

En revanche, en appuyant sur le bouton, rien ne se passe.

Modifié par BenGamin
Posté(e)

Bon, en faite c'était tout simple ... bah ... fallait brancher une clé usb pour que ça se lance ... :unsure:

Mais ça m'arrange pas ... :( parce que il faut une clé branché... du coup je me demandais s'il y avait moyen de faire croire qu'il y en a une même s'il n'y a rien de branché.

  • 2 semaines après...
Posté(e) (modifié)

Bonjour MrWaloo,

Tout d'abord bravo pour ton travail; ton script Python est vraiment excellent !! Cela me fait comprendre que j'ai encore bcq à apprendre sur Python.

Sinon, trêve de flatterie :P.

J'ai 2 questions concernant le comportement de la commande synoindex:

1- Si la commande est exécuté manuellement 2x sur le même répertoire, est-ce que les fichiers vont être indexés 2x? ou la commande est assez intelligente pour voir que l’indexation existe déjà et ne va donc pas ajouter de nouvelle entrée dans le DB.

2- Si j'ai bien compris, seul les types définis dans le fichier /usr/syno/etc/mimetypes.txt sont indexés?

Par avance, merci !! :D

Modifié par Lapin
Posté(e)

Merci bud77 !!

C'était surtout la 1er question qui m'importait.

  • 3 semaines après...
Posté(e)

Salut,

Désolé pour le temps de réponse, je consulte pas le site souvent...

1) La commande d'ajout sera lancée si le fichier n'est pas déjà réellement indexé, par contre je ne vérifie pas le fichier temporaire qui contient la queue des fichiers en cours d'indexage.

--> Ce qui veut dire que si le script est lancé deux fois d'affilé, l'indexage sera fait deux fois...

2) Oui, sachant que les m3u sont spécifiquement ignorés, puisque non pris en charge.

A+

Michel

Posté(e)

Merci pour tes réponses!

Au faite comment as-tu fait un aussi jolie lien vers le téléchargement de ton ficher?? J'ai créé un tuto et j'aimerais pouvoir faire comme toi!

Posté(e) (modifié)

Si j'ai bonne mémoire, dans la section "Téléchargements", j'ai uploadé mon fichier et ensuite, j'ai inséré un lien vers ce fichier via le bouton "Mes médias" présent dans l'éditeur de post.

edit:

1) La commande d'ajout sera lancée si le fichier n'est pas déjà réellement indexé, par contre je ne vérifie pas le fichier temporaire qui contient la queue des fichiers en cours d'indexage.

--> Ce qui veut dire que si le script est lancé deux fois d'affilé, l'indexage sera fait deux fois...

En fait les miniatures sont recréées, mais l'entrée dans la BD n'existe qu'une fois.

Modifié par MrWaloo
Posté(e)

Merci!! Effectivement le bouton "My Media" est ce que je recherchais.

Et merci aussi pour la précision concernant l'indexage.

  • 2 mois après...
Posté(e)

Bonjour,

Merci pour ce script génial qui semble marcher au poil. J'aimerais toutefois n'utiliser que pour indexer le partage 'video'.

(Je souhaite que SABnzbd lance ce script après chaque téléchargement dans le dossier video.)

J'ai donc essayé de commenter les lignes suivantes mais ça n'a pas fonctionné :

self.configuration = {

# 'music': {

# 'path': '', # to be determined

# 'index_mime': {'audio': True, 'image': False, 'video': False}

# },

# 'photo': {

# 'path': '', # to be determined

# 'index_mime': {'audio': False, 'image': True, 'video': False}

# },

'video': {

'path': '', # to be determined

'index_mime': {'audio': False, 'image': False, 'video': True}

},

}

Il faut peut-etre aussi modifier la constate : MIME_CORRESPONDANCE = {'audio': 'music', 'image': 'photo', 'video': 'video'}

Il serait sympa que le script possède une option pour définir les partages à indexer afin de pouvoir en exclure certains.

Si quelqu'un peut m'aider là-dessus, parce que je suis un peu à court d'idée...

Mini.

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.