sesion - flickr ç
¿Cómo obtener url de imagen estática desde la URL de flickr? (6)
Aquí hay un código que escribí para recuperar metadatos de una foto de Flickr basada en su ID:
Primero FlickrPhoto
un objeto javascript FlickrPhoto
para contener los metadatos de la foto:
function FlickrPhoto(title, owner, flickrURL, imageURL) {
this.title = title;
this.owner = owner;
this.flickrURL = flickrURL;
this.imageURL = imageURL;
}
Luego creé un objeto FlickrService
para guardar mi clave de API de Flickr y todas mis llamadas ajax a la API RESTful.
La función getPhotoInfo
toma la identificación con foto como parámetro, construye la llamada ajax apropiada y pasa un objeto FlickrPhoto
que contiene los metadatos de la foto a una función de devolución de llamada .
function FlickrService() {
this.flickrApiKey = "763559574f01aba248683d2c09e3f701";
this.flickrGetInfoURL = "https://api.flickr.com/services/rest/?method=flickr.photos.getInfo&nojsoncallback=1&format=json";
this.getPhotoInfo = function(photoId, callback) {
var ajaxOptions = {
type: ''GET'',
url: this.flickrGetInfoURL,
data: { api_key: this.flickrApiKey, photo_id: photoId },
dataType: ''json'',
success: function (data) {
if (data.stat == "ok") {
var photo = data.photo;
var photoTitle = photo.title._content;
var photoOwner = photo.owner.realname;
var photoWebURL = photo.urls.url[0]._content;
var photoStaticURL = "https://farm" + photo.farm + ".staticflickr.com/" + photo.server + "/" + photo.id + "_" + photo.secret + "_b.jpg";
var flickrPhoto = new FlickrPhoto(photoTitle, photoOwner, photoWebURL, photoStaticURL);
callback(flickrPhoto);
}
}
};
$.ajax(ajaxOptions);
}
}
A continuación, puede utilizar el servicio de la siguiente manera:
var photoId = "11837138576";
var flickrService = new FlickrService();
flickrService.getPhotoInfo(photoId, function(photo) {
console.log(photo.imageURL);
console.log(photo.owner);
});
Espero eso ayude.
¿Es posible obtener una URL de imagen estática desde la URL de flickr a través de una llamada a la API o algún script?
Por ejemplo:
URL de Flickr -> http://www.flickr.com/photos/53067560@N00/2658147888/in/set-72157606175084388/
URL de imagen estática -> http://farm4.static.flickr.com/3221/2658147888_826edc8465.jpg
Debajo de una solución sin usar flickr-apis, solo comandos estándar de Linux (en realidad lo ejecuté en MS Windows con Cygwin ):
- Pon tu lista de URLs en la variable tmp
- Si está descargando fotos privadas como yo, el protocolo será https y tendrá que pasar las cookies de autenticación a wget . Me conecto con un navegador (Chrome) y exporté el archivo de cookies con una extension
- Si accede a las URL públicas, simplemente elimine el parámetro --load-cookies $ cookies
- El script descarga en la carpeta local las fotos en su formato original.
- Si solo desea la URL de la imagen estática, elimine el último comando | xargs wget - cargar-cookies $ cookies
Aquí el script, puede usarlo como un comienzo para sus exploraciones:
cookies=~/cookies.txt
root="https://www.flickr.com/photos/131469243@N02/"
tmp="https://www.flickr.com/photos/131469243@N02/29765108124/in/album-72157673986011342/
https://www.flickr.com/photos/131469243@N02/29765103724/in/album-72157673986011342/
https://www.flickr.com/photos/131469243@N02/29765102344/in/album-72157673986011342/"
while read -r url; do
if [[ $url == http* ]] ;
then
url2=$root`echo -n $url | grep -oP ''(?<=https://www.flickr.com/photos/131469243@N02/)/w+''`/sizes/o
wget -q --load-cookies $cookies -O - $url2 | grep -io ''https://c[0-9].staticflickr.com.*_o_d.jpg'' | xargs wget --load-cookies $cookies
fi
done <<< "$tmp";
En su URL de Flickr, la identificación con foto es 2658147888. Usted usa flickr.photos.getSizes para obtener los diferentes tamaños de la foto disponible, y elija la url que desee, dependiendo del tamaño. Hay varias formas de acceder a la API, por favor especifique si desea más detalles para un idioma en particular.
No estoy seguro de poder obtenerlo directamente a través de una sola llamada a la API, pero este enlace explica cómo se construyen las URL de las imágenes: flickr.com/services/api/misc.urls.html
También puede acceder a la imagen original usando photoId (número antes del primer subrayado)
http://flickr.com/photo.gne?id=photoId
En tu caso sería:
Al especificar extras=url_o
, obtendrá un enlace a la imagen original:
https://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=YOURAPIKEY&format=json&nojsoncallback=1&text=cats&extras=url_o
Para imágenes de escala reducida, utilice los siguientes parámetros: url_t, url_s, url_q, url_m, url_n, url_z, url_c, url_l
Alternativamente, puede construir la URL como se describe :
http://farm{farm-id}.staticflickr.com/{server-id}/{id}_{secret}.jpg
or
http://farm{farm-id}.staticflickr.com/{server-id}/{id}_{secret}_[mstzb].jpg