Advertisement
Guest User

mediaPreview.js

a guest
Jul 18th, 2010
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // Flash preview
  2. var 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>';
  3. var 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>';
  4. var 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>';
  5. var EMBED_FRAME = '';
  6.  
  7. var getFlashReg = function(sSite){
  8.     switch (sSite) {
  9.     case 'xiami':
  10.         EMBED_FRAME = XIAMI_EMBED;
  11.         return /[\S]+\.xiami\.com\/song\/([\d]+)[\S]*/i;
  12.         break;
  13.     case 'tudou':
  14.         EMBED_FRAME = TUDOU_EMBED;
  15.         return /[\S]+.tudou.[\S]+\/([\w-]+)[\S]*/i;
  16.         break;
  17.     default:
  18.         return null;
  19.     }
  20. }
  21. var previewFlash = function (obj) {
  22.     var reg = /http:\/\/[\w]+\.([\w]+)\.[\w]+/i;
  23.     var embed = "";
  24.     if (reg.exec(obj.text().toLowerCase()) !== null) {
  25.         var re = getFlashReg(RegExp.$1);
  26.         if (re !== null) {
  27.             if (re.exec(obj.text()) !== null) {
  28.                 embed = EMBED_FRAME.replace(/src_id/, RegExp.$1);
  29.                 $(embed).appendTo(obj.parent());
  30.             }
  31.         }
  32.     }
  33. }
  34. // Image preview
  35. var COOKIE_NAME = "showpic_cookie";
  36. var options = {
  37.     expires: 10
  38. };
  39. function get_img_processor(type) {
  40.  
  41.     if (type.indexOf('phodroid.com') == 0) { //ugly fix for bloody Phodroid (which's the worst image hosting service ON EARTH) by @luosheng
  42.         return {
  43.             reg: /^http:\/\/(?:www\.)?phodroid\.com\/([\d\w\/]+)/,
  44.             func: function (url_key, url_elem) {
  45.                 var src = "http://phodroid.s3.amazonaws.com/" + url_key[1] + ".jpg";
  46.                 append_image(src, url_elem);
  47.             }
  48.         };
  49.     }
  50.     switch (type) {
  51.     case "twitgoo.com":
  52.         proc = {
  53.             reg: /^http:\/\/(?:www\.)?twitgoo\.com\/([\d\w]+)/,
  54.             func: function (url_key, url_elem) {
  55.                 var src = "http://zdxproxy.appspot.com/twitgoo.com/show/thumb/" + url_key[1];
  56.                 append_image(src, url_elem);
  57.             }
  58.         };
  59.         return proc;
  60.     case "yfrog.com":
  61.         proc = {
  62.             reg: /^http:\/\/(?:www\.)?yfrog\.com\/([\d\w]+)/,
  63.             func: function (url_key, url_elem) {
  64.                 var src = url_key[0] + ".th.jpg";
  65.                 append_image(src, url_elem);
  66.             }
  67.         };
  68.         return proc;
  69.     case "twitpic.com":
  70.         proc = {
  71.             reg: /^http:\/\/(?:www\.)?twitpic\.com\/([\d\w]+)/,
  72.             func: function (url_key, url_elem) {
  73.                 var src = "http://zdxproxy.appspot.com/twitpic.com/show/thumb/" + url_key[1];
  74.                 append_image(src, url_elem);
  75.             }
  76.         };
  77.         return proc;
  78.     case "img.ly":
  79.         proc = {
  80.             reg: /^http?:\/\/(?:www\.)?img\.ly\/([\d\w]+)/,
  81.             func: function (url_key, url_elem) {
  82.                 var src = "http://img.ly/show/thumb/" + url_key[1];
  83.                 append_image(src, url_elem);
  84.             }
  85.         };
  86.         return proc;
  87.     case "ow.ly":
  88.         proc = {
  89.             reg: /^http:\/\/(?:www\.)?ow\.ly\/i\/([\d\w]+)/,
  90.             func: function (url_key, url_elem) {
  91.                 var src = "http://static.ow.ly/photos/thumb/" + url_key[1] + ".jpg";
  92.                 append_image(src, url_elem);
  93.             }
  94.         };
  95.         return proc;
  96.     case "pic.gd":
  97.         proc = {
  98.             reg: /^http:\/\/(?:www\.)?pic\.gd\/([\d\w]+)/,
  99.             func: function (url_key, url_elem) {
  100.                 var src = "http://zdxproxy.appspot.com/www.TweetPhotoAPI.com/api/TPAPI.svc/imagefromurl?size=thumbnail&url=" + url_key[0];
  101.                 append_image(src, url_elem);
  102.             }
  103.         };
  104.         return proc;
  105.     case "tweetphoto.com":
  106.         proc = {
  107.             reg: /^http:\/\/(?:www\.)?tweetphoto\.com\/([\d\w]+)/,
  108.             func: function (url_key, url_elem) {
  109.                 var src = "http://zdxproxy.appspot.com/www.TweetPhotoAPI.com/api/TPAPI.svc/imagefromurl?size=thumbnail&url=" + url_key[0];
  110.                 append_image(src, url_elem);
  111.             }
  112.         };
  113.         return proc;
  114.     case "ts1.in":
  115.         proc = {
  116.             reg: /^http:\/\/(?:www\.)?ts1\.in\/(\d+)/,
  117.             func: function (url_key, url_elem) {
  118.                 var src = "http://ts1.in/thumb/" + url_key[1];
  119.                 append_image(src, url_elem);
  120.             }
  121.         };
  122.         return proc;
  123.     case "hellotxt.com":
  124.         proc = {
  125.             reg: /^http:\/\/(?:www\.)?hellotxt.com\/i\/([\d\w]+)/,
  126.             func: function (url_key, url_elem) {
  127.                 var src = "http://hellotxt.com/image/" + url_key[1] + ".s.jpg"
  128.                 append_image(src, url_elem);
  129.             }
  130.         };
  131.         return proc;
  132.     case "twitxr.com":
  133.         proc = {
  134.             reg: /^http:\/\/(?:www\.)?twitxr.com\/[^ ]+\/updates\/([\d]+)/,
  135.             func: function (url_key, url_elem) {
  136.                 var src = 'http://twitxr.com/thumbnails/' + url_key[1].substr(-2, 2) + '/' + url_key[1] + '_th.jpg';
  137.                 append_image(src, url_elem);
  138.             }
  139.         };
  140.         return proc;
  141.     case "moby.to":
  142.         proc = {
  143.             reg: /^(http:\/\/(?:www\.)?moby\.to\/[A-Za-z0-9]+)/,
  144.             func: function (url_key, url_elem) {
  145.                 var src = "http://api.mobypicture.com?s=small&format=plain&k=OozRuDDauQlucrZ3&t=" + url_key[1];
  146.                 append_image(src, url_elem);
  147.             }
  148.         };
  149.         return proc;
  150.     case "grab.by":
  151.         proc = {
  152.             reg: /^(http:\/\/(?:www\.)?grab\.by\/[A-Za-z0-9]+)/,
  153.             func: function (url_key, url_elem) {
  154.                 var src = url_key[1];
  155.                 append_image(src, url_elem);
  156.             }
  157.         };
  158.         return proc;
  159.     case "sf.gs":
  160.         proc = {
  161.             reg: /^http:\/\/(?:www\.)?sf\.gs\/([\d\w]+)/,
  162.             func: function (url_key, url_elem) {
  163.                 var src = "http://sf.gs/thumb/" + url_key[1];
  164.                 append_image(src, url_elem);
  165.             }
  166.         };
  167.         return proc;
  168.     case "flic.kr":
  169.         proc = {
  170.             reg: /^http:\/\/(?:www\.)?flic\.kr\/p\/([A-Za-z0-9]+)/,
  171.             func: function (url_key, url_elem) {
  172.                 function base58_decode(snipcode) {
  173.                     var alphabet = '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ';
  174.                     var num = snipcode.length;
  175.                     var decoded = 0;
  176.                     var multi = 1;
  177.                     for (var i = (num - 1); i >= 0; i--) {
  178.                         decoded = decoded + multi * alphabet.indexOf(snipcode[i]);
  179.                         multi = multi * alphabet.length;
  180.                     }
  181.                     return decoded;
  182.                 }
  183.                 var id = base58_decode(url_key[1]);
  184.                 var apiKey = '4ef2fe2affcdd6e13218f5ddd0e2500d';
  185.                 var url = "http://api.flickr.com/services/rest/?method=flickr.photos.getInfo&api_key=" + apiKey + "&photo_id=" + id;
  186.                 $.getJSON(url + "&format=json&jsoncallback=?", function (data) {
  187.                         if (data.stat == "ok") {
  188.                             var imgsrc = "http://zdxproxy.appspot.com/farm" + data.photo.farm + ".static.flickr.com/" + data.photo.server + "/" + data.photo.id + "_" + data.photo.secret + "_m.jpg";
  189.                             append_image(imgsrc, url_elem);
  190.                         }
  191.                     });
  192.             }
  193.         };
  194.         return proc;
  195.     case "myth.im":
  196.         proc = {
  197.             reg: /^http:\/\/(?:www\.)?myth\.im\/([\d\w]+)/,
  198.             func: function (url_key, url_elem) {
  199.                 var src = "http://myth.im/images/" + url_key[1];
  200.                 append_image(src, url_elem);
  201.             }
  202.         };
  203.         return proc;
  204.     case "rabr.in":
  205.         proc = {
  206.             reg: /^http?:\/\/(?:www\.)?rabr\.in\/i\/([\d\w]+)/,
  207.             func: function (url_key, url_elem) {
  208.                 var src = "http://rabr.in/i/images/" + url_key[1];
  209.                 append_image(src, url_elem);
  210.             }
  211.         };
  212.         return proc;
  213.     default:
  214.         return null;
  215.     }
  216. }
  217. function append_image(src, elem) {
  218.     var img = $('<img style="padding:3px;border:1px solid #ccc;max-width:420px;max-height:420px;" />').attr("src", src);
  219.     var link = $(elem).clone().empty().append(img);
  220.     $(elem).parent().after($('<div class="thumb_pic" style="display:block;margin:5px 0px;" />').append(link));
  221. }
  222. var previewImg = function (obj) {
  223.     if (obj.attr("rel") === "noreferrer") {
  224.         /(http?\:\/\/[\S]*\.(jpg|png|gif))/.exec(obj.attr("href"));
  225.         if(RegExp.$2.length > 0){
  226.             append_image(RegExp.$1, obj);
  227.             return;
  228.         }
  229.         /http[s]?:\/\/(?:www\.)?([\w+=\:\%\#\&\.~\?\"\'\-]+)\/[\S]*/i.exec(obj.attr("href"));
  230.         var img_processor = get_img_processor(RegExp.$1);
  231.         if (img_processor === null) {
  232.             return null;
  233.         }
  234.         if ((img_url_key = img_processor.reg.exec(obj.attr("href"))) != null) {
  235.             obj.attr("alt", "image");
  236.             img_processor.func(img_url_key, obj);
  237.         }
  238.     }
  239. }
  240. var previewMedia = function (objs) {
  241.     $(objs).find(".tweet a:not(:hidden)").each(function () {
  242.             if ($.cookie(COOKIE_NAME) === 'true') {
  243.                 previewImg($(this));
  244.             }
  245.             if ($.cookie('mediaPre') === 'true') {
  246.                 previewFlash($(this));
  247.             }
  248.         });
  249. }
  250. // Check if jQuery's loaded
  251. function GM_wait() {
  252.     if (typeof $ == 'undefined') {
  253.         window.setTimeout(GM_wait, 100);
  254.     }
  255.     else {
  256.         $(document).ready(function () {
  257.                 previewMedia($('.timeline'));
  258.             });
  259.     }
  260. }
  261. GM_wait();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement