-
Notifications
You must be signed in to change notification settings - Fork 1
/
jquery.links2objects-0.1.js
84 lines (75 loc) · 2.97 KB
/
jquery.links2objects-0.1.js
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
84
(function($){
$.fn.links2objects = function(options) {
var defaults = {
sites: ['youtube', 'flickr'],
flickr_size: 'medium',
flickr_api_key: '',
youtube_video_width: 560,
youtube_video_height: 340
};
var global_obj = null;
var options = $.extend(defaults, options);
var flickr = function(html){
var ret_dict = {}
var link_regexp = /http:\/\/www.flickr.com\/photos\/([a-z]+)\/(\d+)\/?/gi;
var m = html.match(link_regexp);
if(m){
var len = m.length;
for(var i = 0; i<m.length; i++){
var photo_id = m[i].match(/\d+/)[0];
var request_link = 'http://api.flickr.com/services/rest/?format=json&method=flickr.photos.getSizes&photo_id='+photo_id+'&api_key='+options.flickr_api_key+'&jsoncallback=?';
$.getJSON(request_link,
function(data){
if(data){
var sizes = data;
if(sizes.sizes && sizes.sizes.size && data.stat && data.stat=="ok"){
sizes = sizes.sizes.size;
var len2 = sizes.length;
for(var j=0;j<len2; j++){
if(sizes[j]["label"].toLowerCase()==options.flickr_size){
var old_link = sizes[j].url.match(link_regexp)[0];
var new_html = '<a href="'+old_link+'"><img src="'+sizes[j].source+'" /></a>';
global_obj.html(global_obj.html().replace(new RegExp(old_link), new_html));
}
}
}
}
}
);
}
}
}
var picasa = function(html){
var link_regexp = '';
}
var youtube = function(html){
var link_regexp = /http:\/\/(www\.)?youtube\.com\/watch\/?\?v=([a-z0-9\-_]+)(&[a-z]+=.*)*/gi;
var m = html.match(link_regexp);
if(m){
var len = m.length;
for(var i = 0; i<len; i++){
var video_id = m[i].match(/v=([a-zA-Z0-9\-_]+)/i);
if(video_id[1]){
video_id = video_id[1];
var new_html = "<object width=\""+options.youtube_video_width+"\" height=\""+options.youtube_video_height+"\"> \
<param name=\"movie\" value=\"http://www.youtube.com/v/"+video_id+"&fs=1&rel=0\"></param> \
<param name=\"allowFullScreen\" value=\"true\"></param><param name=\"allowscriptaccess\" value=\"always\"></param> \
<embed src=\"http://www.youtube.com/v/"+video_id+"&fs=1&rel=0\" type=\"application/x-shockwave-flash\" allowscriptaccess=\"always\" allowfullscreen=\"true\" width=\""+options.youtube_video_width+"\" height=\""+options.youtube_video_height+"\"></embed> \
</object>";
global_obj.html(global_obj.html().replace(m[i], new_html));
}
}
}
}
var sites_functions = {'flickr': flickr, 'picasa': this.picasa, 'youtube': youtube };
return this.each(function() {
obj = $(this);
global_obj = obj;
var body = obj.html();
for(var site in options.sites){
sites_functions[options.sites[site]](body);
}
//return this;
});
};
})(jQuery);