forked from galdomedia/jquery.links2objects
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathjquery.links2objects-0.1.js
109 lines (97 loc) · 3.7 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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
(function($){
$.fn.links2objects = function(options) {
var defaults = {
sites: ['youtube', 'flickr', 'vimeo'],
flickr_size: 'medium',
flickr_api_key: '',
youtube_video_width: 560,
youtube_video_height: 340,
vimeo_video_width: 560,
vimeo_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 vimeo = function(html){
var link_regexp = /http:\/\/(www\.)?vimeo\.com\/([0-9]+)/gi;
var m = html.match(link_regexp);
if(!m || m.length == 0) return;
for(var i = (m.length - 1); i>=0; i--){
var url = m[i];
var json_url = 'http://vimeo.com/api/oembed.json';
json_url += '?url=' + url;
json_url += '&width=' + options.vimeo_video_width;
json_url += '&height=' + options.vimeo_video_height;
json_url += '&callback=?';
(function(){
var u = url;
$.getJSON(json_url, function(data){
var html = data.html;
global_obj.html(global_obj.html().replace(u, html));
});
})();
}
};
var sites_functions = {'flickr': flickr, 'picasa': this.picasa, 'youtube': youtube, 'vimeo': vimeo };
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);