mirror of
https://github.com/KevinMidboe/zoff.git
synced 2026-01-02 07:36:17 +00:00
Tags functionality
This commit is contained in:
71
server/apps/genre_generator.js
Normal file
71
server/apps/genre_generator.js
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
var path = require('path');
|
||||||
|
var publicPath = path.join(__dirname, 'public');
|
||||||
|
var pathThumbnail = __dirname;
|
||||||
|
pathThumbnails = __dirname + "/../";
|
||||||
|
var time_regex = /P((([0-9]*\.?[0-9]*)Y)?(([0-9]*\.?[0-9]*)M)?(([0-9]*\.?[0-9]*)W)?(([0-9]*\.?[0-9]*)D)?)?(T(([0-9]*\.?[0-9]*)H)?(([0-9]*\.?[0-9]*)M)?(([0-9]*\.?[0-9]*)S)?)?/;
|
||||||
|
try {
|
||||||
|
var keys = require(path.join(__dirname, '../config/api_key.js'));
|
||||||
|
var key = keys.youtube;
|
||||||
|
var soundcloudKey = keys.soundcloud;
|
||||||
|
} catch(e) {
|
||||||
|
console.log("Error - missing file");
|
||||||
|
console.log("Seems you forgot to create the file api_key.js in /server/config/. Have a look at api_key.example.js.");
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
var Search = require(pathThumbnail + '/../handlers/search.js');
|
||||||
|
var request = require('request');
|
||||||
|
var db = require(pathThumbnail + '/../handlers/db.js');
|
||||||
|
var currentList = 0;
|
||||||
|
var listNames = [];
|
||||||
|
db.getCollectionNames(function(e, d) {
|
||||||
|
for(var i = 0; i < d.length; i++) {
|
||||||
|
if(d[i].indexOf("_") < 0) {
|
||||||
|
listNames.push(d[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
console.log("Number of lists is " + listNames.length);
|
||||||
|
/*for(var i = 0; i < listNames.length; i++) {
|
||||||
|
getListItems(d[i]);
|
||||||
|
if(i > 1000) return;
|
||||||
|
}*/
|
||||||
|
recursivifyListLooping(listNames, 0);
|
||||||
|
});
|
||||||
|
|
||||||
|
function filterFunction(el) {
|
||||||
|
return el != null &&
|
||||||
|
el != "" &&
|
||||||
|
el != undefined &&
|
||||||
|
el.trim() != ''
|
||||||
|
}
|
||||||
|
|
||||||
|
function recursivifyListLooping(listNames, i) {
|
||||||
|
if(i > listNames.length) {
|
||||||
|
console.log("Done");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
console.log("List " + i + " of " + listNames.length);
|
||||||
|
getListItems(listNames, 0, function() {
|
||||||
|
console.log("done");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function getListItems(arr, i, callback) {
|
||||||
|
console.log("List " + i + " of " + listNames.length + " - " + arr[i]);
|
||||||
|
if(i >= arr.length) {
|
||||||
|
if(typeof(callback) == "function") callback();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
db.collection(arr[i]).find(function(e, d) {
|
||||||
|
if(d.length > 0) {
|
||||||
|
Search.get_genres_list_recursive(d, arr[i], function(){
|
||||||
|
getListItems(arr, i + 1, callback);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
getListItems(arr, i + 1, callback);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} catch(e) {
|
||||||
|
getListItems(arr, i + 1, callback);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -293,6 +293,7 @@ function addPlaylist(arr, guid, offline, socket) {
|
|||||||
_db.close();
|
_db.close();
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
Search.get_genres_list_recursive(arr.songs, channel);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -459,11 +460,11 @@ function add_function(arr, coll, guid, offline, socket) {
|
|||||||
var thumbnail = arr.thumbnail != undefined ? arr.thumbnail : undefined;
|
var thumbnail = arr.thumbnail != undefined ? arr.thumbnail : undefined;
|
||||||
Frontpage.update_frontpage(coll, id, title, thumbnail, arr.source);
|
Frontpage.update_frontpage(coll, id, title, thumbnail, arr.source);
|
||||||
if(source != "soundcloud") Search.get_correct_info(new_song, coll, false);
|
if(source != "soundcloud") Search.get_correct_info(new_song, coll, false);
|
||||||
else if(source == "soundcloud") Search.get_genres(new_song, coll);
|
else if(source == "soundcloud") Search.get_genres_soundcloud(new_song, coll);
|
||||||
} else {
|
} else {
|
||||||
io.to(coll).emit("channel", {type: "added", value: new_song});
|
io.to(coll).emit("channel", {type: "added", value: new_song});
|
||||||
if(source != "soundcloud") Search.get_correct_info(new_song, coll, true);
|
if(source != "soundcloud") Search.get_correct_info(new_song, coll, true);
|
||||||
else if(source == "soundcloud") Search.get_genres(new_song, coll);
|
else if(source == "soundcloud") Search.get_genres_soundcloud(new_song, coll);
|
||||||
}
|
}
|
||||||
db.collection("frontpage_lists").update({_id:coll}, {$inc:{count:1}, $set:{accessed: Functions.get_time()}}, {upsert:true}, function(err, docs){});
|
db.collection("frontpage_lists").update({_id:coll}, {$inc:{count:1}, $set:{accessed: Functions.get_time()}}, {upsert:true}, function(err, docs){});
|
||||||
List.getNextSong(coll, undefined);
|
List.getNextSong(coll, undefined);
|
||||||
|
|||||||
@@ -12,30 +12,229 @@ try {
|
|||||||
var request = require('request');
|
var request = require('request');
|
||||||
var db = require(pathThumbnails + '/handlers/db.js');
|
var db = require(pathThumbnails + '/handlers/db.js');
|
||||||
|
|
||||||
function get_genres(song, channel) {
|
function filterFunction(el) {
|
||||||
console.log(song);
|
return el != null &&
|
||||||
request("http://api.soundcloud.com/tracks/" + song.id + "?client_id=" + soundcloudKey, function(err, response, body) {
|
el != "" &&
|
||||||
var object = JSON.parse(body);
|
el != undefined &&
|
||||||
var genres = object.genre + "," + object.tag_list.replace(/"/g, "");
|
el.trim() != ''
|
||||||
genres = genres.toLowerCase().split(",");
|
}
|
||||||
genres = genres.filter(function (el) {
|
|
||||||
return el != null;
|
|
||||||
});
|
|
||||||
db.collection(channel).update({"id": song.id}, {
|
|
||||||
$set: {
|
|
||||||
"tags": genres
|
|
||||||
}
|
|
||||||
}, function(e,d) {
|
|
||||||
|
|
||||||
});
|
function get_genres_soundcloud(song, channel) {
|
||||||
|
request("http://api.soundcloud.com/tracks/" + song.id + "?client_id=" + soundcloudKey, function(err, response, body) {
|
||||||
|
if(err) {
|
||||||
|
console.log("error start", err, song, "error end");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
var object = JSON.parse(body);
|
||||||
|
if(!object.hasOwnProperty("genre") || !object.hasOwnProperty("tag_list")) return;
|
||||||
|
var genre = object.genre + ",";
|
||||||
|
genre = genre.toLowerCase().split(",").concat(object.tag_list.toLowerCase().split('"'));
|
||||||
|
genre = genre.filter(filterFunction);
|
||||||
|
|
||||||
|
db.collection(channel).update({"id": song.id}, {
|
||||||
|
$set: {
|
||||||
|
"tags": genre
|
||||||
|
}
|
||||||
|
}, function(e,d) {
|
||||||
|
|
||||||
|
});
|
||||||
|
} catch(e) {
|
||||||
|
console.log("errored 2", e);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function get_genres_list(list, channel) {
|
||||||
|
var youtube_array = "";
|
||||||
|
var i = 0;
|
||||||
|
try {
|
||||||
|
for(var i = 0; i < list.length; i++) {
|
||||||
|
|
||||||
|
if(!list[i].hasOwnProperty("id")) continue;
|
||||||
|
if(list[i].source == undefined || list[i].source == "youtube") {
|
||||||
|
youtube_array += list[i].id + ",";
|
||||||
|
}
|
||||||
|
else if(list[i].source != undefined && list[i].source == "soundcloud") {
|
||||||
|
get_genres_soundcloud(list[i], channel);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(youtube_array.length > 0) {
|
||||||
|
if(youtube_array > 49) {
|
||||||
|
var subList = [];
|
||||||
|
for(var i = 0; i < youtube_array.length; i++) {
|
||||||
|
subList.push(youtube_array[i]);
|
||||||
|
if(subList.length > 49) {
|
||||||
|
get_genres_youtube(subList.join(","), channel);
|
||||||
|
subList = [];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
get_genres_youtube(subList.join(","), channel);
|
||||||
|
subList = [];
|
||||||
|
} else {
|
||||||
|
get_genres_youtube(youtube_array, channel);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch(e) {
|
||||||
|
console.log("errored", e);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function start_soundcloud_get(arr, channel, callback) {
|
||||||
|
get_genres_soundcloud_recursive(arr, channel, 0, callback);
|
||||||
|
}
|
||||||
|
|
||||||
|
function get_genres_soundcloud_recursive(arr, channel, i, callback) {
|
||||||
|
if(i >= arr.length) {
|
||||||
|
if(typeof(callback) == "function") callback();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var song = arr[i];
|
||||||
|
request("http://api.soundcloud.com/tracks/" + song.id + "?client_id=" + soundcloudKey, function(err, response, body) {
|
||||||
|
if(err) {
|
||||||
|
console.log("error start", err, song, "error end");
|
||||||
|
get_genres_soundcloud_recursive(arr, channel, i + 1, callback);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
var object = JSON.parse(body);
|
||||||
|
if(!object.hasOwnProperty("genre") || !object.hasOwnProperty("tag_list")) {
|
||||||
|
get_genres_soundcloud_recursive(arr, channel, i + 1, callback);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var genre = object.genre + ",";
|
||||||
|
genre = genre.toLowerCase().split(",").concat(object.tag_list.toLowerCase().split('"'));
|
||||||
|
genre = genre.filter(filterFunction);
|
||||||
|
|
||||||
|
db.collection(channel).update({"id": song.id}, {
|
||||||
|
$set: {
|
||||||
|
"tags": genre
|
||||||
|
}
|
||||||
|
}, function(e,d) {
|
||||||
|
get_genres_soundcloud_recursive(arr, channel, i + 1, callback);
|
||||||
|
});
|
||||||
|
} catch(e) {
|
||||||
|
console.log("errored 2", e);
|
||||||
|
get_genres_soundcloud_recursive(arr, channel, i + 1, callback);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function get_genres_list_recursive(list, channel, callback) {
|
||||||
|
var youtube_array = [];
|
||||||
|
var soundcloud_array = [];
|
||||||
|
for(var i = 0; i < list.length; i++) {
|
||||||
|
if(!list[i].hasOwnProperty("id")) continue;
|
||||||
|
if(list[i].source == undefined || list[i].source == "youtube") {
|
||||||
|
youtube_array.push(list[i]);
|
||||||
|
}
|
||||||
|
else if(list[i].source != undefined && list[i].source == "soundcloud") {
|
||||||
|
soundcloud_array.push(list[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
start_youtube_get(youtube_array, channel, function() {
|
||||||
|
start_soundcloud_get(soundcloud_array, channel, function() {
|
||||||
|
if(typeof(callback) == "function") callback();
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
function start_youtube_get(arr, channel, callback) {
|
||||||
|
get_genres_youtube_recursive(arr, channel, 0, callback)
|
||||||
|
}
|
||||||
|
|
||||||
|
function get_genres_youtube_recursive(arr, channel, i, callback) {
|
||||||
|
if(i >= arr.length) {
|
||||||
|
if(typeof(callback) == "function") callback();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var ids = [];
|
||||||
|
for(var y = i; y < arr.length; y++) {
|
||||||
|
if(ids.length >= 48) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
ids.push(arr[y].id);
|
||||||
|
}
|
||||||
|
request({
|
||||||
|
type: "GET",
|
||||||
|
url: "https://www.googleapis.com/youtube/v3/videos?part=contentDetails,snippet,id,topicDetails&key="+key+"&id=" + ids.join(","),
|
||||||
|
}, function(error, response, body) {
|
||||||
|
if(error) {
|
||||||
|
console.log(arr, channel, i, arr[i]);
|
||||||
|
console.log("error start 1", error, ids, "error end");
|
||||||
|
get_genres_youtube_recursive(arr, channel, i + ids.length, callback);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var resp = JSON.parse(body);
|
||||||
|
if(!resp.hasOwnProperty("items")) {
|
||||||
|
console.log("error start 2", resp, ids, "error end");
|
||||||
|
get_genres_youtube_recursive(arr, channel, i + ids.length, callback);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if(resp.items.length > 0) {
|
||||||
|
for(var z = 0; z < resp.items.length; z++) {
|
||||||
|
if(!resp.items[z].hasOwnProperty("topicDetails")) continue;
|
||||||
|
var genre = resp.items[z].topicDetails.topicCategories;
|
||||||
|
genre = genre.join(",");
|
||||||
|
genre = genre.replace(new RegExp("https://en.wikipedia.org/wiki/", "g"), "");
|
||||||
|
genre = genre.replace(/_/g, " ").toLowerCase().split(",");
|
||||||
|
genre = genre.filter(filterFunction);
|
||||||
|
//console.log(resp.items[i].id + " - ", genre);
|
||||||
|
db.collection(channel).update({"id": resp.items[z].id}, {
|
||||||
|
$set: {
|
||||||
|
"tags": genre
|
||||||
|
}
|
||||||
|
}, function(e, d) {
|
||||||
|
});
|
||||||
|
}
|
||||||
|
get_genres_youtube_recursive(arr, channel, i + ids.length, callback);
|
||||||
|
} else {
|
||||||
|
get_genres_youtube_recursive(arr, channel, i + ids.length, callback);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function get_genres_youtube(ids, channel) {
|
||||||
|
request({
|
||||||
|
type: "GET",
|
||||||
|
url: "https://www.googleapis.com/youtube/v3/videos?part=contentDetails,snippet,id,topicDetails&key="+key+"&id=" + ids,
|
||||||
|
}, function(error, response, body) {
|
||||||
|
if(error) {
|
||||||
|
console.log("error start", error, ids, "error end");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var resp = JSON.parse(body);
|
||||||
|
if(!resp.hasOwnProperty("items")) {
|
||||||
|
console.log("error start", resp, ids, "error end");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if(resp.items.length > 0) {
|
||||||
|
for(var i = 0; i < resp.items.length; i++) {
|
||||||
|
if(!resp.items[i].hasOwnProperty("topicDetails")) continue;
|
||||||
|
var genre = resp.items[i].topicDetails.topicCategories;
|
||||||
|
genre = genre.join(",");
|
||||||
|
genre = genre.replace(new RegExp("https://en.wikipedia.org/wiki/", "g"), "");
|
||||||
|
genre = genre.replace(/_/g, " ").toLowerCase().split(",");
|
||||||
|
genre = genre.filter(filterFunction);
|
||||||
|
//console.log(resp.items[i].id + " - ", genre);
|
||||||
|
db.collection(channel).update({"id": resp.items[i].id}, {
|
||||||
|
$set: {
|
||||||
|
"tags": genre
|
||||||
|
}
|
||||||
|
}, function(e, d) {});
|
||||||
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function get_correct_info(song_generated, channel, broadcast, callback) {
|
function get_correct_info(song_generated, channel, broadcast, callback) {
|
||||||
//channel = channel.replace(/ /g,'');
|
//channel = channel.replace(/ /g,'');
|
||||||
request({
|
request({
|
||||||
type: "GET",
|
type: "GET",
|
||||||
url: "https://www.googleapis.com/youtube/v3/videos?part=contentDetails,snippet,id,topicDetails&key="+key+"&id=" + song_generated.id,
|
url: "https://www.googleapis.com/youtube/v3/videos?part=contentDetails,snippet,id,topicDetails&key="+key+"&id=" + song_generated.id,
|
||||||
|
|
||||||
}, function(error, response, body) {
|
}, function(error, response, body) {
|
||||||
try {
|
try {
|
||||||
@@ -47,9 +246,8 @@ function get_correct_info(song_generated, channel, broadcast, callback) {
|
|||||||
genre = genre.join(",");
|
genre = genre.join(",");
|
||||||
genre = genre.replace(new RegExp("https://en.wikipedia.org/wiki/", "g"), "");
|
genre = genre.replace(new RegExp("https://en.wikipedia.org/wiki/", "g"), "");
|
||||||
genre = genre.replace(/_/g, " ").toLowerCase().split(",");
|
genre = genre.replace(/_/g, " ").toLowerCase().split(",");
|
||||||
genre = genre.filter(function (el) {
|
genre = genre.filter(filterFunction);
|
||||||
return el != null;
|
//console.log(genre + " - ", song_generated.id);
|
||||||
});
|
|
||||||
if(title != song_generated.title || duration < parseInt(song_generated.duration)) {
|
if(title != song_generated.title || duration < parseInt(song_generated.duration)) {
|
||||||
if(title != song_generated.title) {
|
if(title != song_generated.title) {
|
||||||
song_generated.title = title;
|
song_generated.title = title;
|
||||||
@@ -106,24 +304,24 @@ function get_correct_info(song_generated, channel, broadcast, callback) {
|
|||||||
|
|
||||||
function check_error_video(msg, channel) {
|
function check_error_video(msg, channel) {
|
||||||
if(!msg.hasOwnProperty("id") || !msg.hasOwnProperty("title") ||
|
if(!msg.hasOwnProperty("id") || !msg.hasOwnProperty("title") ||
|
||||||
typeof(msg.id) != "string" || typeof(msg.title) != "string") {
|
typeof(msg.id) != "string" || typeof(msg.title) != "string") {
|
||||||
var result = {
|
var result = {
|
||||||
id: {
|
id: {
|
||||||
expected: "string",
|
expected: "string",
|
||||||
got: msg.hasOwnProperty("id") ? typeof(msg.id) : undefined,
|
got: msg.hasOwnProperty("id") ? typeof(msg.id) : undefined,
|
||||||
},
|
},
|
||||||
title: {
|
title: {
|
||||||
expected: "string",
|
expected: "string",
|
||||||
got: msg.hasOwnProperty("title") ? typeof(msg.title) : undefined,
|
got: msg.hasOwnProperty("title") ? typeof(msg.title) : undefined,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(msg.source == "soundcloud") return;
|
if(msg.source == "soundcloud") return;
|
||||||
//channel = channel.replace(/ /g,'');
|
//channel = channel.replace(/ /g,'');
|
||||||
request({
|
request({
|
||||||
type: "GET",
|
type: "GET",
|
||||||
url: "https://www.googleapis.com/youtube/v3/videos?part=id&key="+key+"&id=" + msg.id,
|
url: "https://www.googleapis.com/youtube/v3/videos?part=id&key="+key+"&id=" + msg.id,
|
||||||
|
|
||||||
}, function(error, response, body) {
|
}, function(error, response, body) {
|
||||||
try {
|
try {
|
||||||
@@ -151,8 +349,8 @@ function findSimilar(msg, channel, broadcast, callback) {
|
|||||||
vid_url += resp.items[i].id.videoId + ",";
|
vid_url += resp.items[i].id.videoId + ",";
|
||||||
}
|
}
|
||||||
request({
|
request({
|
||||||
type: "GET",
|
type: "GET",
|
||||||
url: vid_url
|
url: vid_url
|
||||||
}, function(error, response, body) {
|
}, function(error, response, body) {
|
||||||
var resp = JSON.parse(body);
|
var resp = JSON.parse(body);
|
||||||
var found = false;
|
var found = false;
|
||||||
@@ -199,44 +397,44 @@ function findSimilar(msg, channel, broadcast, callback) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function similarity(s1, s2) {
|
function similarity(s1, s2) {
|
||||||
var longer = s1;
|
var longer = s1;
|
||||||
var shorter = s2;
|
var shorter = s2;
|
||||||
if (s1.length < s2.length) {
|
if (s1.length < s2.length) {
|
||||||
longer = s2;
|
longer = s2;
|
||||||
shorter = s1;
|
shorter = s1;
|
||||||
}
|
}
|
||||||
var longerLength = longer.length;
|
var longerLength = longer.length;
|
||||||
if (longerLength == 0) {
|
if (longerLength == 0) {
|
||||||
return 1.0;
|
return 1.0;
|
||||||
}
|
}
|
||||||
return (longerLength - editDistance(longer, shorter)) / parseFloat(longerLength);
|
return (longerLength - editDistance(longer, shorter)) / parseFloat(longerLength);
|
||||||
}
|
}
|
||||||
|
|
||||||
function editDistance(s1, s2) {
|
function editDistance(s1, s2) {
|
||||||
s1 = s1.toLowerCase();
|
s1 = s1.toLowerCase();
|
||||||
s2 = s2.toLowerCase();
|
s2 = s2.toLowerCase();
|
||||||
|
|
||||||
var costs = new Array();
|
var costs = new Array();
|
||||||
for (var i = 0; i <= s1.length; i++) {
|
for (var i = 0; i <= s1.length; i++) {
|
||||||
var lastValue = i;
|
var lastValue = i;
|
||||||
for (var j = 0; j <= s2.length; j++) {
|
for (var j = 0; j <= s2.length; j++) {
|
||||||
if (i == 0)
|
if (i == 0)
|
||||||
costs[j] = j;
|
costs[j] = j;
|
||||||
else {
|
else {
|
||||||
if (j > 0) {
|
if (j > 0) {
|
||||||
var newValue = costs[j - 1];
|
var newValue = costs[j - 1];
|
||||||
if (s1.charAt(i - 1) != s2.charAt(j - 1))
|
if (s1.charAt(i - 1) != s2.charAt(j - 1))
|
||||||
newValue = Math.min(Math.min(newValue, lastValue),
|
newValue = Math.min(Math.min(newValue, lastValue),
|
||||||
costs[j]) + 1;
|
costs[j]) + 1;
|
||||||
costs[j - 1] = lastValue;
|
costs[j - 1] = lastValue;
|
||||||
lastValue = newValue;
|
lastValue = newValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
if (i > 0)
|
||||||
|
costs[s2.length] = lastValue;
|
||||||
}
|
}
|
||||||
if (i > 0)
|
return costs[s2.length];
|
||||||
costs[s2.length] = lastValue;
|
|
||||||
}
|
|
||||||
return costs[s2.length];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function durationToSeconds(duration) {
|
function durationToSeconds(duration) {
|
||||||
@@ -247,6 +445,9 @@ function durationToSeconds(duration) {
|
|||||||
return hours*60*60+minutes*60+seconds;
|
return hours*60*60+minutes*60+seconds;
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports.get_genres = get_genres;
|
module.exports.get_genres_list_recursive = get_genres_list_recursive;
|
||||||
|
module.exports.get_genres_soundcloud = get_genres_soundcloud;
|
||||||
|
module.exports.get_genres_youtube = get_genres_youtube;
|
||||||
|
module.exports.get_genres_list = get_genres_list;
|
||||||
module.exports.check_error_video = check_error_video;
|
module.exports.check_error_video = check_error_video;
|
||||||
module.exports.get_correct_info = get_correct_info;
|
module.exports.get_correct_info = get_correct_info;
|
||||||
|
|||||||
@@ -1331,7 +1331,8 @@ var List = {
|
|||||||
//song.querySelector(".list-image").setAttribute("class", song.querySelector(".list-image").getAttribute("class").replace("list-image", "list-suggested-image"));
|
//song.querySelector(".list-image").setAttribute("class", song.querySelector(".list-image").getAttribute("class").replace("list-image", "list-suggested-image"));
|
||||||
} else if(filtered) {
|
} else if(filtered) {
|
||||||
song.querySelector("#list-song").className += " filtered-search-element";
|
song.querySelector("#list-song").className += " filtered-search-element";
|
||||||
song.querySelector(".list-votes").innerText = video_votes;
|
song.querySelector(".list-votes").innerText = _song_info.tags.join(", ");
|
||||||
|
song.querySelector(".vote-text").remove();
|
||||||
song.querySelector("#list-song").setAttribute("data-video-id", video_id);
|
song.querySelector("#list-song").setAttribute("data-video-id", video_id);
|
||||||
song.querySelector("#list-song").setAttribute("data-video-type", "song");
|
song.querySelector("#list-song").setAttribute("data-video-type", "song");
|
||||||
song.querySelector("#list-song").setAttribute("data-video-source", _song_info.source);
|
song.querySelector("#list-song").setAttribute("data-video-source", _song_info.source);
|
||||||
|
|||||||
@@ -691,6 +691,7 @@ function addDynamicListeners() {
|
|||||||
|
|
||||||
addListener("click", "#open_advanced_filter", function(e) {
|
addListener("click", "#open_advanced_filter", function(e) {
|
||||||
this.preventDefault();
|
this.preventDefault();
|
||||||
|
document.getElementById("filtersearch_input").focus();
|
||||||
M.Modal.getInstance(document.getElementById("advanced_filter")).open();
|
M.Modal.getInstance(document.getElementById("advanced_filter")).open();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user