Les boucles FpipR : Flickr pour SPIP

Boucles SPIP pour accéder aux fonctionnalités de l’API Flick depuis vos squelettes.

La plupart des boucles disponible depuis l’API Flickr sont disponibles comme boucle SPIP avec des balises et critères correspondant aux champs décrit dans la documentation de l’API Flickr.

Avant propos

Un mot sur les performances

Attention, essayez de bien comprendre cette partie si vous ne voulez pas avoir des problèmes avec vos utilisateurs et l’administrateur de votre serveur. En résumé, pensez à mettre des valeurs de durée de cache intelligentes et de bien diviser vos squelettes pour éviter de surcharger votre serveur avec des recalcules trop réguliers.

Chaque boucle demande au moins une requête au serveur Flickr par boucle. Quand vous utilisez une boucle FpipR, le plugin va faire une demande au serveur Flickr pour récupérer les informations que vous demandez.
Elles seront alors stockées temporairement dans une table visible par SPIP qui pourra alors boucler dessus.

Chaque requête au serveur Flickr est bloquante et peut prendre du temps (il s’agit d’un téléchargement de données à travers internet), il faut donc éviter d’en faire trop souvent et beaucoup en même temps. Une bonne idée pour éviter les mauvaises expériences est de :

  1. utiliser des délais de cache élevé,
  2. diviser le squelette en inclusions qui ont des délais différents pour éviter de tout recalculer en même temps.

Authentification

Certaines boucles demande d’être identifié. En effet, Flickr offre différent niveau de droits d’accès au photos en fonction de votre relation avec leur propriétaire.

Chaque auteur connecté au site SPIP et ayant configuré sa connection avec Flickr dans l’espace privé aura accès à un cache différent de la page et on peut ainsi proposer des squelettes gérant correctement les droits Flickr.

Balises spéciales

  • #FLICKR_PHOTO_ID, #FLICKR_PHOTO_SECRET :
    FpipR permet d’ajouter des documents aux articles comme documents distant. Pour savoir si un document retourné par une boucle DOCUMENTS est une image Flickr, on peut utiliser ces balises, qui pourront aussi être utilisées comme paramètre pour les boucles FPIPR.
  • #FPIPR_EXISTS : cette balise permet de savoir si le plugin est installé. Si le plugin n’est pas installé, cette balise ne retournera rien. On peut ainsi faire des squelettes qui feront des inclusions spécifiques si le plugin est installé.
  • #PAGINATION_FLICKR : la balise de pagination SPIP ne fonctionne pas correctement avec les boucles FpipR. Quand on fait une boucle FpipR avec critère {pagination}, il faut utiliser cette balise à la place de la balise #PAGINATION

Documentation partielle

Le plugin FpipR ajoute 35 nouvelles boucles et un grand nombre de balises et critères associés. La documentation de toutes ces fonctionalités n’est pas encore complète, mais chaque boucle correspond à peu prêt à une méthode de l’API Flickr. Pour savoir ce que la boucle fait, allez lire la documentation de l’API Flickr (en anglais pour l’instant). Si vous voulez aider à documenter tout cela, connecter vous ici et proposer des nouvelles documentations.

Cette boucle implante la méthode : flickr.photos.search On peut l’utiliser pour chercher des photos. ATTENTION, il faut absolument spécifier au moins un critère précisant la recherche si on veut que la boucle retourne des résultats.

Critères

Les critères correspondent aux paramètres de la méthode Flickr.

