thomblr

convrt yr tumblr <3 to bookmrks
git clone https://wehaveforgeathome.hates.computer/thomblr.git
Log | Files | Refs | LICENSE

tumblr.js (1678B)


      1 var sys = require('sys');
      2 
      3 var url = {
      4   regular: function (post) { return post['@'].url; },
      5   link: function (post) { return post['link-url']; },
      6   photo: function (post) {
      7     var tumblelog = post.tumblelog['@'].url.replace(/\/$/, ''),
      8         generic = post['photo-url'][0]['#'],
      9         link = post['photo-link-url'];
     10     if (!link || tumblelog == link.replace(/\/$/, '')) {
     11       return generic;
     12     };
     13     return link;
     14   },
     15   video: function (post) {
     16     var link = post['video-source'];
     17     return (link.indexOf('http') == 0) ? link : url.regular(post);
     18   }
     19 };
     20 
     21 var getUrl = function (post) {
     22   switch (post['@'].type) {
     23     case 'link':
     24       return url.link(post);
     25     case 'photo':
     26       return url.photo(post);
     27     case 'video':
     28       return url.video(post);
     29   }
     30   return url.regular(post);
     31 };
     32 
     33 var title = {
     34   none: getUrl,
     35   regular: function (post) {
     36     var t = post['regular-title'];
     37     return (t) ? t : title.none(post);
     38   },
     39   link: function (post) {
     40     var t = post['link-text'];
     41     return (t) ? t : title.none(post);
     42   },
     43   conversation: function (post) {
     44     var t = post['conversation-title'];
     45     return (t) ? t : title.none(post);
     46   },
     47   video: function (post) {
     48     var t = post['video-title'];
     49     return (t) ? t : title.none(post);
     50   }
     51 };
     52 
     53 var getTitle = function (post) {
     54   switch (post['@'].type) {
     55     case 'regular':
     56       return title.regular(post);
     57     case 'link':
     58       return title.link(post);
     59     case 'conversation':
     60       return title.conversation(post);
     61     case 'video':
     62       return title.video(post);
     63   }
     64   return title.none(post);
     65 };
     66 
     67 exports.serialize = function (post) {
     68   return { url: getUrl(post), title: getTitle(post) };
     69 };