mirror of
https://github.com/KevinMidboe/zoff.git
synced 2025-12-08 20:48:48 +00:00
Merge pull request #216 from zoff-music/feature/song-validation
Feature/song validation
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,5 +1,6 @@
|
||||
server/public/assets/images/thumbnails/
|
||||
server/config/mailconfig.js
|
||||
server/config/api_key.js
|
||||
server/config/mongo_config.js
|
||||
server/config/cert_config.js
|
||||
server/public/assets/dist/callback.min.js
|
||||
|
||||
3
server/config/api_key.example.js
Normal file
3
server/config/api_key.example.js
Normal file
@@ -0,0 +1,3 @@
|
||||
var key = "xxxx";
|
||||
|
||||
module.exports = key;
|
||||
@@ -88,8 +88,11 @@ function add_function(arr, coll, guid, offline, socket) {
|
||||
db.collection(coll).update({views:{$exists:true}}, {$set:{startTime: Functions.get_time()}});
|
||||
List.send_play(coll, undefined);
|
||||
Frontpage.update_frontpage(coll, id, title);
|
||||
Search.get_correct_info(new_song, coll, false);
|
||||
} else {
|
||||
io.to(coll).emit("channel", {type: "added", value: {"_id": "asd", "added":added,"guids":guids,"id":id,"now_playing":np,"title":title,"votes":votes, "duration":duration}});
|
||||
var new_song = {"_id": "asd", "added":added,"guids":guids,"id":id,"now_playing":np,"title":title,"votes":votes, "duration":duration};
|
||||
io.to(coll).emit("channel", {type: "added", value: new_song});
|
||||
Search.get_correct_info(new_song, coll, true);
|
||||
}
|
||||
db.collection("frontpage_lists").update({_id:coll}, {$inc:{count:1}, $set:{accessed: Functions.get_time()}}, {upsert:true}, function(err, docs){});
|
||||
List.getNextSong(coll);
|
||||
|
||||
50
server/handlers/search.js
Normal file
50
server/handlers/search.js
Normal file
@@ -0,0 +1,50 @@
|
||||
var path = require('path');
|
||||
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)?)?/;
|
||||
var key = require(path.join(__dirname, '../config/api_key.js'));
|
||||
|
||||
function get_correct_info(song_generated, channel, broadcast) {
|
||||
request({
|
||||
type: "GET",
|
||||
url: "https://www.googleapis.com/youtube/v3/videos?part=contentDetails,snippet,id&key="+key+"&id=" + song_generated.id,
|
||||
|
||||
}, function(error, response, body) {
|
||||
var resp = JSON.parse(body);
|
||||
if(resp.items.length == 1) {
|
||||
var duration = parseInt(durationToSeconds(resp.items[0].contentDetails.duration));
|
||||
var title = resp.items[0].snippet.localized.title;
|
||||
if(title != song_generated.title || duration < parseInt(song_generated.duration)) {
|
||||
if(title != song_generated.title) {
|
||||
song_generated.title = title;
|
||||
}
|
||||
if(duration < parseInt(song_generated.duration)) {
|
||||
song_generated.duration = duration;
|
||||
song_generated.start = 0;
|
||||
song_generated.end = duration;
|
||||
}
|
||||
db.collection(channel).update({"id": song_generated.id}, {
|
||||
$set: {
|
||||
"duration": song_generated.duration,
|
||||
"start": song_generated.start,
|
||||
"end": song_generated.end,
|
||||
"title": song_generated.title,
|
||||
}
|
||||
}, function(err, docs) {
|
||||
if(broadcast) {
|
||||
io.to(channel).emit("channel", {type: "changed_values", value: song_generated});
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
function durationToSeconds(duration) {
|
||||
var matches = duration.match(time_regex);
|
||||
hours= parseInt(matches[12])||0;
|
||||
minutes= parseInt(matches[14])||0;
|
||||
seconds= parseInt(matches[16])||0;
|
||||
return hours*60*60+minutes*60+seconds;
|
||||
}
|
||||
|
||||
module.exports.get_correct_info = get_correct_info;
|
||||
@@ -87,6 +87,7 @@ List = require('./handlers/list.js');
|
||||
Suggestions = require('./handlers/suggestions.js');
|
||||
ListSettings = require('./handlers/list_settings.js');
|
||||
Frontpage = require('./handlers/frontpage.js');
|
||||
Search = require('./handlers/search.js');
|
||||
crypto = require('crypto');
|
||||
node_cryptojs = require('node-cryptojs-aes');
|
||||
CryptoJS = node_cryptojs.CryptoJS;
|
||||
|
||||
@@ -136,6 +136,9 @@ var List = {
|
||||
found_array_index = 0;
|
||||
//if(!w_p) List.dragging(true);
|
||||
break;
|
||||
case "changed_values":
|
||||
List.changedValues(msg.value);
|
||||
break;
|
||||
case "song_change_prev":
|
||||
if(window.location.pathname != "/") List.song_change_prev(msg.time);
|
||||
if(full_playlist.length > 0) {
|
||||
@@ -148,6 +151,20 @@ var List = {
|
||||
}
|
||||
},
|
||||
|
||||
changedValues: function(song) {
|
||||
var i = List.getIndexOfSong(song.id);
|
||||
full_playlist[i].title = song.title;
|
||||
full_playlist[i].duration = song.duration;
|
||||
full_playlist[i].start = song.start;
|
||||
full_playlist[i].end = song.end;
|
||||
|
||||
$("#" + song.id).find(".vote-container").attr("title", song.title);
|
||||
$("#" + song.id).find(".list-title").attr("title", song.title);
|
||||
$("#" + song.id).find(".list-title").text(song.title);
|
||||
var _temp_duration = Helper.secondsToOther(song.duration);
|
||||
$("#" + song.id).find(".card-duration").text(Helper.pad(_temp_duration[0]) + ":" + Helper.pad(_temp_duration[1]));
|
||||
},
|
||||
|
||||
insertAtBeginning: function(song_info, transition) {
|
||||
var display = List.page == 0 ? "" : "none";
|
||||
var add = List.generateSong(song_info, transition, false, true, false, display, false);
|
||||
|
||||
Reference in New Issue
Block a user