Les critères suivant peuvent être utilisés comme les critères standard de SPIP : {user_id=#FLICKR_NSID} ou {upload_date < #DATE} par exemple. Ils peuvent aussi être utiliser dans des tris

  • {user_id}
  • {license}
  • {upload_date}
  • {taken_date}

Les critères suivant sont « spéciaux » et prennent leur paramètre directement : {tags spip, gateau} par exemple

  • {tags}
  • {tag_mode}
  • {text}
  • {privacy_filter}
    • 1 public photos
    • 2 private photos visible to friends
    • 3 private photos visible to family
    • 4 private photos visible to friends & family
    • 5 completely private photos
  • {safe_search}
  • {content_type}
  • {machine_tags} voir http://www.flickr.com/groups/api/di...
  • {machine_tag_mode} par defaut ’any’
  • {bbox} limitation geographique de la recherche, separé par des :, longitude minimum, latitude minimum, longitude max, latitude max
  • {accuracy}

Les critères suivant peuvent être spécifié pour les tri : {par date_posted} , {par date_taken} , {par interestingness} , {par relevance} (dans le cas d’une recherche).

Balises

  • #ID_PHOTO id de la photo
  • #USER_ID nsid de l’utilisateur
  • #SECRET secret de la photo pour construire l’url et obtenir plus d’info
  • #SERVER le server où la photo se trouve
  • #TITLE le titre de la photo
  • #ISPUBLIC 1 si la photo est publique, 0 sinon
  • #ISFRIEND 1 si la photo est accessible aux amis, 0 sinon
  • #ISFAMILY 1 si la photo est accessible à la famille, 0 sinon
  • #ORIGINALFORMAT l’extension du fichier original
  • #LICENSE la « license » (voir les valeurs ici)
  • #UPLOAD_DATE quand la photo a été postée sur Flickr
  • #TAKEN_DATE quand la photo a été prise, si dispo dans les infos EXIF
  • #ONWER_NAME le nom de l’utilisateur
  • #ICON_SERVER le serveur où trouver l’icone de l’utilisateur
  • #LAST_UPDATE date de dernière modification des données de la photo
  • #LONGITUDE
  • #LATITUDE
  • #ACCURACY la précision de l’info géographique :
    • 1 niveau global
    • 3 niveau d’un pays
    • 6 niveau d’une région
    • 11 niveau d’une ville
    • 16 niveau de la rue

Balises Calculées

(c.f. http://www.flickr.com/services/api/... et http://www.flickr.com/services/api/...

  • #URL_PHOTO l’url de la photo
  • #URL_OWNER l’url du photographe
  • #LOGO_PHOTO retourne l’image taille moyenne (500px sur le côté le plus long), sauf si on lui passe un paramètre :
    • s petit carre 75x75
    • t vignette, 100px sur le côté le plus long
    • m petite, 240px sur le côté le plus long
    • b large, 1024px sur le côté le plus long (seulement si o est très large)
    • o image originale, jpg, png ou gif en fonction de #ORIGINALFORMAT
  • #LOGO_OWNER le logo du photographe

Boucle FLICKR_PHOTOS_GETINFO

Retourne des informations complémentaires sur une photo. (voir : http://www.flickr.com/services/api/...)

Critères

  • On doit absolument spécifier le critère {id_photo}
  • On peut aussi spécifier le critère {secret}

Balises

  • #ID_PHOTO
  • #SECRET
  • #SERVER
  • #ISFAVORITE
  • #LICENSE
  • #ROTATION la rotation effectue automatiquement sur l’image
  • #ORIGINALFORMAT
  • #USER_ID
  • #OWNER_USERNAME le username flickr du photographe
  • #OWNER_REALNAME le nom réel du photographe
  • #OWNER_LOCATION où le photographe vit
  • #TITLE
  • #DESCRIPTION
  • #ISPUBLIC
  • #ISFRIEND
  • #ISFAMILY
  • #DATE_POSTED
  • #DATE_TAKEN
  • #DATE_LASTUPDATE
  • #COMMENTS Le nombre de commentaires sur la photo
  • #LATITUDE
  • #LONGITUDE
  • #ACCURACY

Balises Calculées

Identiques à la boucle précédente

Boucle FLICKR_PHOTO_TAGS

CETTE BOUCLE N’EST DISPONIBLE QUE DANS UNE BOUCLE FLICKR_PHOTOS_GETINFO

Retourne la liste de tag d’une photo

Critère

Pas de critères spécifique

Balises

  • #ID_TAG
  • #AUTHOR le nsid de l’auteur qui a ajouté le tag sur la photo
  • #RAW la version normale du tag (avec espace, caractères spéciaux etc.)
  • #SAFE une version « sûre » du tag, qu’on peut utiliser dans des urls, etc.
  • #ID_PHOTO

Boucle FLICKR_PHOTO_NOTES

CETTE BOUCLE N’EST DISPONIBLE QUE DANS UNE BOUCLE FLICKR_PHOTOS_GETINFO

Retourne la liste des notes sur une photo

Critère

Pas de critères spécifique

Balises

  • #ID_NOTE
  • #AUTHOR le nsid de l’auteur qui a ajouté la note sur la photo
  • #AUTHOR_NAME le username de l’auteur qui a ajouté la note sur la photo
  • #X #Y les coordonnées du coin en haut à gauche
  • #WIDTH #HEIGHT Les dimensions de la note
  • #TEXTE le texte de la note
  • #ID_PHOTO

Boucle FLICKR_PHOTO_URLS

CETTE BOUCLE N’EST DISPONIBLE QUE DANS UNE BOUCLE FLICKR_PHOTOS_GETINFO

Retourne la liste des urls d’une photo

Critères

Pas de critères spécifique

Balises

  • #TYPE le type de l’url
  • #URL l’url
  • #ID_PHOTO

Boucle FLICKR_PHOTOSETS_GETLIST

Retourne la liste des sets d’un utilisateur

Critère

  • user_id l’identifiant flickr (nsid) de l’utilisateur

Balises

  • #ID_PHOTOSET
  • #USER_ID le nsid de l’auteur qui a ajouté le tag sur la photo
  • #PRIMARY_PHOTO l’id de la photo illustrant le set
  • #SECRET le secret de cette photo
  • #SERVER le serveur de cette photo
  • #PHOTOS le nombre de photos dans le set
  • #TITLE
  • #DESCRIPTION

Balises calculées

  • #LOGO_PHOTOSET le logo du photoset (la « primary » image, prend les memes paramètre que la balise #LOGO_PHOTO sauf ’o’)
  • #URL_PHOTOSET

Boucle FLICKR_PHOTOSETS_GETPHOTOS

Retourne les photos dans un set

Critères

  • {id_photoset} l’id du photoset
  • {privacy_filter} pas testé

Balises

Un sous set des balises de FLICKR_PHOTOS_SEARCH, mais on peut imbriquer une boucle FLICKR_PHOTOS_GETINFO à l’intérieur pour avoir plus de détails.

  • #ID_PHOTO
  • #SECRET
  • #SERVER
  • #LICENSE
  • #DATE_UPLOAD
  • #DATE_TAKEN
  • #OWNER_NAME
  • #ICON_SERVER
  • #ORIGINAL_FORMAT
  • #LAST_UPDATE

Balises Calculées

  • #URL_PHOTO l’url de la photo
  • #LOGO_PHOTO retourne l’image taille moyenne (500px sur le côté le plus long), sauf si on lui passe un paramètre :
    • s petit carre 75x75
    • t vignette, 100px sur le côté le plus long
    • m petite, 240px sur le côté le plus long
    • b large, 1024px sur le côté le plus long (seulement si o est très large)
    • o image originale, jpg, png ou gif en fonction de #ORIGINALFORMAT

Balises a utiliser quand #ID_PHOTO est disponible

Voici des balises, correspondantes aux informations fournis par la méthode : flickr.photos.getContext. Elles peuvent être utilisées dans n’importe quelle boucle qui fournit un #ID_PHOTO

  • #PHOTOS_COUNT le total de photos de l’utilisateur possédant cette photo
  • #PREVPHOTO_ID l’id de la photo précédente dans le photostream
  • #PREVPHOTO_SERVER le serveur de la photo précédente dans le photostream
  • #PREVPHOTO_SECRET le secret de la photo précédente dans le photostream
  • #PREVPHOTO_TITLE le titre de la photo précédente dans le photostream
  • #URL_PREVPHOTO l’url de la page de la photo précédente dans le photostream
  • #PREVPHOTO_THUMB l’url de la vignette de la photo précédente dans le photostream
  • #LOGO_PREVPHOTO le logo de la photo précédente dans le photostream (prend un parametre comme les autres balises logo, sauf ’o’)
  • #NEXTPHOTO_ID l’id de la photo suivante dans le photostream
  • #NEXTPHOTO_SERVER le serveur de la photo suivante dans le photostream
  • #NEXTPHOTO_SECRET le secret de la photo suivante dans le photostream
  • #NEXTPHOTO_TITLE le titre de la photo suivante dans le photostream
  • #URL_NEXTPHOTO l’url de la page de la photo suivante dans le photostream
  • #NEXTPHOTO_THUMB l’url de la vignette de la photo suivante dans le photostream
  • #LOGO_NEXTPHOTO le logo de la photo suivante dans le photostream (prend un paramètre comme les autres balises logo, sauf ’o’)

Toutes les boucles

Voir http://www.flickr.com/services/api/ pour les détails. La plupart des boucles prennent les même critères que les méthodes décrites dans ces pages.

  • FLICKR_CONTACTS_GETLIST
  • FLICKR_CONTACTS_GETPUBLICLIST
  • FLICKR_FAVORITES_GETLIST
  • FLICKR_FAVORITES_GETPUBLICLIST
  • FLICKR_GROUPS_GETINFO
  • FLICKR_GROUPS_POOLS_GETGROUPS
  • FLICKR_GROUPS_POOLS_GETPHOTOS
  • FLICKR_INTERESTINGNESS_GETLIST
  • FLICKR_PEOPLE_GETINFO
  • FLICKR_PEOPLE_GETPUBLICGROUPS
  • FLICKR_PHOTO_NOTES
  • FLICKR_PHOTO_TAG
  • FLICKR_PHOTO_URLS
  • FLICKR_PHOTOS_COMMENTS_GETLIST
  • FLICKR_PHOTOS_GETALLCONTEXTS
  • FLICKR_PHOTOS_GETCONTACTSPHOTOS
  • FLICKR_PHOTOS_GETCONTACTSPUBLICPHOTOS
  • FLICKR_PHOTOS_GETEXIF
  • FLICKR_PHOTOS_GETINFO
  • FLICKR_PHOTOS_GETNOTINSET
  • FLICKR_PHOTOS_GETRECENT
  • FLICKR_PHOTOS_GETUNTAGGED
  • FLICKR_PHOTOS_GETWITHGEODATA
  • FLICKR_PHOTOS_GETWITHOUTGEODATA
  • FLICKR_PHOTOS_RECENTLYUPDATED
  • FLICKR_PHOTOS_SEARCH
  • FLICKR_PHOTOSETS_COMMENTS_GETLIST
  • FLICKR_PHOTOSETS_GETLIST
  • FLICKR_PHOTOSETS_GETPHOTOS
  • FLICKR_TAGS_GETHOTLIST
  • FLICKR_TAGS_GETLISTPHOTO
  • FLICKR_TAGS_GETLISTUSER
  • FLICKR_TAGS_GETLISTUSERPOPULAR
  • FLICKR_TAGS_GETLISTUSERRAW
  • FLICKR_TAGS_GETRELATED
  • FLICKR_URLS_LOOKUPGROUP
  • FLICKR_URLS_LOOKUPUSER

Toutes les balises calculées

TODO : Il faut encore trier ces balises pour les associer aux bonnes boucles dans la doc

  • #ACCURACY
  • #FLICKR_PHOTO_ID
  • #FLICKR_PHOTO_SECRET
  • #ID_GROUP
  • #ID_PHOTOSET
  • #ISFAMILY
  • #ISFRIEND
  • #ISPUBLIC
  • #LATITUDE
  • #LOGO_CONTACT
  • #LOGO_GROUP
  • #LOGO_NEXTPHOTO
  • #LOGO_OWNER
  • #LOGO_PHOTO
  • #LOGO_PHOTOSET
  • #LOGO_PREVPHOTO
  • #LONGITUDE
  • #NEXTPHOTO_ID
  • #NEXTPHOTO_SECRET
  • #NEXTPHOTO_SERVER
  • #NEXTPHOTO_THUMB
  • #NEXTPHOTO_TITLE
  • #PHOTOS_COUNT
  • #PREVPHOTO_ID
  • #PREVPHOTO_SECRET
  • #PREVPHOTO_SERVER
  • #PREVPHOTO_THUMB
  • #PREVPHOTO_TITLE
  • #URL_GROUP
  • #URL_NEXTPHOTO
  • #URL_OWNER
  • #URL_PHOTO
  • #URL_PHOTOSET
  • #URL_PREVPHOTO
  • #URL_USERPHOTOS
  • #URL_USERPROFILE

Toutes les balises/critères pour limiter dans les tables

TODO trier, expliquer

  • {id_photo} / #ID_PHOTO
  • {user_id} / #USER_ID
  • {secret} / #SECRET
  • {server} / #SERVER
  • {title} / #TITLE
  • {ispublic} / #ISPUBLIC
  • {isfriend} / #ISFRIEND
  • {isfamily} / #ISFAMILY
  • {originalformat} / #ORIGINALFORMAT
  • {license} / #LICENSE
  • {upload_date} / #UPLOAD_DATE
  • {taken_date} / #TAKEN_DATE
  • {owner_name} / #OWNER_NAME
  • {icon_server} / #ICON_SERVER
  • {last_update} / #LAST_UPDATE
  • {latitude} / #LATITUDE
  • {longitude} / #LONGITUDE
  • {accuracy} / #ACCURACY
  • {rang} / #RANG
  • {id_photoset} / #ID_PHOTOSET
  • {id_group} / #ID_GROUP
  • {added_date} / #ADDED_DATE
  • {field} / #FIELD
  • {id_photo} / #ID_PHOTO
  • {secret} / #SECRET
  • {server} / #SERVER
  • {isfavorite} / #ISFAVORITE
  • {license} / #LICENSE
  • {rotation} / #ROTATION
  • {originalformat} / #ORIGINALFORMAT
  • {user_id} / #USER_ID
  • {owner_username} / #OWNER_USERNAME
  • {owner_realname} / #OWNER_REALNAME
  • {owner_location} / #OWNER_LOCATION
  • {title} / #TITLE
  • {description} / #DESCRIPTION
  • {ispublic} / #ISPUBLIC
  • {isfriend} / #ISFRIEND
  • {isfamily} / #ISFAMILY
  • {date_posted} / #DATE_POSTED
  • {date_taken} / #DATE_TAKEN
  • {date_lastupdate} / #DATE_LASTUPDATE
  • {comments} / #COMMENTS
  • {latitude} / #LATITUDE
  • {longitude} / #LONGITUDE
  • {accuracy} / #ACCURACY
  • {field} / #FIELD
  • {id_tag} / #ID_TAG
  • {author} / #AUTHOR
  • {raw} / #RAW
  • {safe} / #SAFE
  • {id_photo} / #ID_PHOTO
  • {score} / #SCORE
  • {count} / #COUNT
  • {field} / #FIELD
  • {id_note} / #ID_NOTE
  • {id_photo} / #ID_PHOTO
  • {author} / #AUTHOR
  • {authorname} / #AUTHORNAME
  • {x} / #X
  • {y} / #Y
  • {width} / #WIDTH
  • {height} / #HEIGHT
  • {texte} / #TEXTE
  • {field} / #FIELD
  • {type} / #TYPE
  • {id_photo} / #ID_PHOTO
  • {url} / #URL
  • {field} / #FIELD
  • {id_photoset} / #ID_PHOTOSET
  • {user_id} / #USER_ID
  • {primary_photo} / #PRIMARY_PHOTO
  • {secret} / #SECRET
  • {server} / #SERVER
  • {photos} / #PHOTOS
  • {title} / #TITLE
  • {description} / #DESCRIPTION
  • {field} / #FIELD
  • {id_contexte} / #ID_CONTEXTE
  • {title} / #TITLE
  • {type} / #TYPE
  • {id_photo} / #ID_PHOTO
  • {field} / #FIELD
  • {id_comment} / #ID_COMMENT
  • {user_id} / #USER_ID
  • {authorname} / #AUTHORNAME
  • {date_create} / #DATE_CREATE
  • {permalink} / #PERMALINK
  • {texte} / #TEXTE
  • {id_photo} / #ID_PHOTO
  • {id_photoset} / #ID_PHOTOSET
  • {field} / #FIELD
  • {id_group} / #ID_GROUP
  • {user_id} / #USER_ID
  • {admin} / #ADMIN
  • {eighteenplus} / #EIGHTEENPLUS
  • {iconserver} / #ICONSERVER
  • {name} / #NAME
  • {description} / #DESCRIPTION
  • {members} / #MEMBERS
  • {privacy} / #PRIVACY
  • {throttle_count} / #THROTTLE_COUNT
  • {throttle_mode} / #THROTTLE_MODE
  • {throttle_remaining} / #THROTTLE_REMAINING
  • {photos} / #PHOTOS
  • {field} / #FIELD
  • {user_id} / #USER_ID
  • {isadmin} / #ISADMIN
  • {ispro} / #ISPRO
  • {iconserver} / #ICONSERVER
  • {username} / #USERNAME
  • {realname} / #REALNAME
  • {location} / #LOCATION
  • {url_photos} / #URL_PHOTOS
  • {url_profile} / #URL_PROFILE
  • {date_firstphoto} / #DATE_FIRSTPHOTO
  • {date_taken_firstphoto} / #DATE_TAKEN_FIRSTPHOTO
  • {photos_count} / #PHOTOS_COUNT
  • {ignored} / #IGNORED
  • {family} / #FAMILY
  • {friend} / #FRIEND
  • {field} / #FIELD
  • {id_photo} / #ID_PHOTO
  • {secret} / #SECRET
  • {server} / #SERVER
  • {tagspace} / #TAGSPACE
  • {tagspaceid} / #TAGSPACEID
  • {tag} / #TAG
  • {label} / #LABEL
  • {raw} / #RAW
  • {clean} / #CLEAN
  • {field} / #FIELD

Discussion

Aucune discussion

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom