Bonjour,
J'utilise Piwigo depuis peu et j'aimerai automatiser certaines tâches.
J'ai un dossier style DropBox sur mon serveur où je dépose toutes mes photos, ensuite j'ai fait un script PHP qui déplace les photos dans les bons dossiers en fonction des données IPTC.
Je cherche maintenant un moyen de créer automatiquement les thumbnails et de lancer la synchronisation, tout cela sans passer par l'interface d'administration mais simplement en lançant mon script.
Donc ma question est: est-il possible d'ajouter ces fonctionnalités à mon script? si oui, comment?
Merci d'avance
Anthony
Hors ligne
regarde du coté des webservices
http://fr.piwigo.org/doc/doku.php?id=v2 … b_services
Hors ligne
Bonjour,
Je n'ai pas trouvé ce que je cherchais dans les Webservices.
En revanche j'ai trouvé la fonction "RatioResizeImg" dans "admin/thumbnail.php" qui doit créer la miniature si j'ai bien compris.
J'inclus donc "thumbnail.php" au début de mon script mais j'obtiens une erreur : "Fatal error: Call to undefined function check_status() in C:\wamp\***\***\piwigo\admin\thumbnail.php on line 30".
Dois-je inclure d'autres fichiers ou bien cette méthode ne peut pas fonctionner?
Merci
Anthony
Hors ligne
Attention à ne pas solliciter des fonctions d'administration (accessibles à partir de l'administration uniquement en théorie) à partir de modules de la partie publique.
Le risque étant de créer des failles de sécurité sur son site.
Hors ligne
Bon j'ai finalement créé mes miniatures avec les fonctions PHP que je ne connaissais pas, c'est pas bien compliqué.
Il me reste maintenant à trouver comment faire une synchronisation rapide à la fin de mon script. Si quelqu'un a une idée je suis preneur car j'avoue ne pas du tout voir comment faire.
Merci d'avance.
Anthony
Hors ligne
Pour ma part, je fait appel à imagemagick via la commande exec().
ci-après ma fonction de conversion, qui nécessitera que tu l'adaptes car :
1/ elle est bien orientée à mon environnement de travail
2/ expoite d'autres fonctions dont le code n'est pas reporté ici
çà te donne une base de travail
// ---------------------------------------------------------------------------------------------------------------- // écrit le $nouveaufichier à partir de $fichier // retour: 0=ok // -1=ko // $mode = "conv" : conversion // = "thumb" : thumbnail // $fichier : fichier à convertir // $nouveaufichier : le fichier convertit // $hauteur : hauteur/largeur maximale de la photo // $qualité : de 1 à 100 (100 = qualité maxi) // $ecrase : écraser le fichier en sortie s'il existe déjà // $convertapp : ligne de commande du binaire imagemagick function traite_jpeg($fichier, $nouveaufichier, $hauteur, $qualite, $ecrase, $convertapp, $mode="conv", $nfo="", $interlace="") { if(!$ecrase&&file_exists($nouveaufichier)) { echo " <$fichier> existe déjà\n"; return(0); } else { echo "----------------------------------------------------------------------------\nFichier : ".$fichier."\n"; if($nfo!="") {echo " ".$nfo."\n";} echo " ".formatoctet(filesize($fichier),"A"," ",2,true); creer_arborescence($nouveaufichier); if($mode=="conv") { $cmd=$convertapp." \"".$fichier."\" -resize x".$hauteur." -quality ".$qualite." -profile AdobeRGB1998.icc -profile GenRGB.icc "; if($interlace!="") { $cmd.=" -interlace ".$interlace." "; } $cmd.="\"".$nouveaufichier."\""; } else { $cmd=$convertapp." \"".$fichier."\" -thumbnail ".$hauteur."x".$hauteur." -quality ".$qualite." \"".$nouveaufichier."\""; } exec($cmd, $output); echo " => ".formatoctet(filesize($nouveaufichier),"A"," ",2,true)."\n"; for($i=0;$i<count($output);$i++) { echo $output[$i]."\n"; } return(1); } } //function traite_jpeg($fichier, $nouveaufichier, $hauteur, $qualite, $ecrase)
Hors ligne
@grum,
Si j'ai bien compris ton code, il permet de créer les miniatures?
Comme dis plus haut j'ai régler mon problème de miniature. Je cherche maintenant à effectuer une synchronisation rapide sans passer par l'interface d'admin.
J'ai pensé à 2 solutions :
-Appeler le fichier .php de piwigo qui s'occupe de faire la synchronisation rapide.
-Recopier le bon morceau de code dans mon script.
Est-ce qu'une de ces 2 solutions est réalisable? si oui, comment?
S'il vous manque des informations pour m'apporter une réponse n'hésitez pas à me le faire savoir.
Merci d'avance
Anthony
Hors ligne
Bonjour,
J'ai abandonné l'idée de faire une synchronisation automatique pour que l'admin garde un contrôle là-dessus.
J'aimerai maintenant qu'un lien "Synchronisation rapide" soit disponible dans la partie identification du menu.
J'ai donc fait un template-extension pour le fichier menubar_identification.tpl en ajoutant ceci :
{if isset($U_ADMIN)} <li><a href="{$U_ADMIN}" title="{'hint_admin'|@translate}">{'admin'|@translate}</a></li> <li><a href="javascript:document.QuickSynchro.submit();">Synchronisation rapide</a></li> <form name="QuickSynchro" action="./admin.php?page=site_update&site=1" method="post" id="QuickSynchro" style="display: block; text-align:right;"> <div> <input type="hidden" name="sync" value="files" checked="checked" /> <input type="hidden" name="display_info" value="1" checked="checked" /> <input type="hidden" name="add_to_caddie" value="1" checked="checked" /> <input type="hidden" name="privacy_level" value="0" checked="checked" /> <input type="hidden" name="sync_meta" checked="checked"/> <input type="hidden" name="simulate" value="0" /> <input type="hidden" name="subcats-included" value="1" checked="checked"/> </div> </form> {/if}
Cela fait comme-ci on cliquait sur "Synchroniser" du menu "Catégorie" mais cela n'exécute en aucun cas une synchronisation rapide.
Quelqu'un peut-il me dire ce qui ne va pas?
Merci d'avance
Anthony
Hors ligne