mirror of https://github.com/calzoneman/sync.git
Remove old code
This commit is contained in:
parent
aa5cd300f1
commit
5342ce8b77
|
@ -527,7 +527,7 @@ Channel.prototype.search = function(query, callback) {
|
||||||
if(query.trim() == "") {
|
if(query.trim() == "") {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
InfoGetter.getYTSearchResults(query, function(err, vids) {
|
InfoGetter.Getters["ytSearch"](query, function(err, vids) {
|
||||||
if(!err) {
|
if(!err) {
|
||||||
callback(vids);
|
callback(vids);
|
||||||
}
|
}
|
||||||
|
|
382
get-info.js
382
get-info.js
|
@ -29,55 +29,6 @@ function urlRetrieve(transport, options, callback) {
|
||||||
req.end();
|
req.end();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Helper function for making an HTTP request and getting the result
|
|
||||||
// as JSON
|
|
||||||
function getJSONInternal(transport, options, callback) {
|
|
||||||
var req = transport.request(options, function(res) {
|
|
||||||
var buffer = "";
|
|
||||||
res.setEncoding("utf8");
|
|
||||||
res.on("data", function (chunk) {
|
|
||||||
buffer += chunk;
|
|
||||||
});
|
|
||||||
res.on("end", function() {
|
|
||||||
try {
|
|
||||||
var data = JSON.parse(buffer);
|
|
||||||
}
|
|
||||||
catch(e) {
|
|
||||||
var m = buffer.match(/<internalReason>([^<]+)<\/internalReason>/);
|
|
||||||
if(m === null)
|
|
||||||
m = buffer.match(/<code>([^<]+)<\/code>/);
|
|
||||||
if(m === null)
|
|
||||||
m = buffer.match(/([0-9]+ not found)/);
|
|
||||||
Logger.errlog.log("Media request failed: "+options.host+options.path);
|
|
||||||
if(m) {
|
|
||||||
if(m[1] === "too_many_recent_calls") {
|
|
||||||
m[1] = "YouTube is throttling the server right "+
|
|
||||||
"now for making too many requests. "+
|
|
||||||
"Please try again in a moment.";
|
|
||||||
}
|
|
||||||
Logger.errlog.log("Reason: " + m[1]);
|
|
||||||
callback(m[1], res.statusCode, null);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
callback(true, res.statusCode, null);
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
callback(false, res.statusCode, data);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
req.end();
|
|
||||||
};
|
|
||||||
|
|
||||||
function getJSON(options, callback) {
|
|
||||||
getJSONInternal(http, options, callback);
|
|
||||||
}
|
|
||||||
|
|
||||||
function getJSONHTTPS(options, callback) {
|
|
||||||
getJSONInternal(https, options, callback);
|
|
||||||
}
|
|
||||||
|
|
||||||
var Getters = {
|
var Getters = {
|
||||||
/* youtube.com */
|
/* youtube.com */
|
||||||
yt: function (id, callback) {
|
yt: function (id, callback) {
|
||||||
|
@ -458,337 +409,8 @@ var Getters = {
|
||||||
|
|
||||||
exports.Getters = Getters;
|
exports.Getters = Getters;
|
||||||
|
|
||||||
// Look up YouTube metadata
|
|
||||||
// Fairly straightforward
|
|
||||||
exports.getYTInfo = function(id, callback) {
|
|
||||||
getJSON({
|
|
||||||
host: "gdata.youtube.com",
|
|
||||||
port: 80,
|
|
||||||
path: "/feeds/api/videos/" + id + "?v=2&alt=json",
|
|
||||||
method: "GET",
|
|
||||||
dataType: "jsonp",
|
|
||||||
timeout: 1000}, callback);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Look up a YouTube playlist
|
|
||||||
exports.getYTPlaylist = function(id, callback, url) {
|
|
||||||
var path = "/feeds/api/playlists/" + id + "?v=2&alt=json";
|
|
||||||
if(url) {
|
|
||||||
path = "/" + url.split("gdata.youtube.com")[1];
|
|
||||||
}
|
|
||||||
getJSON({
|
|
||||||
host: "gdata.youtube.com",
|
|
||||||
port: 80,
|
|
||||||
path: path,
|
|
||||||
method: "GET",
|
|
||||||
dataType: "jsonp",
|
|
||||||
timeout: 1000}, callback);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Search YouTube
|
|
||||||
exports.searchYT = function(terms, callback) {
|
|
||||||
// I really miss Python's list comprehensions
|
|
||||||
for(var i = 0; i < terms.length; i++) {
|
|
||||||
terms[i] = escape(terms[i]);
|
|
||||||
}
|
|
||||||
var query = terms.join("+");
|
|
||||||
getJSON({
|
|
||||||
host: "gdata.youtube.com",
|
|
||||||
port: 80,
|
|
||||||
path: "/feeds/api/videos/?q=" + query + "&v=2&alt=json",
|
|
||||||
method: "GET",
|
|
||||||
dataType: "jsonp",
|
|
||||||
timeout: 1000}, callback);
|
|
||||||
}
|
|
||||||
|
|
||||||
exports.getYTSearchResults = function(query, callback) {
|
|
||||||
var cback = function(err, res, data) {
|
|
||||||
if(err || res != 200) {
|
|
||||||
callback(true, null);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var vids = [];
|
|
||||||
try {
|
|
||||||
if(data.feed.entry.length === undefined) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
for(var i = 0; i < data.feed.entry.length; i++) {
|
|
||||||
try {
|
|
||||||
var item = data.feed.entry[i];
|
|
||||||
|
|
||||||
var id = item.media$group.yt$videoid.$t;
|
|
||||||
var title = item.title.$t;
|
|
||||||
var seconds = item.media$group.yt$duration.seconds;
|
|
||||||
var media = new Media(id, title, seconds, "yt");
|
|
||||||
media.thumb = item.media$group.media$thumbnail[0];
|
|
||||||
vids.push(media);
|
|
||||||
}
|
|
||||||
catch(e) {
|
|
||||||
Logger.errlog.log("getYTSearchResults failed: ");
|
|
||||||
Logger.errlog.log(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
catch(e) {
|
|
||||||
Logger.errlog.log("getYTSearchResults failed: ");
|
|
||||||
Logger.errlog.log(e);
|
|
||||||
}
|
|
||||||
callback(false, vids);
|
|
||||||
}
|
|
||||||
|
|
||||||
exports.searchYT(query.split(" "), cback);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Look up Soundcloud metadata
|
|
||||||
exports.getSCInfo = function(url, callback) {
|
|
||||||
const SC_CLIENT = "2e0c82ab5a020f3a7509318146128abd";
|
|
||||||
getJSON({
|
|
||||||
host: "api.soundcloud.com",
|
|
||||||
port: 80,
|
|
||||||
path: "/resolve.json?url="+url+"&client_id=" + SC_CLIENT,
|
|
||||||
method: "GET",
|
|
||||||
dataType: "jsonp",
|
|
||||||
timeout: 1000}, function(err, status, data) {
|
|
||||||
// This time we can ACTUALLY get the data we want
|
|
||||||
getJSON({
|
|
||||||
host: "api.soundcloud.com",
|
|
||||||
port: 80,
|
|
||||||
path: data.location,
|
|
||||||
method: "GET",
|
|
||||||
dataType: "jsonp",
|
|
||||||
timeout: 1000}, callback);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// Look up Vimeo metadata. Fairly straightforward
|
|
||||||
exports.getVIInfo = function(id, callback) {
|
|
||||||
getJSON({
|
|
||||||
host: "vimeo.com",
|
|
||||||
port: 80,
|
|
||||||
path: "/api/v2/video/" + id + ".json",
|
|
||||||
method: "GET",
|
|
||||||
dataType: "jsonp",
|
|
||||||
timeout: 1000}, callback);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Look up Dailymotion info
|
|
||||||
exports.getDMInfo = function(id, callback) {
|
|
||||||
var fields = "duration,title"
|
|
||||||
getJSONHTTPS({
|
|
||||||
host: "api.dailymotion.com",
|
|
||||||
port: 443,
|
|
||||||
path: "/video/" + id + "?fields=" + fields,
|
|
||||||
method: "GET",
|
|
||||||
dataType: "jsonp",
|
|
||||||
timeout: 1000}, callback);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Ustream requires a developer key for their API, and on top of that
|
|
||||||
// I couldn't figure out how to use it.
|
|
||||||
// I'm regexing the stream ID out of the HTML
|
|
||||||
// So sue me
|
|
||||||
exports.getUstream = function(name, callback) {
|
|
||||||
var opts = {
|
|
||||||
host: "www.ustream.tv",
|
|
||||||
port: 80,
|
|
||||||
path: "/" + name
|
|
||||||
};
|
|
||||||
http.get(opts, function(res) {
|
|
||||||
var html = "";
|
|
||||||
res.on("data", function(cnk) {
|
|
||||||
html += cnk;
|
|
||||||
});
|
|
||||||
res.on("end", function() {
|
|
||||||
if(res.statusCode != 200) {
|
|
||||||
callback(true, null);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
var lines = html.split("\n");
|
|
||||||
const re = /cid":([0-9]+)/;
|
|
||||||
var m = html.match(re);
|
|
||||||
if(m) {
|
|
||||||
callback(false, m[1]);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
callback(true, null);
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
for(var i = 0; i < lines.length; i++) {
|
|
||||||
var m = lines[i].match(re);
|
|
||||||
if(m) {
|
|
||||||
callback(m[1]);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}).on("error", function(err) {
|
|
||||||
Logger.errlog.log(err.message);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
exports.getMedia = function(id, type, callback) {
|
exports.getMedia = function(id, type, callback) {
|
||||||
switch(type) {
|
if(type in Getters) {
|
||||||
case "yt":
|
Getters[type](id, callback);
|
||||||
exports.getYTInfo(id, function(err, res, data) {
|
|
||||||
if(err || res != 200) {
|
|
||||||
callback(err || true, null);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
// Whoever named this should be fired
|
|
||||||
var seconds = data.entry.media$group.yt$duration.seconds;
|
|
||||||
var title = data.entry.title.$t;
|
|
||||||
var media = new Media(id, title, seconds, "yt");
|
|
||||||
callback(false, media);
|
|
||||||
}
|
|
||||||
catch(e) {
|
|
||||||
Logger.errlog.log("getMedia failed: ");
|
|
||||||
Logger.errlog.log(e.stack);
|
|
||||||
callback(true, null);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
break;
|
|
||||||
case "vi":
|
|
||||||
exports.getVIInfo(id, function(err, res, data) {
|
|
||||||
if(err || res != 200) {
|
|
||||||
callback(err || true, null);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
data = data[0];
|
|
||||||
var seconds = data.duration;
|
|
||||||
var title = data.title;
|
|
||||||
var media = new Media(id, title, seconds, "vi");
|
|
||||||
callback(false, media);
|
|
||||||
}
|
|
||||||
catch(e) {
|
|
||||||
Logger.errlog.log("getMedia failed: ");
|
|
||||||
Logger.errlog.log(e);
|
|
||||||
callback(true, null);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
break;
|
|
||||||
case "dm":
|
|
||||||
exports.getDMInfo(id, function(err, res, data) {
|
|
||||||
if(err || res != 200) {
|
|
||||||
callback(true, null);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
var seconds = data.duration;
|
|
||||||
var title = data.title;
|
|
||||||
var media = new Media(id, title, seconds, "dm");
|
|
||||||
callback(false, media);
|
|
||||||
}
|
|
||||||
catch(e) {
|
|
||||||
Logger.errlog.log("getMedia failed: ");
|
|
||||||
Logger.errlog.log(e);
|
|
||||||
callback(true, null);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
break;
|
|
||||||
case "sc":
|
|
||||||
exports.getSCInfo(id, function(err, res, data) {
|
|
||||||
if(err || res != 200) {
|
|
||||||
callback(true, null);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
// Soundcloud's durations are in ms
|
|
||||||
var seconds = data.duration / 1000;
|
|
||||||
var title = data.title;
|
|
||||||
var media = new Media(id, title, seconds, "sc");
|
|
||||||
callback(false, media);
|
|
||||||
}
|
|
||||||
catch(e) {
|
|
||||||
Logger.errlog.log("getMedia failed: ");
|
|
||||||
Logger.errlog.log(e);
|
|
||||||
callback(true, null);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
break;
|
|
||||||
case "yp":
|
|
||||||
var cback = function(err, res, data) {
|
|
||||||
if(err || res != 200) {
|
|
||||||
callback(true, null);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
var vids = [];
|
|
||||||
for(var i = 0; i < data.feed.entry.length; i++) {
|
|
||||||
try {
|
|
||||||
var item = data.feed.entry[i];
|
|
||||||
|
|
||||||
var id = item.media$group.yt$videoid.$t;
|
|
||||||
var title = item.title.$t;
|
|
||||||
var seconds = item.media$group.yt$duration.seconds;
|
|
||||||
var media = new Media(id, title, seconds, "yt");
|
|
||||||
vids.push(media);
|
|
||||||
}
|
|
||||||
catch(e) {
|
|
||||||
Logger.errlog.log("getMedia failed: ");
|
|
||||||
Logger.errlog.log(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
callback(false, vids);
|
|
||||||
|
|
||||||
|
|
||||||
var links = data.feed.link;
|
|
||||||
for(var i = 0; i < links.length; i++) {
|
|
||||||
if(links[i].rel == "next") {
|
|
||||||
exports.getYTPlaylist(id, cback, links[i].href);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch(e) {
|
|
||||||
Logger.errlog.log("getMedia failed: ");
|
|
||||||
Logger.errlog.log(e);
|
|
||||||
callback(true, null);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
exports.getYTPlaylist(id, cback);
|
|
||||||
break;
|
|
||||||
case "li":
|
|
||||||
case "tw":
|
|
||||||
case "jt":
|
|
||||||
case "jw":
|
|
||||||
const prefix = {
|
|
||||||
"li": "Livestream.com - ",
|
|
||||||
"tw": "Twitch.tv - ",
|
|
||||||
"jt": "Justin.tv - ",
|
|
||||||
"jw": "JWPlayer Stream - "
|
|
||||||
};
|
|
||||||
var media = new Media(id, prefix[type] + id, "--:--", type);
|
|
||||||
callback(false, media);
|
|
||||||
break;
|
|
||||||
case "us":
|
|
||||||
exports.getUstream(id, function(err, data) {
|
|
||||||
if(err) {
|
|
||||||
callback(true, null);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var media = new Media(data, "Ustream.tv - " + id, "--:--", "us");
|
|
||||||
callback(false, media);
|
|
||||||
});
|
|
||||||
break;
|
|
||||||
case "rt":
|
|
||||||
case "im":
|
|
||||||
const names = {
|
|
||||||
"rt": "Livestream",
|
|
||||||
"im": "Imgur Album"
|
|
||||||
};
|
|
||||||
var media = new Media(id, names[type], "--:--", type);
|
|
||||||
callback(false, media);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue