Page 88 - JavaScript修炼之道
P. 88

任务34  Flickr的同步更新         79


                   获取某人公开的照片


                    mashups/flickr/flickr.js

                   var FLICKR_ENDPOINT='http://api.flickr.com/services/feeds/photos_public.gne';
                   var FLICKR_USER_ID ='97027332@N00'; // 这是作者的ID
                   var item = new Template(
                     '<li><a href="#{target}"><img src="#{src}" title="#{title}" /></a></li>');

                   function jsonFlickrFeed(data) {
                     var stream = $('flickrStream'), d, dateStr;
                     data.items.each(function(photo) {
                       d = photo.published.split(/\D/);
                       dateStr = d[1] + '/' + d[2] + '/' + d[0];
                       stream.insert(item.evaluate({
                         src: photo.media.m.replace('_m', '_s'), target: photo.link,
                         title: 'Published on ' + dateStr + ' GMT'
                       }));
                     });
                     $('indicator').removeClassName('loading').update('Loaded!');
                   }

                   function loadFlickrPhotostream() {
                     var uri = FLICKR_ENDPOINT + '?format=json&id=' + FLICKR_USER_ID;
                     document.documentElement.firstChild.appendChild(
                       new Element('script', { type: 'text/javascript',
                         src: uri + '&r=' + Math.random() }));
                   }

                   JSON-P响应的部分内容

                   jsonFlickrFeed({
                     // ...
                     "items": [
                     {
                      "title": "P1010071",
                      "link": "http://www.flickr.com/photos/97027332@N00/4105961623/",
                      "media": {
                        "m":"http://farm3.static.flickr.com/2638/4105961623_ec0ca9c164_m.jpg"
                      },
                      "date_taken": "2009-11-12T15:38:21-08:00",
                      // ...
                      "published": "2009-11-15T18:54:21Z",
                      // ...
                     },
                     // ...
                     ]
                   })
   83   84   85   86   87   88   89   90   91   92   93