Annonce

  •  » Outils
  •  » [Résolu] Web services

#1 2011-06-13 20:02:01

Epy
Membre
2011-06-13
22

[Résolu] Web services

Hello !
Je vais avoir besoin de vos lumières pour utiliser l'outil WS (webservices: http://fr.piwigo.org/doc/doku.php?id=pr … b_services) qui correspond exactement à ce que je cherche, il me semble :]

J'aimerais afficher les albums, puis les photos de ces albums sur mes pages faites avec le CMS ModX

Le principe est assez simple, un Snippet dans ModX devrait permettre cela sans difficultés et même avec une grande souplesse. Seulement ça ne fonctionne pas :(
J'ai copié le code PHP proposé dans la page de la doc, j'ai adapté l'URL en fonction de mon installation des mes critères

(pour l'instant très lâches puisque c'est pour tester, j'ai juste demandé à afficher les 5 premières images de toutes mes catégories (en partant de la 2 qui est un répertoire en contenant d'autres), récursivement et avec le ratio 1.4 (pour n'avoir que les images au format paysage)

Bref, tout fonctionne bien en utilisant l'outil directement (http://example.com/galerie/tools/ws.htm)  et cette même requête, j'ai bien une réponse qui s'affiche dans le cadre en bas à droite, ou dans une nouvelle page (testé au format PHP et XML RPC) avec les liens vers les images, les catégories, etc.

Tout se gâte quand j'essaie ce script sur un serveur à part, ou même sur le même serveur qui héberge mon installation de Piwigo, dans un répertoire indépendant ou dans le répertoire de Piwigo lui même (avec l'URL absolue à chaque fois)
Dans ces cas là, j'ai une réponse 'ok' mais le contenu est vide.

Code:

a:2:{s:4:"stat";s:2:"ok";s:6:"result";a:1:{s:6:"images";a:4:{s:4:"page";i:0;s:8:"per_page";s:1:"5";s:5:"count";i:0;s:8:"_content";a:0:{}}}}

J'ai testé sur mon serveur de dév à la maison, donc pour lequel je suis certain qu'il y a curl et php5-curl d'installés

Auriez vous des pistes ?
Je précise quand même au cas où, mon niveau de PHP est assez faible, il y a peut être des choses simples que j'ai ratées dans le script, je continues de chercher ;)

Merci beaucoup :)

Edit: et j'ai vérifié à l'instant, tous mes albums sont bien publics.. hum enfin autant que j'en ai l'impression

Dernière modification par Epy (2011-06-13 20:06:54)

Hors ligne

#2 2011-06-13 20:05:25

ddtddt
Équipe Piwigo
Quetigny (21) - France
2007-07-27
16210

Re: [Résolu] Web services

je notifie plg qui saura mieu répondre que moi

Tu peux aussi regarder l'extension qui permet cela pour wordpress ;-)
[extension by johnnyfive] PiwigoMedia


Vous aimez Piwigo alors n'hésitez pas à participer avec nous, plus d'infos sur la page "Contribuer à Piwigo". Si vous n'avez pas beaucoup de temps et que vous souhaitez nous soutenir vous pouvez aussi le faire par un don.

Hors ligne

#3 2011-06-13 20:13:17

Epy
Membre
2011-06-13
22

Re: [Résolu] Web services

Merci ! :)

Maintenant j'ai l'air d'un con, parce que je viens de trouver la solution ..
Les albums sont "publics" mais les photos étaient réservées aux "Amis", en les mettant pour "tout le monde" ça fonctionne :/

J'ai pensé à vérifier ça en validant mon message.

Est-ce qu'on peut vite fait m'expliquer ce paramètre de "public" s'il y a un autre paramètre pour les photos ?
Je ne me rappelle pas avoir explicitement indiqué que je les reservais aux amis, mais il n'est pas impossible que je l'aie fait

Bref, sujet clos ?

