Diaporama Récursif Aléatoire


alexsolex
 Share

Messages recommandés

Bonjour,

Vous m'avez remercier très gentiment à plusieurs reprises pour quelques modestes scripts que j'ai pu apporter. Vous m'avez félicité pour la naissance de ma petite Camille adorée...

C'est maintenant à moi de vous demander de l'aide.

J'ai un mariage à la fin du mois, et j'aimerais proposer la diffusion en continue des photos prises par chacuns lors de la journée.

L'idée est simple, le DJ possède un PC sur lequel il sera possible de connecter appareils photos ou lecteurs de cartes mémoires afin de vider les appareils des différents invités.

Les différents dossiers résultants de l'extraction des photos seront situés sur la xbox à priori, mais possible aussi qu'elles soient en partage samba.

Le but :

Lancer le diaporama en début de soirée, et ne plus le couper pendant qu'il lit les photos aléatoirement ET qu'il prend en compte les photos nouvellement ajouté pendant le diaporama

Récursif :

il prend toutes les photos situés dans un dossier ET dans tous les sous dossier

Aléatoire :

il prend une image au hasard dans tous les dossiers concernés

Les solutions :

A/ diaporama récursif depuis la section 'images' de XBMC

A priori cette solution est toute trouvée. Néammoins elle ne convient pas puisqu'elle ne prend en compte les photos à diffuser UNIQUEMENT au moment du lancement (pas de prise en compte des nouvelles photos ajoutées)

B/ python + httpapi

On lance un diaporama depuis un script python : il faut trouver un moyen de relancer le diaporama proprement régulièrement pour prendre en compte les nouvelles photos

C/ pur python

On parcours récursivement le répertoire des photos, puis on tire aléatoirement une des photos, on en mesure la dimension afin de la redimensionner pleine page. Inconvénient majeur : si on ne lit pas les infos exif de la photo et si celle-ci possède des informations de rotation, alors on en profite pas...

J'insiste sur les délais, il me faudrait le script courant de la semaine prochaine afin que je puisse le tester avant de partir.

Je remerci tous ceux qui pourront m'aider et me construire le script

Nota : si vous connaissez une solution fiable qui fait la même chose en linux ou win, ca peut être envisagé, alors faites le moi savoir.

Merci

Lien vers le commentaire
Partager sur d'autres sites

Salut,

XBMC.RecursiveSlideShow(dir) :

Je suppose que tu connais et que le problème avec cette fonction c'est que si tu relances le slide à intervalle régulier les photos déjà passées seront reprises dans le random et au cours de la soirée vous verrez plus les photos du début que celle de la fin (qui ne sont pas les moins intéressantes dans un mariage).

Du coup la solution pur python serait intéressante car elle permettrait d'éliminer les photos déjà passées, mais c'est peut-être lourd de recoder tout ce qui est fait dans recursiveslideshow.

