thomblr

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

commit 93cac1f1047a73bb7df036c8c2b634a51ef31a95
parent 09f7070cfb932f519b6c7fe9d8a4ce943c1dc388
Author: Ryan Wolf <rwolf@borderstylo.com>
Date:   Wed, 23 Mar 2011 17:04:16 +0000

almost there

Diffstat:
Mserver.js | 6+++++-
Mtumblr.js | 76+++++++++++++++++++++++++++++++++++++++++++++++++++-------------------------
2 files changed, 56 insertions(+), 26 deletions(-)

diff --git a/server.js b/server.js @@ -4,6 +4,7 @@ var sys = require('sys'), path = require('path'), urlParse = require('url').parse, paperboy = require('paperboy'), + mustache = require('../Mu/lib/mu'), xml2js = require('xml2js'), webroot = path.join(path.dirname(__filename), 'static'), router = require('./router'), @@ -36,6 +37,7 @@ router.get('thoms/fav.png', sendStatic); /** * the one and only interesting call **/ +var template = mustache.compileText('<<DT><A HREF="{{url}}">{{title}}</A>\n'); router.get('thoms/likes', function (request, response) { var url = urlParse(request.url, true); @@ -85,10 +87,12 @@ router.get('thoms/likes', function (request, response) { response.write(header.join('\n') + '\n'); if (!result.posts.post) { return response.end(''); } result.posts.post.forEach(function (post) { - response.write(tumblr.serialize(post) + '\n'); + response.write(tumblr.serialize(post)); }); response.end('</DL><p>\n'); }); }); crequest.end(); }); + + diff --git a/tumblr.js b/tumblr.js @@ -1,40 +1,66 @@ var sys = require('sys'); -var regular = function (post) { - return post['@'].url; -}; - -var link = function (post) { - return post['link-url']; +var url = { + regular: function (post) { return post['@'].url; }, + link: function (post) { return post['link-url']; }, + photo: function (post) { + var tumblelog = post.tumblelog['@'].url.replace(/\/$/, ''), + generic = post['photo-url'][0]['#'], + link = post['photo-link-url']; + if (!link || tumblelog == link.replace(/\/$/, '')) { + return generic; + }; + return link; + }, + video: function (post) { + var link = post['video-source']; + return (link.indexOf('http') == 0) ? link : url.regular(post); + } }; -var photo = function (post) { - var tumblelog = post.tumblelog['@'].url.replace(/\/$/, ''), - generic = post['photo-url'][0]['#'], - link = post['photo-link-url']; - if (!link || tumblelog == link.replace(/\/$/, '')) { - return generic; - }; - return link; +var getUrl = function (post) { + switch (post['@'].type) { + case 'link': + return url.link(post); + case 'photo': + return url.photo(post); + case 'video': + return url.video(post); + } + return url.regular(post); }; -var video = function (post) { - var link = post['video-source']; - return (link.indexOf('http') == 0) ? link : regular(post); +var title = { + none: getUrl, + regular: function (post) { + var t = post['regular-title']; + return (t) ? t : title.none(post); + }, + link: function (post) { + var t = post['link-text']; + return (t) ? t : title.none(post); + }, + conversation: function (post) { + var t = post['conversation-title']; + return (t) ? t : title.none(post); + } }; -var getUrl = function (post) { +var getTitle = function (post) { switch (post['@'].type) { - case 'link': - return link(post); + case 'quote': case 'photo': - return photo(post); - case 'video': - return video(post); + return title.none(post); + case 'regular': + return title.regular(post); + case 'link': + return title.link(post); + case 'conversation': + return title.conversation(post); } - return regular(post); + return sys.inspect(post); }; exports.serialize = function (post) { - return sys.inspect(post); + return sys.inspect({ url: getUrl(post), title: getTitle(post) }) + '\n'; };