(Si d'autres sont intéressés par un addon pour ModX, n'hésitez pas à venir m'aider, je reviendrais le signaler ici en tout cas :) )

Hors ligne

#4 2011-06-13 20:23:25

flop25
Équipe Piwigo
2006-07-06
6544

Re: [Résolu] Web services

Epy a écrit:

(Si d'autres sont intéressés par un addon pour ModX, n'hésitez pas à venir m'aider, je reviendrais le signaler ici en tout cas :) )

n'hésitez pas à le publier dans Outil de http://fr.piwigo.org/ext/

Hors ligne

#5 2011-06-13 22:20:20

ddtddt
Équipe Piwigo
Quetigny (21) - France
2007-07-27
16210

Re: [Résolu] Web services

flop25 a écrit:

Epy a écrit:

(Si d'autres sont intéressés par un addon pour ModX, n'hésitez pas à venir m'aider, je reviendrais le signaler ici en tout cas :) )

n'hésitez pas à le publier dans Outil de http://fr.piwigo.org/ext/

+1


Vous aimez Piwigo alors n'hésitez pas à participer avec nous, plus d'infos sur la page "Contribuer à Piwigo". Si vous n'avez pas beaucoup de temps et que vous souhaitez nous soutenir vous pouvez aussi le faire par un don.

Hors ligne

#6 2011-06-13 23:56:50

Epy
Membre
2011-06-13
22

Re: [Résolu] Web services

Pas d'inquiétude, je comptais bien le partager ;)
Enfin une fois qu'il sera "propre" du point de vue ModX, ça va nécessiter un peu de boulot avec les équipes de modx..
Pour le proposer comme extension il me faudra de l'aide aussi, je n'ai pas encore regardé la doc à ce sujet mais je le ferai en temps voulu.
Par contre, vu que c'est quelque chose qui s'utilise dans le code du CMS, comment cela va-t-il être géré ici ? Il ne faudrait pas que les utilisateurs pensent pouvoir l'installer dans Piwigo, ça ne fonctionnerait pas.

Je me suis permis de mettre http://fr.piwigo.org/demo/ comme galerie par défaut (au cas où elle ne serait pas définie dans les paramètres à l'appel du script.)
Ça peut aller ou vous préférez que je trouve autre chose ?

Ça permet lors du développement de voir 1 image au hasard dans votre galerie de démo pour prouver que ça fonctionne bien. Il y aurait donc un chargement d'image par développeur en général, le temps qu'ils définissent leur propre galerie comme source.

Merci _o/

Dernière modification par Epy (2011-06-13 23:58:42)

Hors ligne

#7 2011-06-14 00:26:14

plg
Équipe Piwigo
Nantes, France, Europe
2002-04-05
12529

Re: [Résolu] Web services

Bonne nouvelle l'intégration dans ModX!

Epy a écrit:

Par contre, vu que c'est quelque chose qui s'utilise dans le code du CMS, comment cela va-t-il être géré ici ? Il ne faudrait pas que les utilisateurs pensent pouvoir l'installer dans Piwigo, ça ne fonctionnerait pas.

Pas de soucis, il faudra le classer dans la catégorie "outil" sur piwigo.org/ext, il ne sera pas listé dans le gestionnaire de plugin des milliers d'installations de Piwigo à travers le monde.

Epy a écrit:

Je me suis permis de mettre http://fr.piwigo.org/demo/ comme galerie par défaut (au cas où elle ne serait pas définie dans les paramètres à l'appel du script.)
Ça peut aller ou vous préférez que je trouve autre chose ?

Aucun soucis.


Historiquement, premier utilisateur connu de Piwigo ;-)

Hors ligne

#8 2011-06-22 18:52:11

Epy
Membre
2011-06-13
22

Re: [Résolu] Web services

Hello
Vu le manque d'aide coté modx, je sollicite un peu d'aide ici. Je débute vraiment en PHP et je dois faire des idioties parce que je n'arrive pas à afficher ce qu'il faut.
L'outil ws me répond parfaitement ce que je souhaite et l'Array est correctement rempli. Il ne reste qu'à récupérer les valeurs et les renvoyer (pas les afficher, je dois d'abord demander au snippet modx de les renvoyer (avec le return) le moteur de modx s'occupera de faire l'affichage et la mise en forme avec un template..

Voilà l'affichage que j'ai:

Code:

Hits :


Hits :


Hits :


Hits :R
R
R
RHits :


Hits :


Hits :2
2
2
2Hits :2
2
2
2Hits :h
h
h
hHits :h
h
h
hHits :

Alors que l'array est bon:

Code:

Array
(
    [id] => 144
    [width] => 1600
    [height] => 1200
    [hit] => 1
    [file] => Roadtrip_015.jpg
    [name] => 
    [comment] => 
    [date_creation] => 2009-01-07 00:00:00
    [date_available] => 2009-07-30 19:19:22
    [tn_url] => http://galeries.aide-en-info.net/galleries/Photographie/Roadtrip/thumbnail/TN-Roadtrip_015.jpg
    [element_url] => http://galeries.aide-en-info.net/galleries/Photographie/Roadtrip/Roadtrip_015.jpg
    [categories] => Array
        (
            [0] => Array
                (
                    [id] => 23
                    [url]=> http://galeries.aide-en-info.net/index.php?/category/23
                    [page_url] => http://galeries.aide-en-info.net/picture.php?/144/category/23
                )

        )

)

Et voici le topic entamé pour cet outil:
http://modxcms.com/forums/index.php/topic,65569.0.html (pour ne pas avoir à vous réexpliquer tout le parcours de réflexion)
Je continues les recherches, mais cet array en cascade me perturbe, j'ai lu qu'il fallait y accéder avec des { } autour, mais pas réussi à le faire.

La dernière version du script php utilisé: (bien entendu, il y a encore du boulot avant de le publier)

Code:

<?php
/* Utilisation des Web services Piwigo pour afficher les photos dans une page ModX
* Code provenant de la doc Piwigo:
 * http://fr.piwigo.org/doc/doku.php?id=projet:developpement:web_services
 */
if (!function_exists(images)) {
  function images($base_url,$ws,$format,$method,$options) {
    // Initialisation de la session
    $session = curl_init(); 
    // Valeurs par défaut
    $output = ``;
      $base_url = (isset($base_url)) ? $base_url :'http://fr.piwigo.org/demo/';
    $ws = (isset($ws)) ? $ws : 'ws.php';
    $format = (isset($format)) ? $format : 'php';
    $method = (isset($method)) ? $method : 'pwg.categories.getImages';
    $options = (isset($options)) ? $options : '&order=random&per_page=1';
    
    /* Construction de l'URL */
    $url = $base_url . $ws .'?format='.$format . '&method=' . $method . '&' . $options;

    
    // Configuration des options de CURL
    curl_setopt($session, CURLOPT_URL,$url);
    curl_setopt($session, CURLOPT_HEADER, 0);
    curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
    
    // Exécution de la session
    $response = curl_exec($session); /* Ici nous réceptionnons le tableau sérialisé de la requête */
    $thumbc = unserialize($response);/* que nous "désérialisons" */

    curl_close($session); /* Fermeture des ressources */
   
  if ($thumbc["stat"]=='ok') /* Réponse correcte ? */
   {
     /* On isole chaque élément du tableau des résultats (comprendre les images)…  */
    for ($i=0;$i<$thumbc["result"]["images"]["count"];$i++) 
     {
    /* … Et pour chaque élément, on “charge” une variable $picture qui contiendra toutes les infos relatives à chaque image.  
     * dans $picture nous avons :  id, width, height, hit, file, name, comment, tn_url, element_url, date_creation, date_available, categories[page_url] */
    $picture = $thumbc["result"]["images"]["_content"][$i]; 
    
    print_r($picture);
    }
    foreach ($picture as $picture) {
      $output .= '<a href="'
      //. $picture['categories'][0]['page_url'] . 'title="' . '">' . '<img src="' // en commentaire parce que génère une erreur de syntaxe
      . $picture['tn_url'] . '" title="'
      . $picture['name'] . '" /></a><span class="imgInfosCls">' . 'Hits :'
      . $picture['hit'] . '<br />'
      . $picture['comment'] . '<br />'
      . $picture['width'] . '<br />'
      . $picture['height'].'</span>';
      /* $resourceArray = $resource->toArray();
      $output .= $modx->getChunk($tpl,$resourceArray); */
    }
    
   }
   else
   {
     $output = '<b>Il y a eu une erreur</b>. L\'url: <i>'. $url .'</i> n\'a pu &ecirc;tre consult&eacute;e.';
   }
   return $output;
  }
}
return images($base_url,$ws,$format,$method,$options);

Merci :)

Hors ligne

#9 2011-06-22 19:31:42

Epy
Membre
2011-06-13
22

Re: [Résolu] Web services

Hum, j'ai refait tout le foreach, en suspectant que je faisais des erreurs en voulant trop faire à la fois.. résultat absolument identique :(

Code:

//$url_image = $picture['categories'][0]['page_url'] ;
      $url_tn = $picture['tn_url'] ;
      $name = $picture['name'] ;
      $hits = $picture['hit'] ;
      $comments = $picture['comment'] ;
      $width = $picture['width'] ;
      $height = $picture['height'] ;
      
      
      $output .= '<a href="'.$url_image.'" title="'.$name.'"><img src="'.$url_tn.'" title="'.$name.'"/></a><span class="imgInfosCls">Hits:'.$hits.'<br /></span>' ;

Et le code source du résultat:

Code:

<a href="" title=""><img src="" title=""/></a><span class="imgInfosCls">Hits:<br />
</span><a href="" title=""><img src="" title=""/></a><span class="imgInfosCls">Hits:<br />
</span><a href="" title=""><img src="" title=""/></a><span class="imgInfosCls">Hits:<br />
</span><a href="" title=""><img src="" title=""/></a><span class="imgInfosCls">Hits:<br />
</span><a href="" title="R"><img src="R" title="R"/></a><span class="imgInfosCls">Hits:R<br />
</span><a href="" title=""><img src="" title=""/></a><span class="imgInfosCls">Hits:<br />
</span><a href="" title=""><img src="" title=""/></a><span class="imgInfosCls">Hits:<br />
</span><a href="" title="2"><img src="2" title="2"/></a><span class="imgInfosCls">Hits:2<br />
</span><a href="" title="2"><img src="2" title="2"/></a><span class="imgInfosCls">Hits:2<br />
</span><a href="" title="h"><img src="h" title="h"/></a><span class="imgInfosCls">Hits:h<br />
</span><a href="" title="h"><img src="h" title="h"/></a><span class="imgInfosCls">Hits:h<br />
</span><a href="" title=""><img src="" title=""/></a><span class="imgInfosCls">Hits:<br /></span>

C'est à ni rien comprendre ..
J'ai pu sans problème afficher le contenu des $picture[ ] avec des print ou print_r à la place des affectations aux variables dans le foreach.
Je ne comprends même pas d'où viennent ces R et ces 2

Je vais poster chez modx également au cas où ce serait une limitation/sécurité du CMS ..

Merci :)

