Fallback with iframed soundcloud player for rate-limit reached

- Messes up history of current tab, but it's better than not playing any music
This commit is contained in:
Kasper Rynning-Tønnesen
2018-09-25 17:49:49 +02:00
parent e5221ad88b
commit 39a2fc6532
12 changed files with 271 additions and 96 deletions

View File

@@ -2,6 +2,7 @@ var gulp = require('gulp'),
gutil = require('gulp-util'), gutil = require('gulp-util'),
uglify = require('gulp-uglify'), uglify = require('gulp-uglify'),
//sourcemaps = require('gulp-sourcemaps'), //sourcemaps = require('gulp-sourcemaps'),
gutil = require('gulp-util'),
concat = require('gulp-concat'), concat = require('gulp-concat'),
cssnano = require('gulp-cssnano'); cssnano = require('gulp-cssnano');
@@ -38,7 +39,7 @@ gulp.task('js', function () {
compress: true, compress: true,
enclose: true, enclose: true,
})) }))
.on('error', function (err) { gutil.log(gutil.colors.red('[Error]'), err.toString()); })
//.pipe(sourcemaps.write('maps')) //.pipe(sourcemaps.write('maps'))
.pipe(gulp.dest('server/public/assets/dist')); .pipe(gulp.dest('server/public/assets/dist'));
}); });
@@ -52,6 +53,7 @@ gulp.task('embed', function () {
compress: true, compress: true,
enclose: true enclose: true
})) }))
.on('error', function (err) { gutil.log(gutil.colors.red('[Error]'), err.toString()); })
//.pipe(sourcemaps.write('maps')) //.pipe(sourcemaps.write('maps'))
.pipe(gulp.dest('server/public/assets/dist')); .pipe(gulp.dest('server/public/assets/dist'));
}); });
@@ -65,6 +67,7 @@ gulp.task('token', function() {
compress: true, compress: true,
enclose: true enclose: true
})) }))
.on('error', function (err) { gutil.log(gutil.colors.red('[Error]'), err.toString()); })
//.pipe(sourcemaps.write('maps')) //.pipe(sourcemaps.write('maps'))
.pipe(gulp.dest('server/public/assets/dist')); .pipe(gulp.dest('server/public/assets/dist'));
@@ -79,6 +82,7 @@ gulp.task('callback', function () {
compress: true, compress: true,
enclose: true enclose: true
})) }))
.on('error', function (err) { gutil.log(gutil.colors.red('[Error]'), err.toString()); })
//.pipe(sourcemaps.write('maps')) //.pipe(sourcemaps.write('maps'))
.pipe(gulp.dest('server/public/assets/dist')); .pipe(gulp.dest('server/public/assets/dist'));
@@ -97,6 +101,7 @@ gulp.task('remotecontroller', function () {
compress: true, compress: true,
enclose: true enclose: true
})) }))
.on('error', function (err) { gutil.log(gutil.colors.red('[Error]'), err.toString()); })
//.pipe(sourcemaps.write('maps')) //.pipe(sourcemaps.write('maps'))
.pipe(gulp.dest('server/public/assets/dist')); .pipe(gulp.dest('server/public/assets/dist'));

54
package-lock.json generated
View File

@@ -2755,6 +2755,27 @@
"optimist": "^0.6.1", "optimist": "^0.6.1",
"source-map": "^0.4.4", "source-map": "^0.4.4",
"uglify-js": "^2.6" "uglify-js": "^2.6"
},
"dependencies": {
"uglify-js": {
"version": "2.8.29",
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz",
"integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=",
"optional": true,
"requires": {
"source-map": "~0.5.1",
"uglify-to-browserify": "~1.0.0",
"yargs": "~3.10.0"
},
"dependencies": {
"source-map": {
"version": "0.5.7",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
"integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
"optional": true
}
}
}
} }
}, },
"har-schema": { "har-schema": {
@@ -4920,20 +4941,6 @@
"inherits": "~2.0.1", "inherits": "~2.0.1",
"isarray": "0.0.1", "isarray": "0.0.1",
"string_decoder": "~0.10.x" "string_decoder": "~0.10.x"
},
"dependencies": {
"core-util-is": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
"dev": true
},
"inherits": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
"dev": true
}
} }
}, },
"rechoir": { "rechoir": {
@@ -6057,25 +6064,6 @@
} }
} }
}, },
"uglify-js": {
"version": "2.8.29",
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz",
"integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=",
"optional": true,
"requires": {
"source-map": "~0.5.1",
"uglify-to-browserify": "~1.0.0",
"yargs": "~3.10.0"
},
"dependencies": {
"source-map": {
"version": "0.5.7",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
"integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
"optional": true
}
}
},
"uglify-to-browserify": { "uglify-to-browserify": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz",

View File

@@ -24,7 +24,7 @@
"gulp-concat": "^2.6.1", "gulp-concat": "^2.6.1",
"gulp-cssnano": "^2.1.3", "gulp-cssnano": "^2.1.3",
"gulp-uglify": "^3.0.1", "gulp-uglify": "^3.0.1",
"gulp-util": "~3.0.6" "gulp-util": "^3.0.8"
}, },
"homepage": "https://github.com/zoff-music/zoff#readme", "homepage": "https://github.com/zoff-music/zoff#readme",
"dependencies": { "dependencies": {

View File

@@ -197,7 +197,8 @@ var Channel = {
Player.player.setVolume(Crypt.get_volume()); Player.player.setVolume(Crypt.get_volume());
} catch(e){} } catch(e){}
try { try {
Player.soundcloud_player.setVolume(embed ? 1 : Crypt.get_volume() / 100); if(scUsingWidget) Player.soundcloud_player.setVolume(embed ? 1 : Crypt.get_volume());
else Player.soundcloud_player.setVolume(embed ? 1 : Crypt.get_volume() / 100);
} catch(e){} } catch(e){}
} }
Helper.removeClass(".video-container", "no-opacity"); Helper.removeClass(".video-container", "no-opacity");

