Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (function() {
- if (Dubtrack.user.playlist == void 4) {
- alert("Please open the playlists at least once!");
- return;
- }
- var input = window.prompt("Enter your search terms", "needle");
- if (input == void 4 || input.length == 0) {
- alert("Invalid search terms.");
- return;
- }
- var keywords = input.toLowerCase().split(/[^a-zA-Z0-9]/);
- var matches = [];
- var fetches = 0;
- fetch = function(name, pl, callback){
- var url = "https://api.dubtrack.fm/playlist/" + pl._id + "/songs";
- fetches++;
- if (typeof console.time == 'function') {
- console.time("[fetch] " + name);
- }
- $.getJSON(url, function(data, status){
- fetches--;
- var ref$, code, message;
- if (typeof console.timeEnd == 'function') {
- console.timeEnd("[fetch] " + name);
- }
- if (status !== 'success' || data.code !== 200) {
- ref$ = data, code = ref$.code, message = ref$.message, data = ref$.data;
- errorHandler("Error #" + code + " fetching " + name + ": " + message + ". " + data.message + ".");
- } else {
- callback(pl, data.data);
- }
- });
- };
- search = function(haystack) {
- if (haystack == void 4) return false;
- for (var i = 0; i < keywords.length; i++) {
- if (haystack.toLowerCase().indexOf(keywords[i]) == -1)
- return false;
- }
- return true;
- }
- writeout = function() {
- var str = "";
- if (matches.length == 0) {
- str = "Found no matches on searching \"" + input + "\"! :(";
- } else {
- str = "Found " + matches.length + " matches!\n\n";
- for (var i = 0; i < matches.length; i++) {
- var song = matches[i];
- str += "[" + song.playlist + "] " + song.name + "\n";
- }
- }
- alert(str);
- }
- callback = function(pl, data) {
- try {
- // Loop all songs
- for (var i = 0; i < data.length; i++) {
- var song = data[i]._song;
- // Check for matches
- if (search(song.name) // song name
- || search(song.description) // song desc
- || search(song.genre) // song genre
- || search(song.songArtist)) // song artist/uploader
- {
- song.playlist = pl.name;
- matches.push(song);
- }
- }
- } catch (err) {
- console.log("couldn't parse song data (" + err + ")");
- }
- if (fetches == 0) writeout();
- }
- // Loop all playlists
- Dubtrack.user.playlist.forEach(function(value, index) {
- // Fetch the song list
- var pl = value.attributes;
- fetch("songs (" + pl.name + ")", pl, callback);
- });
- })();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement