Bonjour à tous,
Comme vous le savez, je ne suis pas du tout un codeur. J'ai déjà en chantier une autre demande d'aide pour du code mais là, je pense que ça ne demandera pas beaucoup d'efforts pour vous autre programmeurs.
Je vous explique ma petite demande.
Je reprend l'installation de [extension by Eric B] Tags2File / Export Image Metadata
Déjà premier soucis, via l'installation automatique, le nom du répertoire est "extension_292"
Ce qui fait que lors de l'exécution du plugin, j'obtiens une page blanche avec Invalid URL - plugin Tags2File not active. L'url est la suivante : //127.0.0.1/julien-moreau.fr/galerie/admin.php?page=plugin§ion=Tags2File%2Fdb_export_image_metadata.php
Il faut donc renommer le nom du répertoire en Tags2File.
Coté administration, j'opère comme suit :
L'ID 655 correspondant à une photo, cette dernière se trouve donc dans mon répertoire C:\Sortie
J'exécute le plugin.
Ca me donne un fichier .cmd qui a le contenu :
chcp 1252
"C:\exiftool.exe" -IPTC:CodedCharacterSet=UTF8 -overwrite_original -IPTC:Caption-Abstract-= -IPTC:Caption-Abstract="Lavoir de nuit de Bourg Saint Andéol (07)" -IPTC:Writer-Editor-= -IPTC:Writer-Editor="MOREAU Julien" -IPTC:Keywords="ardèche,nuit,lavoir,bsa,bourg saint andéol" _MG_3018.jpg
Comme expliqué précèdement, le problème intervient au niveau des mots clés (keywords).
Les mots clés sont insérés dans l'image comme si il ne fait qu'un. Qu'un bloc et non plusieurs mots clés.
Si je modifie à la main le fichier .cmd pour l'écrire comme suit :
chcp 1252
"C:\exiftool.exe" -IPTC:CodedCharacterSet=UTF8 -overwrite_original -IPTC:Caption-Abstract-= -IPTC:Caption-Abstract="Lavoir de nuit de Bourg Saint Andéol (07)" -IPTC:Writer-Editor-= -IPTC:Writer-Editor="MOREAU Julien" -IPTC:Keywords="ardèche" -IPTC:Keywords="nuit" -IPTC:Keywords="lavoir" -IPTC:Keywords="bsa" -IPTC:Keywords="bourg saint andéol" _MG_3018.jpg
Là maintenant les mots clés sont écris correctement.
Dans le fichier db_export_image_metadata_class.php ligne 224 je trouve le code suivant :
$exiftoolCmd .= " -IPTC:Keywords=\"".$tags."\"";
Ca serait cette ligne qui concatène les tags. Le but étant donc de la travailler pour que tous les tags soient précédés de la mention -IPTC:Keywords=
La variable $tags semble obtenu avec à la ligne 204 le code :
$tags = $this->cutString($this->decode_html_string_to_unicode($row[4], false), 64);
Toujours dans db_export_image_metadata_class.php à partir de la ligne 309 j'observe le pavé :
// data access private function get_image_properties() { $query_path = $this->isTest ? 'img.file' : 'img.path'; $query_restriction = $this->isTest ? 'AND (img.id = '.$this->test_img_id.'))' : ')'; // get direct properties and tags, even if no tags, with either name, comment or tags not null // restritive query with image.ID for tests with copied images with file instead of path $img_query = 'SELECT img.name, img.comment, img.author, img.date_creation, GROUP_CONCAT(tags.name), '.$query_path.', has_high FROM '.IMAGES_TABLE.' AS img LEFT OUTER JOIN '.IMAGE_TAG_TABLE.' AS img_tag ON img_tag.image_id = img.id LEFT OUTER JOIN '.TAGS_TABLE.' AS tags ON tags.id = img_tag.tag_id WHERE ( ( LENGTH(img.name) > 0 OR LENGTH(img.comment) > 0 OR LENGTH(img.author) > 0 OR LENGTH(tags.name) > 0 ) '.$query_restriction.' GROUP BY img.id, img.name, img.comment, img.author, '.$query_path.', has_high ORDER BY img.id ASC; '; return pwg_query($img_query); }
Est-ce que ce pavé est en cause ou est-ce plutôt un problème de concaténation ?...
Dernière modification par Gotcha (2009-11-19 16:00:01)
Hors ligne
nicolas a écrit:
Quel est le contexte ?
D'où vient -IPTC:Keywords="ardèche,nuit,lavoir,bsa,bourg saint andéol" ?
Si la variable de base contient l'ensemble des mots clés c'est facile et si c'est un tableau c'est encore plus facile. Quel est le cas ?
Le plugin Tags2Files récupère les données contenues dans la BDD pour ensuite écrire un fichier batch.
Dans ce fichier batch, en fonction des informations que l'on a transmises via le panneau d'administration du plugin, récupère donc certaines données stockées dans la BDD en fonction de l'ID de la photo.
Il ne reste donc plus qu'a exécuter le fichier batch avec un double clic et le script s'occupe du reste.
Les tages "ardèche,nuit,lavoir,bsa,bourg saint andéol" sont là pour illustrer mais aussi parceque je teste le plugin sur une seule photo.
nicolas a écrit:
Code:
$tags = explode(',', "ardèche,nuit,lavoir,bsa,bourg saint andéol"); $s = ''; foreach ($tags as $tag) { $s .= '-IPTC:Keywords="'.$tags.'" '; }
Hors ligne
Je ne trouve pas la même version du plugin que toi. J'imagine que c'est celui-ci :
[extension by Eric B] Tags2File / Export Image Metadata
Hors ligne
Haa...
[extension by ]
[extension by Eric B] Tags2File / Export Image Metadata
Je jurerai avoir pris l'extension de Eric B mais je constate que les fichiers ne correspondent pas. Je repars donc de zero.
Je viens d'éditer mon premier message pour plus de clarté.
Merci Nicolas.
(Je m'explique toujours pas la différence de fichiers...)
Dernière modification par Gotcha (2009-11-20 14:35:07)
Hors ligne
EUREKA !
Nicolas MERCI !
Tu avais vu juste avec ton code :
$tags = explode(',', "ardèche,nuit,lavoir,bsa,bourg saint andéol"); $s = ''; foreach ($tags as $tag) { $s .= '-IPTC:Keywords="'.$tags.'" '; }
Tu avais juste fais une petite faute. C'est ($tags as $tags) Il manquait juste un "s"
J'ai simplement remplacé ardèche,nuit,lavoir,bsa,bourg saint andéol par $tags et ça semble rouler correctement.
Je poursuis mes tests.
Encore Merci Nicolas.
Hors ligne
ok Nicolas, c'est intégré.
Bon, maintenant, je cherche à rajouter des guillemets sur le chemin d'accès des photos. Car à moins de ne travail qu'avec des sous répertoires sans espaces, bah ça coince.
A mon avis, dans [u]db_export_image_metadata_class.php[/i] ca doit venir du pavé :
private function write_exifCmd($exifCmd, $image_path, $has_high, $fp) { $exifCmdN = $exifCmd ." "; $exifCmdN .= $this->isTest ? $image_path : realpath(PHPWG_ROOT_PATH.$image_path); $writeOK = fwrite($fp, $exifCmdN.$this->eol) !== FALSE; if ($writeOK) $this->nbfiles++; if ($has_high) { $imageHigh = dirname($image_path) . "/pwg_high/" . basename($image_path); if (file_exists($imageHigh)) { $this->write_exifCmd($exifCmd, $imageHigh, false, $fp); } } }
J'ai essayé plusieurs combines sans résultats.
Une fois que ce dernier point sera réglé, il ne me restera plus qu'à revoir l'interface de l'administrateur.
Hors ligne
Où ? Je ne vois pas ce que tu cherches à faire.
Si tu as ta commande dans la variable $commande et que t veux mettre des guillemets tu peux par exemple faire :
$commande = sprintf('"%s"', $commande);
Hors ligne
J'ai l'impression que c'est le morceau :
realpath(PHPWG_ROOT_PATH.$image_path)
Hors ligne
Je change un peu de sujet mais je reste dans le PHP.
C'est ma dernière barrière avant d'obtenir une bonne modification du plugin de Rub (DotClearEasy) destiné à proposer des liens comme par exemple chez imageshack.
Je recherche un moyen de récupérer la catégorie dans laquelle se trouve une image.
Concrètement, je suis en train de me balader dans ma galerie et je visualise une photo. Je viens d'une seule catégorie. C'est cette dernière qui m'intéresse !
Avec un template-extension de picture_content.tpl je pouvais le faire via {U_UP} mais en php je n'en sais rien du tout.
Je précise quand même que c'est lors de l'ouverture d'une pop-up que j'ai besoin de ce chemin.
Je vais dire de grosses âneries mais j'ai cherché dans les directions suivantes :
duplicate_picture_url( array( 'section' => 'categories' ));
duplicate_picture_url( array( 'image_category' => $row['category_id'], ));
Si vous voyez ce que je veux dire, je suis tout ouïe.
Merci
Hors ligne
J'ai besoin d'un bon coup mains sur une variable.
Pour les besoins de mon premier plugin [extension by Gotcha] PiwiShack je cherche à obtenir la même chose que la variable {$U_UP} dans un template. Auparavant, je parvenais donc à mes fins via {$U_UP} mais pour mon plugin, en PHP, je sèche.
Allé allé ! Après ça je suis en mesure de livrer ma Release Canditate !!!
Merci pour l'aide.
:-)
Hors ligne
Ne cherchez plus, j'ai trouvé :D
Merci à ddtddt qui était le plus proche :-)
Hors ligne