View File

@@ -35,6 +35,15 @@ function resizeFunction() {
if(!client && !embed) { if(!client && !embed) {
var scPlaying = false; var scPlaying = false;
var ytPlaying = false; var ytPlaying = false;
if(scUsingWidget) {
Player.soundcloud_player.isPaused(function(paused) {
try {
ytPlaying = Player.player.getPlayerState() == YT.PlayerState.PLAYING || Player.player.getPlayerState() == YT.PlayerState.BUFFERING;
} catch(e) {}
scPlaying = !paused;
resizePlaylistPlaying(ytPlaying || scPlaying);
})
} else {
try { try {
ytPlaying = Player.player.getPlayerState() == YT.PlayerState.PLAYING || Player.player.getPlayerState() == YT.PlayerState.BUFFERING; ytPlaying = Player.player.getPlayerState() == YT.PlayerState.PLAYING || Player.player.getPlayerState() == YT.PlayerState.BUFFERING;
} catch(e) {} } catch(e) {}
@@ -42,6 +51,7 @@ function resizeFunction() {
scPlaying = Player.soundcloud_player.isPlaying(); scPlaying = Player.soundcloud_player.isPlaying();
} catch(e){} } catch(e){}
resizePlaylistPlaying(ytPlaying || scPlaying); resizePlaylistPlaying(ytPlaying || scPlaying);
}
return; return;
} }
} }
@@ -185,7 +195,8 @@ function hide_native(way) {
Helper.setHtml("#chromecast_text", "Playing on<br>" + castSession.getCastDevice().friendlyName); Helper.setHtml("#chromecast_text", "Playing on<br>" + castSession.getCastDevice().friendlyName);
} }
Player.player.setVolume(100); Player.player.setVolume(100);
Player.soundcloud_player.setVolume(1); if(scUsingWidget) Player.soundcloud_player.setVolume(100);
else Player.soundcloud_player.setVolume(1);
Helper.addClass("#player_overlay_text", "hide"); Helper.addClass("#player_overlay_text", "hide");
} else if(way == 0){ } else if(way == 0){
@@ -214,7 +225,8 @@ function hide_native(way) {
if(!Helper.mobilecheck()){ if(!Helper.mobilecheck()){
Player.player.setVolume(Crypt.get_volume()); Player.player.setVolume(Crypt.get_volume());
Playercontrols.visualVolume(Crypt.get_volume()); Playercontrols.visualVolume(Crypt.get_volume());
Player.soundcloud_player.setVolume(embed ? 1 : Crypt.get_volume() / 100); if(scUsingWidget) Player.soundcloud_player.setVolume(embed ? 1 : Crypt.get_volume());
else Player.soundcloud_player.setVolume(embed ? 1 : Crypt.get_volume() / 100);
} }
Helper.addClass("#player_overlay", "hide"); Helper.addClass("#player_overlay", "hide");
Helper.removeClass("#player_overlay_text", "hide"); Helper.removeClass("#player_overlay_text", "hide");

View File

@@ -40,7 +40,8 @@ var Hostcontroller = {
try { try {
Playercontrols.visualVolume(arr.value); Playercontrols.visualVolume(arr.value);
Player.setVolume(arr.value); Player.setVolume(arr.value);
Player.soundcloud_player.setVolume(arr.value / 100); if(scUsingWidget) Player.soundcloud_player.setVolume(arr.value);
else Player.soundcloud_player.setVolume(arr.value / 100);
try { try {
localStorage.setItem("volume", arr.value); localStorage.setItem("volume", arr.value);
} catch(e){} } catch(e){}

View File

@@ -12,6 +12,9 @@ try {
} catch(e) { } catch(e) {
_VERSION = 6; _VERSION = 6;
} }
var SC_widget;
var scUsingWidget = false;
var SC_player;
var soundcloud_enabled = true; var soundcloud_enabled = true;
var local_new_channel = false; var local_new_channel = false;
var sc_need_initialization = false; var sc_need_initialization = false;
@@ -257,25 +260,29 @@ window.addEventListener("DOMContentLoaded", function() {
tagSC.readyState == "complete"){ tagSC.readyState == "complete"){
tagSC.onreadystatechange = null; tagSC.onreadystatechange = null;
if(sc_need_initialization) { if(sc_need_initialization) {
Player.soundcloudReady(); //Player.soundcloudReady();
} else { } else {
SC.initialize({ SC_player = SC;
SC_player.initialize({
client_id: api_key.soundcloud client_id: api_key.soundcloud
}, function() { }, function() {
}); });
} }
Player.loadSoundCloudIframe();
} }
}; };
} else { //Others } else { //Others
tagSC.onload = function(){ tagSC.onload = function(){
if(sc_need_initialization) { if(sc_need_initialization) {
Player.soundcloudReady(); //Player.soundcloudReady();
} else { } else {
SC.initialize({ SC_player = SC;
SC_player.initialize({
client_id: api_key.soundcloud client_id: api_key.soundcloud
}, function() { }, function() {
}); });
} }
Player.loadSoundCloudIframe();
}; };
} }
tagSC.src = "https://connect.soundcloud.com/sdk/sdk-3.3.0.js"; tagSC.src = "https://connect.soundcloud.com/sdk/sdk-3.3.0.js";
@@ -283,7 +290,7 @@ window.addEventListener("DOMContentLoaded", function() {
firstScriptTagSC.parentNode.insertBefore(tagSC, firstScriptTagSC); firstScriptTagSC.parentNode.insertBefore(tagSC, firstScriptTagSC);
} }
} else if(window.location.pathname == "/" && client) { } else if(window.location.pathname == "/" && client) {
Player.loadSoundCloudPlayer(); //Player.loadSoundCloudPlayer();
} }
if(Helper.mobilecheck()) { if(Helper.mobilecheck()) {
@@ -676,6 +683,7 @@ function addDynamicListeners() {
Player.soundcloud_player.unbind("play", Player.soundcloudPlay); Player.soundcloud_player.unbind("play", Player.soundcloudPlay);
Player.soundcloud_player.kill(); Player.soundcloud_player.kill();
} catch(error){} } catch(error){}
if(scUsingWidget) document.querySelector("#sc_player").innerHTML = "";
socket.removeEventListener("np"); socket.removeEventListener("np");
socket.removeEventListener("id"); socket.removeEventListener("id");
socket.removeEventListener(id); socket.removeEventListener(id);
@@ -711,7 +719,9 @@ function addDynamicListeners() {
}); });
addListener("click", "#player_overlay", function(event) { addListener("click", "#player_overlay", function(event) {
if(videoSource == "soundcloud") Playercontrols.play_pause(); if(videoSource == "soundcloud") {
Playercontrols.play_pause();
}
}); });
/* /*

View File

@@ -7,6 +7,7 @@ var Player = {
stopInterval: false, stopInterval: false,
fireplace: "", fireplace: "",
np: {}, np: {},
seeking: false,
soundcloud_dead: false, soundcloud_dead: false,
soundcloud_player: { soundcloud_player: {
setVolume: function(val) {} setVolume: function(val) {}
@@ -301,7 +302,7 @@ var Player = {
return; return;
} }
try { try {
if(SC == null) return; if(SC_player == null) return;
} catch(e) { } catch(e) {
return; return;
} }
@@ -314,7 +315,7 @@ var Player = {
soundcloud_loading = false; soundcloud_loading = false;
var _autoAdd = "false"; var _autoAdd = "false";
try { try {
if(SC == null || !SC.stream) return; if(SC_player == null || !SC_player.stream) return;
} catch(e) { } catch(e) {
return; return;
} }
@@ -324,14 +325,15 @@ var Player = {
_autoAdd = "true"; _autoAdd = "true";
Helper.removeClass("#player_loader_container", "hide"); Helper.removeClass("#player_loader_container", "hide");
} }
SC.stream("/tracks/" + id).then(function(player){
SC_player.stream("/tracks/" + id).then(function(player){
Player.soundcloud_player = player; Player.soundcloud_player = player;
Player.soundcloud_player.bind("finish", Player.soundcloudFinish); Player.soundcloud_player.bind("finish", Player.soundcloudFinish);
Player.soundcloud_player.bind("pause", Player.soundcloudPause); Player.soundcloud_player.bind("pause", Player.soundcloudPause);
Player.soundcloud_player.bind("play", Player.soundcloudPlay); Player.soundcloud_player.bind("play", Player.soundcloudPlay);
window.player = player; window.player = player;
Player.soundcloud_dead = false; Player.soundcloud_dead = false;
SC.get('/tracks', { SC_player.get('/tracks', {
ids: id ids: id
}).then(function(tracks) { }).then(function(tracks) {
var sound = tracks[0]; var sound = tracks[0];
@@ -342,18 +344,17 @@ var Player = {
}); });
if(_autoplay) { if(_autoplay) {
player.play().then(function(){ player.play().then(function(){
scUsingWidget = false;
Player.soundcloud_player.setVolume(embed ? 1 : Crypt.get_volume() / 100); Player.soundcloud_player.setVolume(embed ? 1 : Crypt.get_volume() / 100);
Player.soundcloud_player.seek((seekTo) * 1000); Player.soundcloud_player.seek((seekTo) * 1000);
}).catch(function(e){ }).catch(function(e){
}); });
} }
}).catch(function(error) { }).catch(function(error) {
curr_playing = id; Player.initializeSCWidget(_autoplay, id);
emit("skip", {error: 5, id: id, channel: chan.toLowerCase()});
setTimeout(function() {
toast("Seems the SoundCloud-API rate-limit has been reached..", "red lighten");
}, 1000);
}); });
//Player.initializeSCWidget(_autoplay, id);
//Player.initializeSCWidget(_autoplay, id);
} else { } else {
try { try {
Player.soundcloud_player.seek(seekTo * 1000); Player.soundcloud_player.seek(seekTo * 1000);
@@ -382,6 +383,46 @@ var Player = {
Helper.addClass("#player_overlay_text", "hide"); Helper.addClass("#player_overlay_text", "hide");
}, },
initializeSCWidget: function(_autoplay, id) {
try {
Player.soundcloud_player.unbind("finish", Player.soundcloudFinish);
Player.soundcloud_player.unbind("pause", Player.soundcloudPause);
Player.soundcloud_player.unbind("play", Player.soundcloudPlay);
//Player.soundcloud_player.unbind("seek", Player.soundcloudSeek);
}catch(e){}
var this_autoplay = "";
scUsingWidget = true;
if(_autoplay) this_autoplay = "?auto_play=true";
if(document.querySelectorAll("#scplayerElement").length == 0) {
var single = "single_active=false";
if(_autoplay) single = "&"+single;
else single = "?"+single;
document.querySelector("#sc_player").innerHTML = '<iframe id="scplayerElement" style="opacity:0;" width="100%" height="166" scrolling="no" frameborder="no" allow="autoplay;" \
src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/' + id + this_autoplay + '"> \
</iframe>';
Player.addSCWidgetElements();
} else {
Player.soundcloud_player.bind("finish", Player.soundcloudFinish);
Player.soundcloud_player.bind("pause", Player.soundcloudPause);
Player.soundcloud_player.bind("play", Player.soundcloudPlay);
Player.soundcloud_player.load('https://api.soundcloud.com/tracks/' + id + this_autoplay, {single_active: false});
}
},
addSCWidgetElements: function() {
try {
Player.soundcloud_player = SC_widget.Widget(document.querySelector("#scplayerElement"));
Player.soundcloud_player.seek = Player.soundcloud_player.seekTo;
Player.soundcloud_player.bind("finish", Player.soundcloudFinish);
Player.soundcloud_player.bind("pause", Player.soundcloudPause);
Player.soundcloud_player.bind("play", Player.soundcloudPlay);
} catch(e) {
setTimeout(function() {
Player.addSCWidgetElements();
}, 500);
}
},
loadVideoById: function(id, this_duration, start, end){ loadVideoById: function(id, this_duration, start, end){
if(id == undefined) return; if(id == undefined) return;
var s; var s;
@@ -504,7 +545,8 @@ var Player = {
castSession.setVolume(vol/100); castSession.setVolume(vol/100);
} else { } else {
Player.player.setVolume(vol); Player.player.setVolume(vol);
Player.soundcloud_player.setVolume(vol / 100); if(scUsingWidget) Player.soundcloud_player.setVolume(vol);
else Player.soundcloud_player.setVolume(vol / 100);
} }
}, },
@@ -661,9 +703,19 @@ var Player = {
playing = false; playing = false;
end_programmatically = false; end_programmatically = false;
} else { } else {
was_stopped = true; if(!scUsingWidget) was_stopped = true;
if(!embed && !client && window.location.pathname != "/") { if(!embed && !client && window.location.pathname != "/") {
var scPlaying = false; var scPlaying = false;
if(scUsingWidget) {
Player.soundcloud_player.isPaused(function(paused) {
scPlaying = !paused;
try {
resizePlaylistPlaying(Player.player.getPlayerState() == YT.PlayerState.PLAYING || scPlaying || Player.player.getPlayerState() == YT.PlayerState.BUFFERING);
} catch(e) {
resizePlaylistPlaying(scPlaying);
}
});
} else {
try { try {
scPlaying = Player.soundcloud_player.isPlaying(); scPlaying = Player.soundcloud_player.isPlaying();
} catch(e){} } catch(e){}
@@ -673,6 +725,7 @@ var Player = {
resizePlaylistPlaying(scPlaying); resizePlaylistPlaying(scPlaying);
} }
} }
}
if(!chromecastAvailable){ if(!chromecastAvailable){
if(Helper.mobilecheck()) { if(Helper.mobilecheck()) {
Helper.css("#playpause", "visibility", "visible"); Helper.css("#playpause", "visibility", "visible");
@@ -697,10 +750,20 @@ var Player = {
if(videoSource == "youtube") { if(videoSource == "youtube") {
Player.soundcloud_player.pause(); Player.soundcloud_player.pause();
} else if(soundcloud_loading){ } else if(soundcloud_loading){
if(scUsingWidget) {
Player.soundcloud_player.getPosition(function(pos) {
Player.seeking = true;
Player.soundcloud_player.seek((seekTo) * 1000);
Player.soundcloud_player.setVolume(embed ? 1 : Crypt.get_volume());
soundcloud_loading = false;
})
} else {
Player.seeking = true;
Player.soundcloud_player.seek((seekTo) * 1000); Player.soundcloud_player.seek((seekTo) * 1000);
Player.soundcloud_player.setVolume(embed ? 1 : Crypt.get_volume() / 100); Player.soundcloud_player.setVolume(embed ? 1 : Crypt.get_volume() / 100);
soundcloud_loading = false; soundcloud_loading = false;
} }
}
if(embed) { if(embed) {
Helper.css("#player", "visibility", "visible"); Helper.css("#player", "visibility", "visible");
} }
@@ -714,11 +777,18 @@ var Player = {
} }
if(!embed && !client && window.location.pathname != "/") { if(!embed && !client && window.location.pathname != "/") {
var scPlaying = false; var scPlaying = false;
if(scUsingWidget) {
Player.soundcloud_player.isPaused(function(paused) {
scPlaying = !paused;
resizePlaylistPlaying(scPlaying);
});
} else {
try { try {
scPlaying = Player.soundcloud_player.isPlaying(); scPlaying = Player.soundcloud_player.isPlaying();
} catch(e){} } catch(e){}
resizePlaylistPlaying(scPlaying); resizePlaylistPlaying(scPlaying);
} }
}
Helper.css("#playpause", "visibility", "visible"); Helper.css("#playpause", "visibility", "visible");
Helper.css("#playpause", "pointer-events", "all"); Helper.css("#playpause", "pointer-events", "all");
@@ -739,6 +809,7 @@ var Player = {
if(u == undefined) u = "";*/ if(u == undefined) u = "";*/
paused = false; paused = false;
was_stopped = false; was_stopped = false;
socket.emit('pos', {channel: chan.toLowerCase()}); socket.emit('pos', {channel: chan.toLowerCase()});
} else { } else {
paused = false; paused = false;
@@ -748,13 +819,13 @@ var Player = {
}, },
soundcloudReady: function() { soundcloudReady: function() {
if(SC == undefined && sc_need_initialization) { if(SC_player == undefined && sc_need_initialization) {
sc_need_initialization = true; sc_need_initialization = true;
return; return;
} }
sc_need_initialization = false; sc_need_initialization = false;
try { try {
SC.initialize({ SC_player.initialize({
client_id: api_key.soundcloud client_id: api_key.soundcloud
}, function() { }, function() {
}); });
@@ -942,7 +1013,13 @@ var Player = {
dMinutes = Math.floor(duration / 60); dMinutes = Math.floor(duration / 60);
dSeconds = duration - dMinutes * 60; dSeconds = duration - dMinutes * 60;
if(videoSource == "soundcloud") { if(videoSource == "soundcloud") {
if(scUsingWidget) {
Player.soundcloud_player.getPosition(function(pos) {
currDurr = Math.floor(pos) / 1000;
});
} else {
currDurr = Math.floor(Player.soundcloud_player.currentTime()) / 1000; currDurr = Math.floor(Player.soundcloud_player.currentTime()) / 1000;
}
} else { } else {
currDurr = Player.player.getCurrentTime() !== undefined ? Math.floor(Player.player.getCurrentTime()) : seekTo; currDurr = Player.player.getCurrentTime() !== undefined ? Math.floor(Player.player.getCurrentTime()) : seekTo;
} }
@@ -974,6 +1051,21 @@ var Player = {
document.getElementById("bar").style.width = per+"%"; document.getElementById("bar").style.width = per+"%";
} }
if(videoSource == "soundcloud") { if(videoSource == "soundcloud") {
if(scUsingWidget) {
Player.soundcloud_player.isPaused(function(playing) {
playing = !playing;
if(Math.ceil(currDurr) + 1 > Player.np.end && playing) {
end_programmatically = true;
if(!offline) {
Player.soundcloud_player.pause();
was_stopped = false;
socket.emit("end", {id: video_id, channel: chan.toLowerCase()});
} else {
Player.playNext();
}
}
})
} else {
if(Math.ceil(currDurr) + 1 > Player.np.end && Player.soundcloud_player.isPlaying()) { if(Math.ceil(currDurr) + 1 > Player.np.end && Player.soundcloud_player.isPlaying()) {
end_programmatically = true; end_programmatically = true;
if(!offline) { if(!offline) {
@@ -984,6 +1076,7 @@ var Player = {
Player.playNext(); Player.playNext();
} }
} }
}
} else { } else {
if(Math.ceil(Player.player.getCurrentTime()) >= Player.np.end && (Player.player.getPlayerState() == YT.PlayerState.PLAYING)) { if(Math.ceil(Player.player.getCurrentTime()) >= Player.np.end && (Player.player.getPlayerState() == YT.PlayerState.PLAYING)) {
end_programmatically = true; end_programmatically = true;
@@ -1030,7 +1123,7 @@ var Player = {
loadSoundCloudPlayer: function() { loadSoundCloudPlayer: function() {
if(document.querySelectorAll("script[src='https://connect.soundcloud.com/sdk/sdk-3.3.0.js']").length == 1) { if(document.querySelectorAll("script[src='https://connect.soundcloud.com/sdk/sdk-3.3.0.js']").length == 1) {
try { try {
Player.soundcloudReady(); //Player.soundcloudReady();
} catch(error) { } catch(error) {
sc_need_initialization = true; sc_need_initialization = true;
//console.error(error); //console.error(error);
@@ -1043,18 +1136,54 @@ var Player = {
if (tagSC.readyState == "loaded" || if (tagSC.readyState == "loaded" ||
tagSC.readyState == "complete"){ tagSC.readyState == "complete"){
tagSC.onreadystatechange = null; tagSC.onreadystatechange = null;
Player.soundcloudReady(); SC_player = SC;
//Player.soundcloudReady();
Player.loadSoundCloudIframe();
} }
}; };
} else { //Others } else { //Others
tagSC.onload = function(){ tagSC.onload = function(){
Player.soundcloudReady(); SC_player = SC;
//Player.soundcloudReady();
Player.loadSoundCloudIframe();
}; };
} }
tagSC.src = "https://connect.soundcloud.com/sdk/sdk-3.3.0.js"; tagSC.src = "https://connect.soundcloud.com/sdk/sdk-3.3.0.js";
firstScriptTagSC = document.getElementsByTagName('script')[0]; firstScriptTagSC = document.getElementsByTagName('script')[0];
firstScriptTagSC.parentNode.insertBefore(tagSC, firstScriptTagSC); firstScriptTagSC.parentNode.insertBefore(tagSC, firstScriptTagSC);
} }
},
loadSoundCloudIframe: function() {
if(document.querySelectorAll("script[src='/assets/sclib/scapi.js']").length == 1) {
try {
Player.soundcloudReady();
} catch(error) {
//sc_need_initialization = true;
//console.error(error);
//console.error("Seems SoundCloud script isn't correctly loaded. Please reload the page.");
}
} else {
tagSC = document.createElement('script');
if (tagSC.readyState){ //IE
tagSC.onreadystatechange = function(){
if (tagSC.readyState == "loaded" ||
tagSC.readyState == "complete"){
tagSC.onreadystatechange = null;
SC_widget = SC;
Player.soundcloudReady();
}
};
} else { //Others
tagSC.onload = function(){
SC_widget = SC;
Player.soundcloudReady();
};
}
tagSC.src = "/assets/sclib/scapi.js";
firstScriptTagSC = document.getElementsByTagName('script')[0];
firstScriptTagSC.parentNode.insertBefore(tagSC, firstScriptTagSC);
}
} }
}; };

View File

@@ -191,11 +191,23 @@ var Playercontrols = {
play_pause: function() { play_pause: function() {
if(!chromecastAvailable){ if(!chromecastAvailable){
if(videoSource == "soundcloud") { if(videoSource == "soundcloud") {
if(scUsingWidget) {
Player.soundcloud_player.isPaused(function(playing) {
playing = !playing;
if(!playing) {
Player.playVideo();
} else {
Player.pauseVideo();
}
was_stopped = true;
});
} else {
if(!Player.soundcloud_player.isPlaying()) { if(!Player.soundcloud_player.isPlaying()) {
Player.playVideo(); Player.playVideo();
} else { } else {
Player.pauseVideo(); Player.pauseVideo();
} }
}
} else { } else {
if(Player.player.getPlayerState() == YT.PlayerState.PLAYING) if(Player.player.getPlayerState() == YT.PlayerState.PLAYING)
{ {
@@ -273,7 +285,8 @@ var Playercontrols = {
setVolume: function(vol) { setVolume: function(vol) {
Player.setVolume(vol); Player.setVolume(vol);
Player.soundcloud_player.setVolume(vol / 100); if(scUsingWidget) Player.soundcloud_player.setVolume(vol);
else Player.soundcloud_player.setVolume(vol / 100);
Playercontrols.choose_button(vol, false); Playercontrols.choose_button(vol, false);
if(Player.player.isMuted()) if(Player.player.isMuted())
Player.player.unMute(); Player.player.unMute();
@@ -355,6 +368,20 @@ var Playercontrols = {
playPause: function() { playPause: function() {
if(videoSource == "soundcloud") { if(videoSource == "soundcloud") {
if(scUsingWidget) {
Player.soundcloud_player.isPaused(function(playing) {
playing = !playing;
if(!playing) {
Helper.addClass("#play", "hide");
Helper.removeClass("#pause", "hide");
Player.soundcloud_player.play();
} else {
Helper.removeClass("#play", "hide");
Helper.addClass("#pause", "hide");
Player.soundcloud_player.pause();
}
})
} else {
if(!Player.soundcloud_player.isPlaying()) { if(!Player.soundcloud_player.isPlaying()) {
Helper.addClass("#play", "hide"); Helper.addClass("#play", "hide");
Helper.removeClass("#pause", "hide"); Helper.removeClass("#pause", "hide");
@@ -364,6 +391,7 @@ var Playercontrols = {
Helper.addClass("#pause", "hide"); Helper.addClass("#pause", "hide");
Player.soundcloud_player.pause(); Player.soundcloud_player.pause();
} }
}
} else { } else {
state = Player.player.getPlayerState(); state = Player.player.getPlayerState();
button = document.getElementById("playpause"); button = document.getElementById("playpause");

View File

@@ -202,7 +202,7 @@ var Search = {
return; return;
} }
if(keyword.length == 0) return; if(keyword.length == 0) return;
SC.get('/tracks', { SC_player.get('/tracks', {
q: keyword q: keyword
}).then(function(tracks) { }).then(function(tracks) {
var pre_result = document.createElement("div"); var pre_result = document.createElement("div");

View File

@@ -0,0 +1 @@
var SC=SC||{};SC.Widget=function(n){function t(r){if(e[r])return e[r].exports;var o=e[r]={exports:{},id:r,loaded:!1};return n[r].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var e={};return t.m=n,t.c=e,t.p="",t(0)}([function(n,t,e){function r(n){return!!(""===n||n&&n.charCodeAt&&n.substr)}function o(n){return!!(n&&n.constructor&&n.call&&n.apply)}function i(n){return!(!n||1!==n.nodeType||"IFRAME"!==n.nodeName.toUpperCase())}function a(n){var t,e=!1;for(t in b)if(b.hasOwnProperty(t)&&b[t]===n){e=!0;break}return e}function s(n){var t,e,r;for(t=0,e=I.length;t<e&&(r=n(I[t]),r!==!1);t++);}function u(n){var t,e,r,o="";for("//"===n.substr(0,2)&&(n=window.location.protocol+n),r=n.split("/"),t=0,e=r.length;t<e&&t<3;t++)o+=r[t],t<2&&(o+="/");return o}function c(n){return n.contentWindow?n.contentWindow:n.contentDocument&&"parentWindow"in n.contentDocument?n.contentDocument.parentWindow:null}function l(n){var t,e=[];for(t in n)n.hasOwnProperty(t)&&e.push(n[t]);return e}function d(n,t,e){e.callbacks[n]=e.callbacks[n]||[],e.callbacks[n].push(t)}function E(n,t){var e,r=!0;return t.callbacks[n]=[],s(function(t){if(e=t.callbacks[n]||[],e.length)return r=!1,!1}),r}function f(n,t,e){var r,o,i=c(e);return!!i.postMessage&&(r=e.getAttribute("src").split("?")[0],o=JSON.stringify({method:n,value:t}),"//"===r.substr(0,2)&&(r=window.location.protocol+r),r=r.replace(/http:\/\/(w|wt).soundcloud.com/,"https://$1.soundcloud.com"),void i.postMessage(o,r))}function p(n){var t;return s(function(e){if(e.instance===n)return t=e,!1}),t}function h(n){var t;return s(function(e){if(c(e.element)===n)return t=e,!1}),t}function v(n,t){return function(e){var r=o(e),i=p(this),a=!r&&t?e:null,s=r&&!t?e:null;return s&&d(n,s,i),f(n,a,i.element),this}}function S(n,t,e){var r,o,i;for(r=0,o=t.length;r<o;r++)i=t[r],n[i]=v(i,e)}function R(n,t,e){return n+"?url="+t+"&"+g(e)}function g(n){var t,e,r=[];for(t in n)n.hasOwnProperty(t)&&(e=n[t],r.push(t+"="+("start_track"===t?parseInt(e,10):e?"true":"false")));return r.join("&")}function m(n,t,e){var r,o,i=n.callbacks[t]||[];for(r=0,o=i.length;r<o;r++)i[r].apply(n.instance,e);(a(t)||t===L.READY)&&(n.callbacks[t]=[])}function z(n){var t,e,r,o,i;try{e=JSON.parse(n.data);if(!e.hasOwnProperty("method"))return!1}catch(a){return!1}return t=h(n.source),r=e.method,o=e.value,(!t||A(n.origin)===A(t.domain))&&(t?(r===L.READY&&(t.isReady=!0,m(t,C),E(C,t)),r!==L.PLAY||t.playEventFired||(t.playEventFired=!0),r!==L.PLAY_PROGRESS||t.playEventFired||(t.playEventFired=!0,m(t,L.PLAY,[o])),i=[],void 0!==o&&i.push(o),void m(t,r,i)):(r===L.READY&&T.push(n.source),!1))}function A(n){return n.replace(Y,"")}var _,y,O,D=e(1),b=e(2),P=e(3),L=D.api,N=D.bridge,T=[],I=[],C="__LATE_BINDING__",k="http://wt.soundcloud.test:9200/",Y=/^http(?:s?)/;window.addEventListener?window.addEventListener("message",z,!1):window.attachEvent("onmessage",w),n.exports=O=function(n,t,e){if(r(n)&&(n=document.getElementById(n)),!i(n))throw new Error("SC.Widget function should be given either iframe element or a string specifying id attribute of iframe element.");t&&(e=e||{},n.src=R(k,t,e));var o,a,s=h(c(n));return s&&s.instance?s.instance:(o=T.indexOf(c(n))>-1,a=new _(n),I.push(new y(a,n,o)),a)},O.Events=L,window.SC=window.SC||{},window.SC.Widget=O,y=function(n,t,e){this.instance=n,this.element=t,this.domain=u(t.getAttribute("src")),this.isReady=!!e,this.callbacks={}},_=function(){},_.prototype={constructor:_,load:function(n,t){if(n){t=t||{};var e=this,r=p(this),o=r.element,i=o.src,a=i.substr(0,i.indexOf("?"));r.isReady=!1,r.playEventFired=!1,o.onload=function(){e.bind(L.READY,function(){var n,e=r.callbacks;for(n in e)e.hasOwnProperty(n)&&n!==L.READY&&f(N.ADD_LISTENER,n,r.element);t.callback&&t.callback()})},o.src=R(a,n,t)}},bind:function(n,t){var e=this,r=p(this);return r&&r.element&&(n===L.READY&&r.isReady?setTimeout(t,1):r.isReady?(d(n,t,r),f(N.ADD_LISTENER,n,r.element)):d(C,function(){e.bind(n,t)},r)),this},unbind:function(n){var t,e=p(this);e&&e.element&&(t=E(n,e),n!==L.READY&&t&&f(N.REMOVE_LISTENER,n,e.element))}},S(_.prototype,l(b)),S(_.prototype,l(P),!0)},function(n,t){t.api={LOAD_PROGRESS:"loadProgress",PLAY_PROGRESS:"playProgress",PLAY:"play",PAUSE:"pause",FINISH:"finish",SEEK:"seek",READY:"ready",OPEN_SHARE_PANEL:"sharePanelOpened",CLICK_DOWNLOAD:"downloadClicked",CLICK_BUY:"buyClicked",ERROR:"error"},t.bridge={REMOVE_LISTENER:"removeEventListener",ADD_LISTENER:"addEventListener"}},function(n,t){n.exports={GET_VOLUME:"getVolume",GET_DURATION:"getDuration",GET_POSITION:"getPosition",GET_SOUNDS:"getSounds",GET_CURRENT_SOUND:"getCurrentSound",GET_CURRENT_SOUND_INDEX:"getCurrentSoundIndex",IS_PAUSED:"isPaused"}},function(n,t){n.exports={PLAY:"play",PAUSE:"pause",TOGGLE:"toggle",SEEK_TO:"seekTo",SET_VOLUME:"setVolume",NEXT:"next",PREV:"prev",SKIP:"skip"}}]);

View File

@@ -4,7 +4,7 @@
<div id="fireplace_player" class="ytplayer"></div> <div id="fireplace_player" class="ytplayer"></div>
{{/unless}} {{/unless}}
<div id="player" class="ytplayer"></div> <div id="player" class="ytplayer"></div>
<div id="sc_player" class="scplayer"></div>
<div id="main_components"> <div id="main_components">
<div id="player_overlay" class="hide valign-wrapper"> <div id="player_overlay" class="hide valign-wrapper">
<div id="playing_on"> <div id="playing_on">