34

API呼び出しまたはスクリプトを介してflickrURLから静止画像のURLを取得することは可能ですか?
例:
Flickr URL-> http://www.flickr.com/photos/53067560@N00/2658147888/in/set-72157606175084388/
静止画像URL-> http://farm4.static.flickr.com/3221/ 2658147888_826edc8465.jpg

4

6 に答える 6

59

指定する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
于 2014-05-28T12:04:01.543 に答える
34

FlickrのURLでは、写真IDは2658147888です。flickr.photos.getSizesを使用して、利用可能な写真のさまざまなサイズを取得し、サイズに応じて、そこから必要なURLを選択します。APIにアクセスする方法はいくつかあるので、特定の言語の詳細が必要かどうかを指定してください。

于 2009-11-26T12:36:17.020 に答える
6

photoId(最初の下線の前の数字)を使用して元の画像にアクセスすることもできます

http://flickr.com/photo.gne?id=photoId

あなたの場合は次のようになります。

https://www.flickr.com/photo.gne?id=2658147888

于 2016-09-16T12:54:52.813 に答える
5

単一のAPI呼び出しで直接取得できるかどうかはわかりませんが、このリンクでは、画像のURLがどのように構成されているかを説明しています:link

于 2009-11-26T12:11:41.703 に答える
3

IDに基づいてFlickrPhotoからメタデータを取得するために作成したコードは次のとおりです。

FlickrPhoto最初に、写真のメタデータを保持するjavascriptオブジェクトを定義しました。

function FlickrPhoto(title, owner, flickrURL, imageURL) {
    this.title = title;
    this.owner = owner;
    this.flickrURL = flickrURL;
    this.imageURL = imageURL;
}

次に、FlickrAPIキーとRESTfulAPIへのすべてのajax呼び出しをFlickrService保持するオブジェクトを作成しました。

このgetPhotoInfo関数は、写真IDをパラメーターとして受け取り、適切なajax呼び出しを作成しFlickrPhoto、写真メタデータを含むオブジェクトをコールバック関数に渡します。

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);
});

それが役に立てば幸い。

于 2015-01-28T19:10:18.153 に答える
0

flickr-apisを使用しないソリューションの下では、標準のLinuxコマンドのみ(実際には、Cygwinを使用してMS Windowsで実行しました):

  • URLのリストをtmp変数に入れます
  • 私のようなプライベート写真をダウンロードする場合、プロトコルはhttpsになり、認証Cookieをwgetに渡す必要があります。ブラウザ(Chrome)でログオンし、拡張子を使用してCookieファイルをエクスポートしました
  • パブリックURLにアクセスする場合は、パラメータ--load-cookies$cookiesを削除するだけです。
  • スクリプトは、ローカルフォルダに写真を元の形式でダウンロードします
  • 静止画像のURLだけが必要な場合は、最後のコマンド|を削除します。xargs wget --load-cookies $ cookies

ここでスクリプトを使用すると、探索の開始として使用できます。

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";
于 2017-01-19T20:17:06.190 に答える