获取Flickr RecentActivity图像

时间:2013-05-02 08:11:15

标签: ios objective-c flickr objectiveflickr

我想从flickr应用程序中检索Recent Activity图像,请任何人建议我如何检索它。提前谢谢。

1 个答案:

答案 0 :(得分:0)

这不是最好的方法,但我会为您提供一种在flickr上检索最近图片的方法。 Standford iTunesU有一些与此相关的讲座。我从他们那里得到了几乎所有的信息。以下是课程材料的链接:

http://www.stanford.edu/class/cs193p/cgi-bin/drupal/

对于基本的非多线程版本,请参阅第10讲,并下载 Shutterbug Universal 。您还需要一个flickr API密钥,您现在可以在此处获取:

http://www.flickr.com/services/api/misc.api_keys.html

我将尝试为您概述如何完成您的请求,特别是因为这些链接中的任何一个可能不会存在很长时间。

您需要创建一个类FlickrFetcher或其他东西,然后使用公共类方法

 + (NSArray *)latestGeoreferencedPhotos;

实施

+ (NSArray *)latestGeoreferencedPhotos
{
    NSString *request = [NSString stringWithFormat:@"http://api.flickr.com/services/rest/?method=flickr.photos.search&per_page=500&license=1,2,4,7&has_geo=1&extras=original_format,tags,description,geo,date_upload,owner_name,place_url"];
    return [[self executeFlickrFetch:request] valueForKeyPath:@"photos.photo"];
}

实施executeFlickrFetch的地方:

+ (NSDictionary *)executeFlickrFetch:(NSString *)query
{
    query = [NSString stringWithFormat:@"%@&format=json&nojsoncallback=1&api_key=%@", query, FlickrAPIKey];
    query = [query stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    NSData *jsonData = [[NSString stringWithContentsOfURL:[NSURL URLWithString:query] encoding:NSUTF8StringEncoding error:nil] dataUsingEncoding:NSUTF8StringEncoding];
    NSError *error = nil;
    NSDictionary *results = jsonData ? [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers|NSJSONReadingMutableLeaves error:&error] : nil;
    if (error) NSLog(@"[%@ %@] JSON error: %@", NSStringFromClass([self class]), NSStringFromSelector(_cmd), error.localizedDescription);
    return results;
}

您需要获取API密钥并定义它(#define FlickrAPIKey @"myAPIkey")或直接将其插入此处。

在斯坦福大学课程中,他们从TVC子类中调用latestGeoreferencedPhotos并在viewDidLoad中设置一系列照片:

// photos is a defined property
self.photos = [FlickrFetcher latestGeoreferencedPhotos];

然后在照片设定器中,他们重新加载一个显示图像的tableView:

- (void)setPhotos:(NSArray *)photos
{
    _photos = photos;
    [self.tableView reloadData];
}

photos现在是一个字典数组,您可以通过以下操作访问特定的图像数据:

return [self.photos[row][@"title"] description]; // description because could be NSNull

我确实找到了一个可能很有价值的github资源: https://github.com/lukhnos/objectiveflickr。 我没有多看,但可能值得一试!

您的问题没有提供太多细节,所以我希望这个答案足以满足您的需求。