termice
Version:
Simple terminal icecast player
49 lines (48 loc) • 1.57 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.search_shoutcast = void 0;
const util_1 = require("./util");
function search_shoutcast(search) {
return new Promise((resolve) => {
const options = {
method: 'POST',
url: 'https://directory.shoutcast.com/Search/UpdateSearch',
form: {
query: search.split(' ').join('+')
}
};
require('request')(options, (err, _, body) => {
if (err) {
resolve([(0, util_1.error_entry)(err, 'Shoutcast')]);
}
else {
try {
const json = JSON.parse(body);
resolve(parse_shoutcast(json));
}
catch (err) {
resolve([(0, util_1.error_entry)(err, 'Shoutcast')]);
}
}
});
});
}
exports.search_shoutcast = search_shoutcast;
function parse_shoutcast(json) {
return Object.keys(json).map(key => ({
name: json[key].Name
|| 'Null',
homepage: '',
listeners: json[key].Listeners !== undefined ? json[key].Listeners.toString()
: 'Null',
description: '',
playing: json[key].CurrentTrack
|| '',
url: `http://yp.shoutcast.com/sbin/tunein-station.m3u?id=${json[key].ID}`,
src: 'Shoutcast',
bitrate: json[key].Bitrate ? json[key].Bitrate.toString()
: '',
is_playlist: true,
entry: json[key]
}));
}