API呼び出しまたはスクリプトを介してflickr URLから静的画像URLを取得することは可能ですか?
例:
Flickr URL-> http://www.flickr.com/photos/53067560@N00/2658147888/in/set-72157606175084388/
静的画像のURL-> http://farm4.static.flickr.com/3221/2658147888_826edc8465.jpg
FlickrのURLでは、写真IDは2658147888です。 flickr.photos.getSizes を使用して、利用可能な写真のさまざまなサイズを取得し、サイズに応じて、そこから必要なURLを選択します。 APIにアクセスするにはいくつかの方法がありますので、特定の言語の詳細が必要かどうかを指定してください。
extras=url_o
を指定すると、元の画像へのリンクが表示されます。
https://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=YOURAPIKEY&format=json&nojsoncallback=1&text=cats&extras=url_o
縮小画像の場合、次のパラメーターを使用します:url_t, url_s, url_q, url_m, url_n, url_z, url_c, url_l
または、URLを作成することもできます 説明どおり :
http://farm{farm-id}.staticflickr.com/{server-id}/{id}_{secret}.jpg
or
http://farm{farm-id}.staticflickr.com/{server-id}/{id}_{secret}_[mstzb].jpg
1回のAPI呼び出しで直接取得できるかどうかはわかりませんが、このリンクは画像のURLがどのように構成されるかを説明しています: link
また、photoId(最初のアンダースコアの前の番号)を使用して元の画像にアクセスすることもできます。
http://flickr.com/photo.gne?id=photoId
あなたの場合は次のようになります:
IDに基づいてFlickr写真からメタデータを取得するために私が書いたコードは次のとおりです。
最初に、写真のメタデータを保持するJavaScriptオブジェクトFlickrPhoto
を定義しました。
function FlickrPhoto(title, owner, flickrURL, imageURL) {
this.title = title;
this.owner = owner;
this.flickrURL = flickrURL;
this.imageURL = imageURL;
}
次に、FlickrService
オブジェクトを作成して、 Flickr APIキー とRESTful APIへのすべてのajax呼び出しを保持します。
getPhotoInfo
関数はPhoto IDをパラメーターとして受け取り、適切なajax呼び出しを作成して、次を含むFlickrPhoto
オブジェクトを渡しますcallback関数への写真メタデータ。
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);
}
}
その後、次のようにサービスを使用できます。
var photoId = "11837138576";
var flickrService = new FlickrService();
flickrService.getPhotoInfo(photoId, function(photo) {
console.log(photo.imageURL);
console.log(photo.owner);
});
それが役に立てば幸い。
Flickr-apisを使用しないソリューションの下では、標準のLinuxコマンドのみ(実際には、MS-Windowsで Cygwin を使用して実行しました):
ここでは、スクリプトを使用して、探索の開始点として使用できます。
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";