UNPKG

hypem-scrapper

Version:

Simple module to obtain stream of hypem metaid

101 lines (85 loc) 2.97 kB
// Generated by CoffeeScript 1.6.2 (function() { var async, getUrl, getUrlSync, querystring, request; request = require('request'); querystring = require('querystring'); async = require('async'); /* Credits go to Farid Zakaria (http://blog.fzakaria.com/2012/10/hypem-api-changes/) */ getUrlSync = function(metaid, callback) { var params, trackUrl; params = { ax: 1, ts: new Date().getTime() }; trackUrl = 'http://hypem.com/track/' + metaid + '?' + querystring.stringify(params); return request.get(trackUrl, function(error, response, body) { var e, key, num, serveUrl, _i, _ref, _results; try { body = body.split('\n'); _results = []; for (num = _i = _ref = body.length; _ref <= 0 ? _i <= 0 : _i >= 0; num = _ref <= 0 ? ++_i : --_i) { if (String(body[num]).indexOf('key') !== -1) { key = JSON.parse(body[num].replace('</script>', '')).tracks[0].key; serveUrl = 'http://hypem.com/serve/source/' + metaid + '/' + key + '?_=' + new Date().getTime(); _results.push(request.get(serveUrl, function(error, response, body) { if (response.statusCode === 200) { return callback(null, JSON.parse(body).url); } else { return callback(JSON.parse(body), null); } })); } else { _results.push(void 0); } } return _results; } catch (_error) { e = _error; return callback({ error: 'Couldn\'t extract link' }, null); } }); }; getUrl = function(metaid, callback) { var params, trackUrl; params = { ax: 1, ts: new Date().getTime() }; trackUrl = 'http://hypem.com/track/' + metaid + '?' + querystring.stringify(params); return request.get(trackUrl, function(error, response, body) { var e; try { body = body.split('\n'); return async.detectSeries(body.reverse(), function(line, callback) { if (line.indexOf('key') !== -1) { return callback(true); } else { return callback(false); } }, function(line) { var key, serveUrl; key = JSON.parse(line.replace('</script>', '')).tracks[0].key; serveUrl = 'http://hypem.com/serve/source/' + metaid + '/' + key + '?_=' + new Date().getTime(); return request.get(serveUrl, function(error, response, body) { if (response.statusCode === 200) { return callback(null, JSON.parse(body).url); } else { return callback(JSON.parse(body), null); } }); }); } catch (_error) { e = _error; return callback({ error: 'Couldn\'t extract link' }, null); } }); }; exports.getUrlSync = getUrlSync; exports.getUrl = getUrl; }).call(this);