OSDN Git Service

embr
[embrj/master.git] / js / mediaPreview.js
index 91829d3..7cbcf15 100644 (file)
-// Flash preview\r
-TUDOU_EMBED = '<br /><embed src="http://www.tudou.com/v/src_id" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" wmode="opaque" width="420" height="363"></embed>';\r
-XIAMI_EMBED = '<br /><embed src="http://www.xiami.com/widget/0_src_id/singlePlayer.swf" type="application/x-shockwave-flash" width="257" height="33" wmode="transparent"></embed>';\r
-YOUKU_EMBED = '<br /><embed src="http://player.youku.com/player.php/sid/src_id/v.swf" quality="high" width="480" height="400" align="middle" allowScriptAccess="allways" mode="transparent" type="application/x-shockwave-flash"></embed>';\r
-EMBED_FRAME = '';\r
-\r
-function getFlashReg(sSite) {\r
-       switch (sSite) {\r
-       case 'xiami':\r
-               EMBED_FRAME = XIAMI_EMBED;\r
-               return /[\S]+\.xiami\.com\/song\/([\d]+)[\S]*/i;\r
-               break;\r
-       case 'tudou':\r
-               EMBED_FRAME = TUDOU_EMBED;\r
-               return /[\S]+.tudou.[\S]+\/([\w-]+)[\S]*/i;\r
-               break;\r
-       default:\r
-               return null;\r
-       }\r
-}\r
-var previewFlash = function (obj) {\r
-       var reg = /http:\/\/[\w]+\.([\w]+)\.[\w]+/i;\r
-       var embed = "";\r
-       if (reg.exec(obj.text().toLowerCase()) !== null) {\r
-               var re = getFlashReg(RegExp.$1);\r
-               if (re !== null) {\r
-                       if (re.exec(obj.text()) !== null) {\r
-                               embed = EMBED_FRAME.replace(/src_id/, RegExp.$1);\r
-                               $(embed).appendTo(obj.parent());\r
-                       }\r
-               }\r
-       }\r
-}\r
-// Image preview\r
-COOKIE_NAME = "showpic_cookie";\r
-options = {\r
-       expires: 10\r
-};\r
-function get_img_processor(type) {\r
-\r
-       if (type.indexOf('phodroid.com') == 0) { //ugly fix for bloody Phodroid (which's the worst image hosting service ON EARTH) by @luosheng\r
-               return {\r
-               reg: /^http:\/\/(?:www\.)?phodroid\.com\/([\d\w\/]+)/,\r
-               func: function (url_key, url_elem) {\r
-               var src = "http://phodroid.s3.amazonaws.com/" + url_key[1] + ".jpg";\r
-               append_image(src, url_elem);\r
-               }\r
-               };\r
-       }\r
-\r
-       switch (type) {\r
-       case "twitgoo.com":\r
-               proc = {\r
-                       reg: /^http:\/\/(?:www\.)?twitgoo\.com\/([\d\w]+)/,\r
-                       func: function (url_key, url_elem) {\r
-                               var src = "https://zdxproxy.appspot.com/twitgoo.com/show/thumb/" + url_key[1];\r
-                               append_image(src, url_elem);\r
-                       }\r
-               };\r
-               return proc;\r
-       case "yfrog.com":\r
-               proc = {\r
-                       reg: /^http:\/\/(?:www\.)?yfrog\.com\/([\d\w]+)/,\r
-                       func: function (url_key, url_elem) {\r
-                               var src = url_key[0] + ".th.jpg";\r
-                               append_image(src, url_elem);\r
-                       }\r
-               };\r
-               return proc;\r
-       case "twitpic.com":\r
-               proc = {\r
-                       reg: /^http:\/\/(?:www\.)?twitpic\.com\/([\d\w]+)/,\r
-                       func: function (url_key, url_elem) {\r
-                               var src = "https://zdxproxy.appspot.com/twitpic.com/show/thumb/" + url_key[1];\r
-                               append_image(src, url_elem);\r
-                       }\r
-               };\r
-               return proc;\r
-       case "img.ly":\r
-               proc = {\r
-                       reg: /^http:\/\/(?:www\.)?img\.ly\/([\d\w]+)/,\r
-                       func: function (url_key, url_elem) {\r
-                               var src = "http://img.ly/show/thumb/" + url_key[1];\r
-                               append_image(src, url_elem);\r
-                       }\r
-               };\r
-               return proc;\r
-       case "ow.ly":\r
-               proc = {\r
-                       reg: /^http:\/\/(?:www\.)?ow\.ly\/i\/([\d\w]+)/,\r
-                       func: function (url_key, url_elem) {\r
-                               var src = "http://static.ow.ly/photos/thumb/" + url_key[1] + ".jpg";\r
-                               append_image(src, url_elem);\r
-                       }\r
-               };\r
-               return proc;\r
-       case "pic.gd":\r
-               proc = {\r
-                       reg: /^http:\/\/(?:www\.)?pic\.gd\/([\d\w]+)/,\r
-                       func: function (url_key, url_elem) {\r
-                               var src = "https://zdxproxy.appspot.com/TweetPhotoAPI.com/api/TPAPI.svc/imagefromurl?size=thumbnail&url=" + url_key[0];\r
-                               append_image(src, url_elem);\r
-                       }\r
-               };\r
-               return proc;\r
-       case "tweetphoto.com":\r
-               proc = {\r
-                       reg: /^http:\/\/(?:www\.)?tweetphoto\.com\/([\d\w]+)/,\r
-                       func: function (url_key, url_elem) {\r
-                               var src = "https://zdxproxy.appspot.com/TweetPhotoAPI.com/api/TPAPI.svc/imagefromurl?size=thumbnail&url=" + url_key[0];\r
-                               append_image(src, url_elem);\r
-                       }\r
-               };\r
-               return proc;\r
-       case "ts1.in":\r
-               proc = {\r
-                       reg: /^http:\/\/(?:www\.)?ts1\.in\/(\d+)/,\r
-                       func: function (url_key, url_elem) {\r
-                               var src = "http://ts1.in/thumb/" + url_key[1];\r
-                               append_image(src, url_elem);\r
-                       }\r
-               };\r
-               return proc;\r
-       case "hellotxt.com":\r
-               proc = {\r
-                       reg: /^http:\/\/(?:www\.)?hellotxt.com\/i\/([\d\w]+)/,\r
-                       func: function (url_key, url_elem) {\r
-                               var src = "http://hellotxt.com/image/" + url_key[1] + ".s.jpg"\r
-                               append_image(src, url_elem);\r
-                       }\r
-               };\r
-               return proc;\r
-       case "twitxr.com":\r
-               proc = {\r
-                       reg: /^http:\/\/(?:www\.)?twitxr.com\/[^ ]+\/updates\/([\d]+)/,\r
-                       func: function (url_key, url_elem) {\r
-                               var src = 'http://twitxr.com/thumbnails/' + url_key[1].substr(-2, 2) + '/' + url_key[1] + '_th.jpg';\r
-                               append_image(src, url_elem);\r
-                       }\r
-               };\r
-               return proc;\r
-       case "moby.to":\r
-               proc = {\r
-                       reg: /^(http:\/\/(?:www\.)?moby\.to\/[A-Za-z0-9]+)/,\r
-                       func: function (url_key, url_elem) {\r
-                               var src = "http://api.mobypicture.com?s=small&format=plain&k=OozRuDDauQlucrZ3&t=" + url_key[1];\r
-                               append_image(src, url_elem);\r
-                       }\r
-               };\r
-               return proc;\r
-       case "grab.by":\r
-               proc = {\r
-                       reg: /^(http:\/\/(?:www\.)?grab\.by\/[A-Za-z0-9]+)/,\r
-                       func: function (url_key, url_elem) {\r
-                               var src = url_key[1];\r
-                               append_image(src, url_elem);\r
-                       }\r
-               };\r
-               return proc;\r
-       case "sf.gs":\r
-               proc = {\r
-                       reg: /^http:\/\/(?:www\.)?sf\.gs\/([\d\w]+)/,\r
-                       func: function (url_key, url_elem) {\r
-                               var src = "http://sf.gs/thumb/" + url_key[1];\r
-                               append_image(src, url_elem);\r
-                       }\r
-               };\r
-               return proc;\r
-       case "flic.kr":\r
-               proc = {\r
-                       reg: /^http:\/\/(?:www\.)?flic\.kr\/p\/([A-Za-z0-9]+)/,\r
-                       func: function (url_key, url_elem) {\r
-                               function base58_decode(snipcode) {\r
-                                       var alphabet = '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ';\r
-                                       var num = snipcode.length;\r
-                                       var decoded = 0;\r
-                                       var multi = 1;\r
-                                       for (var i = (num - 1); i >= 0; i--) {\r
-                                               decoded = decoded + multi * alphabet.indexOf(snipcode[i]);\r
-                                               multi = multi * alphabet.length;\r
-                                       }\r
-                                       return decoded;\r
-                               }\r
-                               var id = base58_decode(url_key[1]);\r
-                               var apiKey = '4ef2fe2affcdd6e13218f5ddd0e2500d';\r
-                               var url = "http://api.flickr.com/services/rest/?method=flickr.photos.getInfo&api_key=" + apiKey + "&photo_id=" + id;\r
-                               $.getJSON(url + "&format=json&jsoncallback=?", function (data) {\r
-                                       if (data.stat == "ok") {\r
-                                               var imgsrc = "https://zdxproxy.appspot.com/farm" + data.photo.farm + ".static.flickr.com/" + data.photo.server + "/" + data.photo.id + "_" + data.photo.secret + "_m.jpg";\r
-                                               append_image(imgsrc, url_elem);\r
-                                       }\r
-                               });\r
-                       }\r
-               };\r
-               return proc;\r
-       default:\r
-               return null;\r
-       }\r
-}\r
-function append_image(src, elem) {\r
-       var img = $('<img style="padding:3px;border:1px solid #ccc;max-width:420px;max-height:420px;" />').attr("src", src);\r
-       var link = $(elem).clone().empty().append(img);\r
-       $(elem).parent().after($('<div class="thumb_pic" style="display:block;margin:5px 0px;" />').append(link));\r
-}\r
-var previewImg = function (obj) {\r
-       if (obj.attr("rel") === "noreferrer") {\r
-               /(https?\:\/\/[\S]*\.(jpg|png|gif))/.exec(obj.attr("href"));\r
-               if(RegExp.$2.length > 0){\r
-                       append_image(RegExp.$1, obj);\r
-                       return;\r
-               }\r
-               /http[s]?:\/\/(?:www\.)?([\S]+)\/[\S]*/i.exec(obj.attr("href"));\r
-               var img_processor = get_img_processor(RegExp.$1);\r
-               if (img_processor === null) {\r
-                       return null;\r
-               }\r
-               if ((img_url_key = img_processor.reg.exec(obj.attr("href"))) != null) {\r
-                       obj.attr("alt", "image");\r
-                       img_processor.func(img_url_key, obj);\r
-               }\r
-       }\r
-}\r
-var previewMedia = function (objs) {\r
-       $(objs).find(".tweet a:not(:hidden)").each(function () {\r
-               if ($.cookie(COOKIE_NAME) === 'true') {\r
-                       previewImg($(this));\r
-               }\r
-               if ($.cookie('mediaPre') === 'true') {\r
-                       previewFlash($(this));\r
-               }\r
-       });\r
-}\r
-// Check if jQuery's loaded\r
-function GM_wait() {\r
-       if (typeof $ == 'undefined') {\r
-               window.setTimeout(GM_wait, 100);\r
-       }\r
-       else {\r
-               $(document).ready(function () {\r
-                       previewMedia($('.timeline'));\r
-               });\r
-       }\r
-}\r
-GM_wait();\r
+// Flash preview
+TUDOU_EMBED = '<br /><embed src="http://www.tudou.com/v/src_id" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" wmode="opaque" width="420" height="363"></embed>';
+XIAMI_EMBED = '<br /><embed src="http://www.xiami.com/widget/0_src_id/singlePlayer.swf" type="application/x-shockwave-flash" width="257" height="33" wmode="transparent"></embed>';
+YOUKU_EMBED = '<br /><embed src="http://player.youku.com/player.php/sid/src_id/v.swf" quality="high" width="420" height="363" align="middle" allowScriptAccess="allways" mode="transparent" type="application/x-shockwave-flash"></embed>';
+YOUTUBE_EMBED = '<br /><embed src="http://www.youtube.com/e/src_id?enablejsapi=1&version=3&playerapiid=ytplayer" quality="high" width="420" height="363" align="middle" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true"></embed>';
+KU6_EMBED='<br /><embed src="http://player.ku6.com/refer/src_id/v.swf" quality="high" width="420" height="363" align="middle" allowScriptAccess="allways" mode="transparent" type="application/x-shockwave-flash"></embed>';
+VIMEO_EMBED='<br /><iframe src="http://player.vimeo.com/video/src_id" quality="high" width="420" height="363" align="middle" allowScriptAccess="allways" mode="transparent" type="application/x-shockwave-flash"></iframe>';
+EMBED_FRAME = '';
+function getFlashReg(sSite) {
+       switch (sSite) {
+       case 'www.xiami.com':
+               EMBED_FRAME = XIAMI_EMBED;
+               return /[\S]+\.xiami\.com\/song\/([\d]+)[\S]*/i;
+               break;
+       case 'www.tudou.com':
+               EMBED_FRAME = TUDOU_EMBED;
+               return /[\S]+.tudou.[\S]+\/([\w-]+)[\S]*/i;
+               break;
+       case 'v.youku.com':
+               EMBED_FRAME = YOUKU_EMBED;
+               return /[\S]+.youku.com\/v_show\/id_([\w-]+)[\S]*(.html)/i;
+               break;
+       case 'youtu.be':
+               EMBED_FRAME = YOUTUBE_EMBED;
+               return /youtu.be\/([\w-_?]+)[\S]*/i;
+               break;
+       case 'www.youtube.com':
+               EMBED_FRAME = YOUTUBE_EMBED;
+               return /[\S]+.youtube.[\S]+\/watch\?v=([\w-_?]+)[\S]*/i;
+               break;
+       case 'v.ku6.com':
+               EMBED_FRAME = KU6_EMBED;
+               return /[\S]+.ku6.com\/show\/([\w-]+)[\S]*(.html)/i;
+       case 'vimeo.com':
+               EMBED_FRAME = VIMEO_EMBED;
+               return /vimeo.com\/(\d+)[\S]*/i;
+       default:
+               return null;
+       }
+}
+var previewFlash = function (obj) {
+       var reg = /http:\/\/([\w]*[\.]*[\w]+\.[\w]+)\//i;
+       var embed = "";
+       var href = obj.attr("href");
+       if (reg.exec(href.toLowerCase()) !== null) {
+               var re = getFlashReg(RegExp.$1);
+               if (re !== null) {
+                       if (re.exec(href) !== null) {
+                               embed = EMBED_FRAME.replace(/src_id/, RegExp.$1);
+                               $(embed).appendTo(obj.parent().parent().find(".tweet"));
+                       }
+               }
+       }
+}
+
+function get_img_processor(type) {
+       switch (type) {
+       case "instagr.am":
+               proc = {
+                       reg: /^http:\/\/(?:www\.)?instagr\.am\/([\w\/]+)/,
+                       func: function (url_key, url_elem) {
+                               var src = "http://instagr.am/" + url_key[1] + "media/?size=m";
+                               append_image(src, url_elem);
+                       }
+               };
+               return proc;
+       case "twitgoo.com":
+               proc = {
+                       reg: /^http:\/\/(?:www\.)?twitgoo\.com\/(\w+)/,
+                       func: function (url_key, url_elem) {
+                               var src = "img.php?imgurl=http://twitgoo.com/show/thumb/" + url_key[1];
+                               append_image(src, url_elem);
+                       }
+               };
+               return proc;
+       case "yfrog.com":
+               proc = {
+                       reg: /^http:\/\/(?:www\.)?yfrog\.com\/(\w+)/,
+                       func: function (url_key, url_elem) {
+                               var src = "img.php?imgurl=" + url_key[0] + ":iphone";
+                               append_image(src, url_elem);
+                       }
+               };
+               return proc;
+       case "twitpic.com":
+               proc = {
+                       reg: /^http:\/\/(?:www\.)?twitpic\.com\/(\w+)/,
+                       func: function (url_key, url_elem) {
+                               var src = "img.php?imgurl=http://twitpic.com/show/large/" + url_key[1];
+                               append_image(src, url_elem);
+                       }
+               };
+               return proc;
+       case "img.ly":
+               proc = {
+                       reg: /^http:\/\/(?:www\.)?img\.ly\/(\w+)/,
+                       func: function (url_key, url_elem) {
+                               var src = "img.php?imgurl=http://img.ly/show/medium/" + url_key[1];
+                               append_image(src, url_elem);
+                       }
+               };
+               return proc;
+       case "ow.ly":
+               proc = {
+                       reg: /^http:\/\/(?:www\.)?ow\.ly\/i\/(\w+)/,
+                       func: function (url_key, url_elem) {
+                               var src = "img.php?imgurl=http://static.ow.ly/photos/thumb/" + url_key[1] + ".jpg";
+                               append_image(src, url_elem);
+                       }
+               };
+               return proc;
+       case "tweetphoto.com":
+               proc = {
+                       reg: /^http:\/\/(?:www\.)?tweetphoto\.com\/(\w+)/,
+                       func: function (url_key, url_elem) {
+                               var src = "http://api.plixi.com/api/TPAPI.svc/imagefromurl?size=medium&url=" + url_key[0];
+                               append_image(src, url_elem);
+                       }
+               };
+               return proc;
+       case "plixi.com":
+               proc = {
+                       reg: /^http:\/\/(?:www\.)?plixi\.com\/p\/(\w+)/,
+                       func: function (url_key, url_elem) {
+                               var src = "http://api.plixi.com/api/tpapi.svc/imagefromurl?size=medium&url=http://plixi.com/p/" + url_key[1];
+                               append_image(src, url_elem);
+                       }
+               };
+               return proc;
+       case "hellotxt.com":
+               proc = {
+                       reg: /^http:\/\/(?:www\.)?hellotxt.com\/i\/(\w+)/,
+                       func: function (url_key, url_elem) {
+                               var src = "http://hellotxt.com/image/" + url_key[1] + ".s.jpg"
+                               append_image(src, url_elem);
+                       }
+               };
+               return proc;
+       case "moby.to":
+               proc = {
+                       reg: /^(http:\/\/(?:www\.)?moby\.to\/(\w+))/,
+                       func: function (url_key, url_elem) {
+                               var src = "http://api.mobypicture.com?s=small&format=plain&k=OozRuDDauQlucrZ3&t=" + url_key[1];
+                               append_image(src, url_elem);
+                       }
+               };
+               return proc;
+       case "p.twipple.jp":
+               proc = {
+                       reg: /^http:\/\/(?:p\.)?twipple\.jp\/(\w+)/,
+                       func: function (url_key, url_elem) {
+                               var src = "img.php?url=http://p.twipple.jp/show/large/" + url_key[1];
+                               append_image(src, url_elem);
+                       }
+               };
+               return proc;
+       case "picplz.com":
+               proc = {
+                       reg: /^http:\/\/(?:www\.)?picplz\.com\/(\w+)/,
+                       func: function(url_key, url_elem) {
+                               $.getJSON('http://api.picplz.com/api/v2/pic.json?pic_formats=400r&callback=?&shorturl_id='+url_key[1],function (data) {
+                                       if (data.result == "ok") {
+                                               var imgsrc = data.value.pics[0].pic_files["400r"].img_url;
+                                               append_image(imgsrc, url_elem);
+                                       }
+                               });
+                       }
+               };
+               return proc;
+       case "flic.kr": 
+               proc = {
+                       reg: /^http:\/\/(?:www\.)?flic\.kr\/p\/(\w+)/,
+                       func: function (url_key, url_elem) {
+                               function base58_decode(snipcode) {
+                                       var alphabet = '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ';
+                                       var num = snipcode.length;
+                                       var decoded = 0;
+                                       var multi = 1;
+                                       for (var i = (num - 1); i >= 0; i--) {
+                                               decoded = decoded + multi * alphabet.indexOf(snipcode[i]);
+                                               multi = multi * alphabet.length;
+                                       }
+                                       return decoded;
+                               }
+                               var id = base58_decode(url_key[1]);
+                               var apiKey = '4ef2fe2affcdd6e13218f5ddd0e2500d';
+                               var url = "http://api.flickr.com/services/rest/?method=flickr.photos.getInfo&api_key=" + apiKey + "&photo_id=" + id;
+                               $.getJSON(url + "&format=json&jsoncallback=?", function (data) {
+                                       if (data.stat == "ok") {
+                                               var imgsrc = "img.php?imgurl=http://farm" + data.photo.farm + ".static.flickr.com/" + data.photo.server + "/" + data.photo.id + "_" + data.photo.secret + "_m.jpg";
+                                               append_image(imgsrc, url_elem);
+                                       }
+                               });
+                       }
+               };
+               return proc;
+       case "twitxr.com":
+               proc = {
+                       reg: /^http:\/\/(?:www\.)?twitxr.com\/[^ ]+\/updates\/(\d+)/,
+                       func: function (url_key, url_elem) {
+                               var src = 'http://twitxr.com/thumbnails/' + url_key[1].substr(-2, 2) + '/' + url_key[1] + '_th.jpg';
+                               append_image(src, url_elem);
+                       }
+               };
+               return proc;
+       default:
+               return null;
+       }
+}
+var append_image = function(src, elem) {
+       var img = $('<img />').attr("src", src);
+       var link = $(elem).clone().empty().append(img);
+       $(elem).parent().after($('<div id="thumb_pic" />').append(link));
+}
+var previewImg = function (obj) {
+       var rel = obj.attr("href");
+       /(https?\:\/\/[\S]*\.(jpg|png|gif))/.exec(obj.attr("href"));
+       if(RegExp.$2.length == 3){
+               append_image(RegExp.$1, obj);
+               return;
+       }
+       /https?\:\/\/(?:www\.)?([\w-.]+)\/[\S]*/i.exec(obj.attr("href"));
+       var img_processor = get_img_processor(RegExp.$1);
+       if (img_processor === null) {
+               return null;
+       }
+       if ((img_url_key = img_processor.reg.exec(obj.attr("href"))) != null) {
+               obj.attr("alt", "image");
+               img_processor.func(img_url_key, obj);
+       }
+}
+var previewMedia = function (objs) {
+       var temp =[];
+       objs.find("span.tweet a[rel^=noref], span.tweet_url").each(function () {
+               var t = $(this);
+               var href = t.attr("href");
+               if(!(href in temp) && !t.data("previewed")) {
+                       if ($.cookie('showpic') === 'true') previewImg(t);
+                       if ($.cookie('mediaPre') === 'true') previewFlash(t);
+                       temp[href]=true;
+               }
+               t.data("previewed",true);
+       });
+}
+// Check if jQuery's loaded
+function GM_wait() {
+       if (typeof $ == 'undefined') {
+               window.setTimeout(GM_wait, 100);
+       }
+       else {
+               $(document).ready(function () {
+                       previewMedia($('.timeline'));
+               });
+       }
+}
+GM_wait();
\ No newline at end of file