Dernière modification par Epy (2011-06-22 19:36:43)

Hors ligne

#10 2011-06-22 21:15:52

Epy
Membre
2011-06-13
22

Re: [Résolu] Web services

J'ai trouvé le problème (ou plutôt on me l'a trouvé, pour être honnête)
C'était un foreach() foireux

Voilà la nouvelle version du code juste pour info

Code:

<?php
/* Utilisation des Web services Piwigo pour afficher les photos dans une page ModX
* Code provenant de la doc Piwigo:
 * http://fr.piwigo.org/doc/doku.php?id=projet:developpement:web_services
 */
if (!function_exists(images)) {
  function images($base_url,$ws,$format,$method,$options) {
    // Initialisation de la session
    $session = curl_init(); 
    // Valeurs par défaut
    $output = ``;
      $base_url = (isset($base_url)) ? $base_url :'http://fr.piwigo.org/demo/';
    $ws = (isset($ws)) ? $ws : 'ws.php';
    $format = (isset($format)) ? $format : 'php';
    $method = (isset($method)) ? $method : 'pwg.categories.getImages';
    $options = (isset($options)) ? $options : 'order=random&per_page=1';
    
    /* Construction de l'URL */
    $url = $base_url . $ws .'?format='.$format . '&method=' . $method . '&' . $options;

    
    // Configuration des options de CURL
    curl_setopt($session, CURLOPT_URL,$url);
    curl_setopt($session, CURLOPT_HEADER, 0);
    curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
    
    // Exécution de la session
    $response = curl_exec($session); /* Ici nous réceptionnons le tableau sérialisé de la requête */
    $thumbc = unserialize($response);/* que nous "désérialisons" */

    curl_close($session); /* Fermeture des ressources */
   
  if ($thumbc["stat"]=='ok') /* Réponse correcte ? */
   {
     /* On isole chaque élément du tableau des résultats (comprendre les images)…  */
    for ($i=0;$i<$thumbc["result"]["images"]["count"];$i++) 
     {
    /* … Et pour chaque élément, on “charge” une variable $picture qui contiendra toutes les infos relatives à chaque image.  
     * dans $picture nous avons :  id, width, height, hit, file, name, comment, tn_url, element_url, date_creation, date_available, categories[0][page_url] */
    $picture = $thumbc["result"]["images"]["_content"][$i]; 
    
    print_r($picture);
    $output .= '<a href="'.$picture['categories'][0]['page_url']
    .'" title="'.$picture['name']
    .'"><img src="'.$picture['tn_url']
    .'" title="'.$picture['name']
    .'"/></a><span class="imgInfosCls">Hits:'.$picture['hit']
    .'<br /></span>' ;
    
    /* $resourceArray = $resource->toArray();
      $output .= $modx->getChunk($tpl,$resourceArray); */
      
    }
    
    
   }
   else
   {
     $output = '<b>Il y a eu une erreur</b>. L\'url: <i>'. $url .'</i> n\'a pu &ecirc;tre consult&eacute;e.';
   }
   return $output;
  }
}
return images($base_url,$ws,$format,$method,$options);

