#1 2019-09-10 17:44:31

regex
Membre
2016-05-09
12

Amélioration API pwg.categories.getImages

Pour synchroniser les métadonnées d'un album Piwigo avec mon DAM local j'utilise l'API "pwg.categories.getImages" mais celle-ci ne me renvoie pas les tags: je suis obligé d'envoyer une grande quantité de "pwg.images.getInfo", pas top.

Serait-il possible de rajouter les tags dans les infos retournées par "pwg.categories.getImages" ?

Hors ligne

#2 2019-09-12 19:23:27

regex
Membre
2016-05-09
12

Re: Amélioration API pwg.categories.getImages

Je me réponds: j'ai fait à la va vite les quelques modifs suivantes dans pwg.categories.php, ça marche pour moi mais je n'ai pas fait de tests appronfondis:


ligne 96, remplacement de:

Code:

   $query = '
SELECT SQL_CALC_FOUND_ROWS i.*, GROUP_CONCAT(category_id) AS cat_ids
  FROM '. IMAGES_TABLE .' i
    INNER JOIN '. IMAGE_CATEGORY_TABLE .' ON i.id=image_id
  WHERE '. implode("\n    AND ", $where_clauses) .'
  GROUP BY i.id
  '. $order_by .'
  LIMIT '. $params['per_page'] .'
  OFFSET '. ($params['per_page']*$params['page']) .'
;';

par:

Code:

   $query = '
SELECT SQL_CALC_FOUND_ROWS i.*, GROUP_CONCAT(category_id) AS cat_ids, 
      GROUP_CONCAT(t.name SEPARATOR ",") as tags
  FROM '. IMAGES_TABLE .' i
    INNER JOIN '. IMAGE_CATEGORY_TABLE .' ON i.id=image_id
    LEFT JOIN '. IMAGE_TAG_TABLE .' it ON it.image_id = i.id
    INNER JOIN '. TAGS_TABLE .' t ON t.id = it.tag_id
  WHERE '. implode("\n    AND ", $where_clauses) .'
  GROUP BY i.id
  '. $order_by .'
  LIMIT '. $params['per_page'] .'
  OFFSET '. ($params['per_page']*$params['page']) .'
;';

ligne 118, remplacement de

Code:

foreach (array('file', 'name', 'comment', 'date_creation', 'date_available') as $k)

par:

Code:

foreach (array('file', 'name', 'comment', 'date_creation', 'date_available', 'tags') as $k)

Hors ligne

Pied de page des forums

Propulsé par FluxBB

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