Pour ce qui est du python seul, j'ai trouvé un script dont la description correspond, mais je ne sais pas si l'affichage tient compte des infos exif (j'ai mis la description) :

"Custom Script Requested by j0ly, recreates XBMC image slideshow, with constant updates (and a couple new transitions. Intended for autoplay. Excellent example script for seeing how to use the new transitions library."

http://members.cox.net/alexpoet/downloads/Slideshow.rar

Le script utilise une lib : http://members.cox.net/alexpoet/downloads/...transitions.rar

Lien vers le commentaire
Partager sur d'autres sites

XBMC.RecursiveSlideShow(dir) :

Je suppose que tu connais et que le problème avec cette fonction c'est que si tu relances le slide à intervalle régulier les photos déjà passées seront reprises dans le random et au cours de la soirée vous verrez plus les photos du début que celle de la fin (qui ne sont pas les moins intéressantes dans un mariage).

Je connais plus ou moins, mais je l'ai pas testé. De mémoire c'est un httpapi. Le problème n'est pas tant ce que tu évoques (la fonction aléatoire devrait résoudre le problème). le problème est qu'il faut relancer le diaporama pour prendre en compte les nouvelles images. Pas compliqué, mais j'ai pas le temps ! lol

Pour ce qui est du python seul, j'ai trouvé un script dont la description correspond, mais je ne sais pas si l'affichage tient compte des infos exif (j'ai mis la description) :

"Custom Script Requested by j0ly, recreates XBMC image slideshow, with constant updates (and a couple new transitions. Intended for autoplay. Excellent example script for seeing how to use the new transitions library."

http://members.cox.net/alexpoet/downloads/Slideshow.rar

Le script utilise une lib : http://members.cox.net/alexpoet/downloads/...transitions.rar

Effectivement je ne me souvenais plus de ce script ! Cependant il ne prend pas les images de manière récursive (uniquement les photos du dossier spécifié - sauf erreur de ma part - )

Lien vers le commentaire
Partager sur d'autres sites

Effectivement le script ne gère pas le récursif, ça ne doit pas être compliqué à ajouter, mais il faudra de toutes façons passer une commande httpapi pour le relancer au besoin.

Mais du coup ce script ne me semble pas utile vu que dans httpapi il y a déjà tout ce qu'il faut :

GetCurrentSlide : Retrieves the file name of the image currently being displayed.

GetSlideshowContents : Retrieves the contents (file names) of the slideshow playlist.

AddToSlideshow(media) : Adds a file or folder (media is either a file or a folder) to the slideshow playlist.

ClearSlideshow : Clears the slideshow playlist.

SlideshowSelect(filename) : Sets the slideshow playlist position by specifying the file name of the next image to show.

PlayNext : Starts playing/showing the next media/image in the current playlist or, if currently showing a slidshow, the slideshow playlist.

PlaySlideshow([directory];[recursive]) : Starts the slideshow. Directory specifies a folder of images to add to the slideshow playlist. If recursive has a value of True then all directories beneath directory are searched for images and added to the slideshow playlist.

Il est bien précisé que la notion de playlist des slides est différente de celle des musiques et vidéos

La fonction AddToSlideshow notamment serait intéressante, j'ai pas encore eu le temps de regarder dans le code comment elle gère l'ajout du nouveau répertoire

Un seul pb, ça ne marche pas ; j'ai essayé :

"http://ipmaxbox/xbmcCmds/xbmcHttp?command=PlaySlideshow&parameter=smb://monuser:monpassword@monipwindows/SharedDocs/Disques/HD0/Mes%20photos;true"

ça me retourne "OK" mais le slide ne démarre pas, j'ai une version t3ch du mois d'avril.

Est-ce que quelqu'un a déjà expérimenté ça ?

Modifié par jgranie
Lien vers le commentaire
Partager sur d'autres sites

Un seul pb, ça ne marche pas ; j'ai essayé :

"http://ipmaxbox/xbmcCmds/xbmcHttp?command=PlaySlideshow¶meter=smb://monuser:monpassword@monipwindows/SharedDocs/Disques/HD0/Mes%20photos;true"

ça me retourne "OK" mais le slide ne démarre pas, j'ai une version t3ch du mois d'avril.

Ca doit-être un problème dans mes paramètres réseau (ou alors c'est la version).

j'ai testé avec une version du 7 mai en la lançant avec win32 et ça marche avec un dir local.

La valeur du paramètre récursif ne doit pas être "true" mais "1"

le post pour relancer le slide :

"http://ipxbox/xbmcCmds/xbmcHttp?command=PlaySlideshow&parameter=C:\\My%20Pictures;1"

A chaque fois qu'on relance le post, la liste est réinitiallisée avec les nouveaux paramètres (un GetSlideshowContents permet de s'en assurer)

Toutes les fonctions citées précédemment marchent à l'exception du AddToSlideshow.

Je suis allé voir dans le code et elle n'est tout simplement pas implémentée.

J'essaierai de faire un nouveau test avec cette version sur une xbox pour le partage samba, je ne vois pas de raisons pour que ça ne marche pas.

C'est assez sommaire comme solution mais il me semble que ça couvre ton besoin, il suffit de faire un nouveau post à chaque fois que tu vides une carte dans le pc dans un sous répertoire du slide.

Il ne faut pas oublier de configurer la xbox pour l'aléatoire et les infos exifs.

Lien vers le commentaire
Partager sur d'autres sites

Salut

Bon tu as mis dans le mil, pas besoin de script, je résume

J'ai un partage sur un disque dur NAS (disque en réseau - protocole samba)

J'upload des photos dedans.

Je lance le diaporama récursif (en ayant pris soin d'activer les infos exif et la fonction aléatoire) grace à la commande httpapi suivante :

http://xboxip/xbmcCmds/xbmcHttp?command=PlaySlideshow&parameter=smb://user:password@IPNAS/dossierpartage/;1

Ensuite, il me suffit en extrême simplicité, de relancer le diaporama sans l'éteindre, par la même commande, après l'upload de nouvelles photos.

Donc pas de python, éventuellement, un script m'aurait permis de détecter l'ajout de photos pour relancer le diaporama, mais bon, cela est très bien et très simple.

Merci jgranie !

Question subsidiaire :

Il pourrait être intéressant à ce mariage, une fois la soirée engagée, au moment où les photos sont quasi terminée (souvent il n'y a plus guère de photos une fois passés à table) de relancer le diaporama mais CHRONOLOGIQUE.

On aurait donc des dossiers contenant des photos prises à des moments différents...

L'idée serait de lancer le diaporama cette fois sans l'aspect aléatoire mais récursif quand même (tri par date des photos) de manière à avoir le déroulement complet du mariage, tous dossiers confondus

J'ai bien pensé à le tester moi même sur xbmc par la fonction diaporama récursif sans aléatoire, mais toutes mes photos sont issus de mon seul appareil numérique et les photos d'un meme dossier n'ont pas les dates qui se croisent avec les photos d'un autre dossier. (je sais pas si c'est très clair tout ca ?)

Lien vers le commentaire
Partager sur d'autres sites

Donc pas de python, éventuellement, un script m'aurait permis de détecter l'ajout de photos pour relancer le diaporama, mais bon, cela est très bien et très simple.

Pour la détection, je pense qu'un script qui tourne en permanence poserait un problème :

Il faudrait être sûr que la dernière photo de la carte à été copiée avant de relancer le slide. C'est faisable avec une temporisation assez longue mais un peu hasardeux, de plus il faut faire régulièrement des diffs dans les sous dossiers, je pense que c'est un peu lourd.

Une solution plus simple serait de lancer un script de copie sur l'éxécution automatique, le script se charge de la création du sous-dossier (en fonction de la date courante) et de la copie, quand il a fini il relance le slide.

Sous quel environnement est ton NAS ? Sous windows on peut configurer ça dans options des dossiers/types de fichier/disque, on crée une entrée PlayXboxSlide par exemple avec l'appel au script python, puis on la met par défaut. Sous un autre environnement je ne sais pas comment on fait mais ça ne devrait pas être plus compliqué.

J'ai bien pensé à le tester moi même sur xbmc par la fonction diaporama récursif sans aléatoire, mais toutes mes photos sont issus de mon seul appareil numérique et les photos d'un meme dossier n'ont pas les dates qui se croisent avec les photos d'un autre dossier. (je sais pas si c'est très clair tout ca ?)

Pour enlever l'aléatoire :

"http://xboxip/xbmcCmds/xbmcHttp?command=SetGUISetting&parameter=1;slideshow.shuffle;false"

Dans ce cas le slide se fait dans l'ordre des nom des sous-dossiers et pas sur les dates de création des fichiers.

Donc si les dossiers sont nommés avec la date et l'heure (ou un numéro incrémental) tu auras un ordre chronologique.

Le problème c'est si tu veux conserver l'origine des photos, par exemple si tu as un sous-répertoire "Mr.Durand" avec des sous dossiers correspondant à chaque import de carte, là ça ne marche plus. Mais ça bloque aussi l'usage de l'exécution automatique.

Est-ce que tu comptes brancher directement les appareils photos (dans ce cas les drivers de chaque type doivent-être installés non?), ou bien juste insérer la carte dans un lecteur multicarte ?

Modifié par jgranie
Lien vers le commentaire
Partager sur d'autres sites

La récupération des photos se fera sur PC ubuntu ou Win, j'aurais un lecteur de carte, puis les photos seront uploadés sur mon NAS (disque dur en réseau, ethernet disk mini).

Ensuite je lance le diaporama sur le partage samba

Je précise ma question subsidiaire :

j'ai un dossier durand avec dedans les photos pic1 ,pic2, pic3 respectivement prises à 16h, 17h et 18h

j'ai un autre dossier toto avec dedans les photos img1, img2, img3 respectivement prises à 15h, 17H30 et 18H15

Ce que j'aimerais, c'est lancer mon diaporama pour avoir les photos dans l'ordre quelque soient leurs dossiers :

img1 (15h) / pic1 (16h) / pic2 (17h) / img2(17h30) / pic3 (18h) / img3(18h15)

Ainsi je garde la chronologie de l'évènement pour toutes les photos confondus, quelque soit le dossier ou elles se trouvent.

Merci

Lien vers le commentaire
Partager sur d'autres sites

Je précise ma question subsidiaire :

j'ai un dossier durand avec dedans les photos pic1 ,pic2, pic3 respectivement prises à 16h, 17h et 18h

j'ai un autre dossier toto avec dedans les photos img1, img2, img3 respectivement prises à 15h, 17H30 et 18H15

Ce que j'aimerais, c'est lancer mon diaporama pour avoir les photos dans l'ordre quelque soient leurs dossiers :

img1 (15h) / pic1 (16h) / pic2 (17h) / img2(17h30) / pic3 (18h) / img3(18h15)

Ainsi je garde la chronologie de l'évènement pour toutes les photos confondus, quelque soit le dossier ou elles se trouvent.

C'est ce que je craignais.

La fonction AddToSlideshow ne fonctionnant pas on est un peu limité.

Quelques pistes :

1) est-ce que c'est indispensable d'avoir un regroupement par photographe ?

2) est-ce qu'il est indispensable d'avoir un dossier par personne, tu pourrais par exemple avoir des dossiers nommé date_heure d'import et à l'intérieur préfixer les fichier par le nom du photographe.

3) tu créés à l'avance un dossier pour chaque photographe sur le NAS puis tu crées un bookmark multidossier qui les référence tous. Dans l'interface xbox tu ne verras que les sous-dossiers de chacuns (qui seront nommés par date d'import). Il y a 2 problèmes : il faut tester pour voir s'il prend bien l'ordre des sous dossiers "date" sans tenir compte des dossiers "photographes" et l'autre problème c'est que je ne sais pas si PlaySlideshow accepte un bookmark en paramètre.

J'avais un 4) mais je l'ai perdu en cours de route. Si ça me revient je le poste (de toutes façons si ça avait été une bonne solution je m'en serait rappelé)

Lien vers le commentaire
Partager sur d'autres sites

héhé

toutes tes idées sont très intéressantes.

Cela dit, je pars sur un dossier non pas par photographe, mais par "développement", car c'est souvent le mode par défaut prévu par les applis qui récupèrent les photos, mais aussi car c'est le cas le plus probable, à savoir plusieurs dossiers.

Je ferais au plus simple, je vide l'appareil dans le bon dossier, qu'il y ai ou pas un sous dossier. Le tout, c'est d'avoir toutes les photos dans un dossier racine, base de la récursivité.

Je ne vais pas non plus renommer les photos à priori, donc là encore l'utilité des dossiers par développement ou photographe a son importance.

De plus, il me sera intéressant après le mariage de savoir de qui viennent telles ou telles photos.

Lien vers le commentaire
Partager sur d'autres sites

Je ferais au plus simple, je vide l'appareil dans le bon dossier, qu'il y ai ou pas un sous dossier. Le tout, c'est d'avoir toutes les photos dans un dossier racine, base de la récursivité.

Je ne vais pas non plus renommer les photos à priori, donc là encore l'utilité des dossiers par développement ou photographe a son importance.

De plus, il me sera intéressant après le mariage de savoir de qui viennent telles ou telles photos.

Je ne sais pas comment se présente ton soft d'importation, mais j'imagine qu'il crée automatiquement à chaque importation un dossier avec la date et l'heure, auxquels tu peux ajouter un suffixe.

Dès lors tu nommes les dossiers 20070607_1628_Durand, tu conserves l'ordre d'import sans perdre le nom du photographe (c'était mon "4" d'hier, j'était un peu fatigué).

Tu auras la structure suivante :

racine_photos

...

20070607_1628_Durand

...

photo00324

photo00325

...

20070607_1629_Dupont

...

photo00322

photo00323

...

20070607_1630_Durand (ça mitraille)

...

photo00525

photo00526

...

A la fin de la soirée tu peux lancer un script du style (c'est du pseudo code, il faut affiner un peu)

for file in os.listdir("racine_photos")
 parts = file.split("_")
 new_dir_name = "racine_photos_2/"+parts[2]+"/"+parts[1]
 os.mkdirs(new_dir_names)
 # copie des fichiers de racine_photos/file vers new_dir_name

Modifié par jgranie
Lien vers le commentaire
Partager sur d'autres sites

Salut, juste pour réduire vos ardeurs.

Je ne pense pas qu'il y ait un seul appareil photo dans la soirée, donc chaque modèle d'appareil photo à sa méthode pour ranger les photos. Le mien par exemple, il met dans un dossier 100 photos avant de passer au dossier suivant. Enfin bref, si c'était juste un problème de renommage de photo, ça irait, un petit script ou on demanderait le nom du photographe et le dossier de destination et on pourrait renommer. Mais un truc que vous n'avez pas vu peut être c'est que vous supposez que tous les appareils ont leur horloge bien réglé, et qu'ils sont tous sur la même secondes!!! Ce qui, il faut bien l'avouer, n'arrive jamais. Donc à part, donner un top au début de la soirée pour régler les horloges de chaque appareil photo, tu n'auras pas (même en renommant les photos), une belle continuation de la soirée lorsque tu les rangeras dans l'ordre.

Enfin, voili, voilou,

++

Lien vers le commentaire
Partager sur d'autres sites

A la fin de la soirée tu peux lancer un script du style (c'est du pseudo code, il faut affiner un peu)

for file in os.listdir("racine_photos")  parts = file.split("_")  new_dir_name = "racine_photos_2/"+parts[2]+"/"+parts[1]  os.mkdirs(new_dir_names)  # copie des fichiers de racine_photos/file vers new_dir_name

Nan, c'est trop enquiquinant pour le peu que ca va servir et en plus les photos sont sur un NAS que je tape sur le protocole samba. Je n'ai pas sur ma xbox de DD survitaminé, puisque d'origine et déjà pas mal rempli (pour la capacité qu'il fait)

Donc non, cette idée ne m'enchante guerre.

Ayant pris gout à la méthode httpapi uniquement, il n'y a que si on me trouve une solution httpapi pas trop compliquée que ca va me plaire :) (je sais je sais je suis hyper difficile, on n'arrête pas de me le dire dans la préparation de ce mariage, on me "taxe" même d'être trop perfectionniste, mais bon...)

Salut, juste pour réduire vos ardeurs.

Je ne pense pas qu'il y ait un seul appareil photo dans la soirée, donc chaque modèle d'appareil photo à sa méthode pour ranger les photos. Le mien par exemple, il met dans un dossier 100 photos avant de passer au dossier suivant. Enfin bref, si c'était juste un problème de renommage de photo, ça irait, un petit script ou on demanderait le nom du photographe et le dossier de destination et on pourrait renommer. Mais un truc que vous n'avez pas vu peut être c'est que vous supposez que tous les appareils ont leur horloge bien réglé, et qu'ils sont tous sur la même secondes!!! Ce qui, il faut bien l'avouer, n'arrive jamais. Donc à part, donner un top au début de la soirée pour régler les horloges de chaque appareil photo, tu n'auras pas (même en renommant les photos), une belle continuation de la soirée lorsque tu les rangeras dans l'ordre.

Tu as raison, mais je ne pense pas non plus que les horloges soient si décalées. Mais cela peut arriver (imaginons un grand-tonton qui a eut un bel appareil numérique pour noel avec tout pleins de boutons, mais qui a oublié comment on mettais à jour l'heure pour l'été !)

Pour le coup des dossiers, c'est justement à cause de ces diversités et autres exotismes, que je ne veux pas renommer les fichiers, ni même m'amuser à regrouper toutes les photos en un seul endroit.

J'aimerais vraiment un diaporama qui prenne les photos dans leur ordre chronologique, quelque soit le dossier dans lequel elles se trouvent (le chemin n'intervient pas, seule la date de prise de vue interviendrais)

Bon, comme tu dis Nioc, moi qui veut pas que ce soit complexe à faire le soir même (on est pas là pour s'emmerder mais pour faire la fête) si je dit au mec qui "développe" les photos de regarder l'heure, etc etc, alors on est pas rendu !

Bon, sauf si jgranie ou autre possède encore une ou deux idées géniale MAIS simple (httpapi me parait le plus convenable) je suis preneur, sinon nous pourrons considéré le thème clos.

Ah si, peut être que si quelqu'un à une autre idée pour faire un truc au mariage (bien entendu faut rester dans le monde xbmc et python si possible) je peux être preneur. Sachant que j'emmènerais un video projecteur, un portable, une xbox, un routeur, un DD en NAS.

Par exemple :

- une webcam qui prendra des photos de la salle lors de la soirée à intervalles fréquents et réguliers (bon y'a pas de xbox ni de python là dedans donc faut éviter.... lol sinon je vais être obligé de m'auto-modérer)

Merci d'avance

Modifié par alexsolex
Lien vers le commentaire
Partager sur d'autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
 Share