J'espère que la prochaine fois que je le posterai sera pour le mettre en paquet à dispo :D

Hors ligne

#11 2011-06-22 21:54:56

plg
Équipe Piwigo
Nantes, France, Europe
2002-04-05
12529

Re: [Résolu] Web services

J'ai lu mais il n'y a plus de question apparemment, donc je dis juste "bonne chance" :-)


Historiquement, premier utilisateur connu de Piwigo ;-)

Hors ligne

#12 2011-06-22 22:34:56

Epy
Membre
2011-06-13
22

Re: [Résolu] Web services

Maintenant si, j'en ai des nouvelles :p (et merci pour les encouragements)
Je cherche à récupérer le nom de la catégorie (l'album) il semblerait qu'on ne puisse pas d'après:

Code:

Array
(
    [id] => 144
    [width] => 1600
    [height] => 1200
    [hit] => 1
    [file] => Roadtrip_015.jpg
    [name] => 
    [comment] => 
    [date_creation] => 2009-01-07 00:00:00
    [date_available] => 2009-07-30 19:19:22
    [tn_url] => http://galeries.aide-en-info.net/galleries/Photographie/Roadtrip/thumbnail/TN-Roadtrip_015.jpg
    [element_url] => http://galeries.aide-en-info.net/galleries/Photographie/Roadtrip/Roadtrip_015.jpg
    [categories] => Array
        (
            [0] => Array
                (
                    [id] => 23
                    [url]=> http://galeries.aide-en-info.net/index.php?/category/23
                    [page_url] => http://galeries.aide-en-info.net/picture.php?/144/category/23
                )

        )

)

Je n'ai que l'url et la page de la photo dans l'album. Est-ce qu'on peut y faire quelque chose ou cela va nécessiter des changements dans l'outil WS ?

Dernière modification par Epy (2011-06-22 22:36:56)

Hors ligne

#13 2011-06-22 22:47:36

plg
Équipe Piwigo
Nantes, France, Europe
2002-04-05
12529

Re: [Résolu] Web services

Tu as l'id (23) et tu peux appeler la méthode pwg.categories.getList (il n'y a pas getInfo malheureusement)


