1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
/*
* Copyright (C) 2009 Joel Sutherland
* Licenced under the MIT license
* http://www.newmediacampaigns.com/page/jquery-flickr-plugin
*
* Available tags for templates:
* title, link, date_taken, description, published, author, author_id, tags, image*
*/
(function($) {
$.fn.jflickrfeed = function(settings, callback) {
settings = $.extend(true, {
flickrbase: '../../../api.flickr.com/services/feeds/default.htm',
feedapi: 'photos_public.gne',
limit: 20,
qstrings: {
lang: 'en-us',
format: 'json',
jsoncallback: '?'
},
cleanDescription: true,
useTemplate: true,
itemTemplate: '',
itemCallback: function(){}
}, settings);
var url = settings.flickrbase + settings.feedapi + '?';
var first = true;
for(var key in settings.qstrings){
if(!first)
url += '&';
url += key + '=' + settings.qstrings[key];
first = false;
}
return $(this).each(function(){
var $container = $(this);
var container = this;
$.getJSON(url, function(data){
$.each(data.items, function(i,item){
if(i < settings.limit){
// Clean out the Flickr Description
if(settings.cleanDescription){
var regex = /<p>(.*?)<\/p>/g;
var input = item.description;
if(regex.test(input)) {
item.description = input.match(regex)[2]
if(item.description!=undefined)
item.description = item.description.replace('<p>','').replace('</p>','');
}
}
// Add Image Sizes
// http://www.flickr.com/services/api/misc.urls.html
item['image_s'] = item.media.m.replace('_m', '_s');
item['image_t'] = item.media.m.replace('_m', '_t');
item['image_m'] = item.media.m.replace('_m', '_m');
item['image'] = item.media.m.replace('_m', '');
item['image_b'] = item.media.m.replace('_m', '_b');
delete item.media;
// Use Template
if(settings.useTemplate){
var template = settings.itemTemplate;
for(var key in item){
var rgx = new RegExp('{{' + key + '}}', 'g');
template = template.replace(rgx, item[key]);
}
$container.append(template)
}
//itemCallback
settings.itemCallback.call(container, item);
}
});
if($.isFunction(callback)){
callback.call(container, data);
}
});
});
}
})(jQuery);