How to get static image url from flickr URL?

前端 未结 7 1366
长情又很酷
长情又很酷 2020-12-24 01:40

Is it possible to get static image URL from the flickr URL via an api call or some script ?
For eg :
Flickr URL -> http://www.flickr.com/photos/53067560@N00/26581

7条回答
  •  不知归路
    2020-12-24 02:04

    Here's some code I wrote to retrieve metadata from a Flickr Photo based on its ID:

    I first defined a javascript object FlickrPhoto to hold the photo's metadata:

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

    I then created a FlickrService object to hold my Flickr API Key and all my ajax calls to the RESTful API.

    The getPhotoInfo function takes the Photo ID as parameter, constructs the appropriate ajax call and passes a FlickrPhoto object containing the photo metadata to a callback function.

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

    You can then use the service as follows:

    var photoId = "11837138576";
    var flickrService = new FlickrService();
    flickrService.getPhotoInfo(photoId, function(photo) {
        console.log(photo.imageURL);
        console.log(photo.owner);
    });
    

    Hope it helps.

提交回复
热议问题