Historiquement, premier utilisateur connu de Piwigo ;-)

Hors ligne

#14 2011-06-22 23:00:59

Epy
Membre
2011-06-13
22

Re: [Résolu] Web services

Effectivement, c'est une possibilité.
Bon ça me chamboule mon code, mais pas grave :D
Merci

Edit: Après tentative, ça met vraiment trop le boxon avec le code sous cette forme: obligé d'attendre la déserialisation de la réponse, puis l'assignation au tableau pour récupérer l'id de la photo, et donc réouvrir et refermer une session curl à chaque image.
On doit pouvoir nettement améliorer le script pour faire ça, mais ça n'est pas dans mes compétences pour le moment, ça sera pour plus tard :/

Dernière modification par Epy (2011-06-22 23:09:25)

Hors ligne

#15 2011-06-22 23:18:16

plg
Équipe Piwigo
Nantes, France, Europe
2002-04-05
12529

Re: [Résolu] Web services

Je t'encourage à lire cet exemple de code PHP que j'ai écrit pour afficher les 5 derniers albums sur une page externe à Piwigo : [forum anglophone] showing last 5 albums on external page


Historiquement, premier utilisateur connu de Piwigo ;-)

Hors ligne

  •  » Outils
  •  » [Résolu] Web services

Pied de page des forums

Propulsé par FluxBB

github twitter newsletter Faire un don Piwigo.org © 2002-2022 · Contact