mirror of
				https://github.com/KevinMidboe/zoff.git
				synced 2025-10-29 18:00:23 +00:00 
			
		
		
		
	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:
		| @@ -2,6 +2,7 @@ var gulp    = require('gulp'), | ||||
| 	gutil   = require('gulp-util'), | ||||
| 	uglify  = require('gulp-uglify'), | ||||
|     //sourcemaps = require('gulp-sourcemaps'), | ||||
|     gutil = require('gulp-util'), | ||||
| 	concat  = require('gulp-concat'), | ||||
|     cssnano = require('gulp-cssnano'); | ||||
|  | ||||
| @@ -38,7 +39,7 @@ gulp.task('js', function () { | ||||
|             compress: true, | ||||
|         	enclose: true, | ||||
|         })) | ||||
|  | ||||
|         .on('error', function (err) { gutil.log(gutil.colors.red('[Error]'), err.toString()); }) | ||||
|         //.pipe(sourcemaps.write('maps')) | ||||
|         .pipe(gulp.dest('server/public/assets/dist')); | ||||
| }); | ||||
| @@ -52,6 +53,7 @@ gulp.task('embed', function () { | ||||
|             compress: true, | ||||
|             enclose: true | ||||
|         })) | ||||
|         .on('error', function (err) { gutil.log(gutil.colors.red('[Error]'), err.toString()); }) | ||||
|         //.pipe(sourcemaps.write('maps')) | ||||
|         .pipe(gulp.dest('server/public/assets/dist')); | ||||
| }); | ||||
| @@ -65,6 +67,7 @@ gulp.task('token', function() { | ||||
|             compress: true, | ||||
|             enclose: true | ||||
|         })) | ||||
|         .on('error', function (err) { gutil.log(gutil.colors.red('[Error]'), err.toString()); }) | ||||
|  | ||||
|         //.pipe(sourcemaps.write('maps')) | ||||
|         .pipe(gulp.dest('server/public/assets/dist')); | ||||
| @@ -79,6 +82,7 @@ gulp.task('callback', function () { | ||||
|             compress: true, | ||||
|             enclose: true | ||||
|         })) | ||||
|         .on('error', function (err) { gutil.log(gutil.colors.red('[Error]'), err.toString()); }) | ||||
|  | ||||
|         //.pipe(sourcemaps.write('maps')) | ||||
|         .pipe(gulp.dest('server/public/assets/dist')); | ||||
| @@ -97,6 +101,7 @@ gulp.task('remotecontroller', function () { | ||||
|             compress: true, | ||||
|             enclose: true | ||||
|         })) | ||||
|         .on('error', function (err) { gutil.log(gutil.colors.red('[Error]'), err.toString()); }) | ||||
|  | ||||
|         //.pipe(sourcemaps.write('maps')) | ||||
|         .pipe(gulp.dest('server/public/assets/dist')); | ||||
|   | ||||
							
								
								
									
										54
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										54
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							| @@ -2755,6 +2755,27 @@ | ||||
|         "optimist": "^0.6.1", | ||||
|         "source-map": "^0.4.4", | ||||
|         "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": { | ||||
| @@ -4920,20 +4941,6 @@ | ||||
|         "inherits": "~2.0.1", | ||||
|         "isarray": "0.0.1", | ||||
|         "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": { | ||||
| @@ -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": { | ||||
|       "version": "1.0.2", | ||||
|       "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", | ||||
|   | ||||
| @@ -24,7 +24,7 @@ | ||||
|     "gulp-concat": "^2.6.1", | ||||
|     "gulp-cssnano": "^2.1.3", | ||||
|     "gulp-uglify": "^3.0.1", | ||||
|     "gulp-util": "~3.0.6" | ||||
|     "gulp-util": "^3.0.8" | ||||
|   }, | ||||
|   "homepage": "https://github.com/zoff-music/zoff#readme", | ||||
|   "dependencies": { | ||||
|   | ||||
| @@ -197,7 +197,8 @@ var Channel = { | ||||
|                         Player.player.setVolume(Crypt.get_volume()); | ||||
|                     } catch(e){} | ||||
|                     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){} | ||||
|                 } | ||||
|                 Helper.removeClass(".video-container", "no-opacity"); | ||||
|   | ||||
| @@ -35,13 +35,23 @@ function resizeFunction() { | ||||
|             if(!client && !embed) { | ||||
|                 var scPlaying = false; | ||||
|                 var ytPlaying = false; | ||||
|                 try { | ||||
|                     ytPlaying = Player.player.getPlayerState() == YT.PlayerState.PLAYING || Player.player.getPlayerState() == YT.PlayerState.BUFFERING; | ||||
|                 } catch(e) {} | ||||
|                 try { | ||||
|                     scPlaying = Player.soundcloud_player.isPlaying(); | ||||
|                 } catch(e){} | ||||
|                 resizePlaylistPlaying(ytPlaying || scPlaying); | ||||
|                 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 { | ||||
|                         ytPlaying = Player.player.getPlayerState() == YT.PlayerState.PLAYING || Player.player.getPlayerState() == YT.PlayerState.BUFFERING; | ||||
|                     } catch(e) {} | ||||
|                     try { | ||||
|                         scPlaying = Player.soundcloud_player.isPlaying(); | ||||
|                     } catch(e){} | ||||
|                     resizePlaylistPlaying(ytPlaying || scPlaying); | ||||
|                 } | ||||
|                 return; | ||||
|             } | ||||
|         } | ||||
| @@ -185,7 +195,8 @@ function hide_native(way) { | ||||
|             Helper.setHtml("#chromecast_text", "Playing on<br>" + castSession.getCastDevice().friendlyName); | ||||
|         } | ||||
|         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"); | ||||
|     } else if(way == 0){ | ||||
| @@ -214,7 +225,8 @@ function hide_native(way) { | ||||
|         if(!Helper.mobilecheck()){ | ||||
|             Player.player.setVolume(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.removeClass("#player_overlay_text", "hide"); | ||||
|   | ||||
| @@ -40,7 +40,8 @@ var Hostcontroller = { | ||||
|                 try { | ||||
|                     Playercontrols.visualVolume(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 { | ||||
|                         localStorage.setItem("volume", arr.value); | ||||
|                     } catch(e){} | ||||
|   | ||||
| @@ -12,6 +12,9 @@ try { | ||||
| } catch(e) { | ||||
|     _VERSION = 6; | ||||
| } | ||||
| var SC_widget; | ||||
| var scUsingWidget = false; | ||||
| var SC_player; | ||||
| var soundcloud_enabled = true; | ||||
| var local_new_channel = false; | ||||
| var sc_need_initialization = false; | ||||
| @@ -257,25 +260,29 @@ window.addEventListener("DOMContentLoaded", function() { | ||||
|                             tagSC.readyState == "complete"){ | ||||
|                         tagSC.onreadystatechange = null; | ||||
|                         if(sc_need_initialization) { | ||||
|                             Player.soundcloudReady(); | ||||
|                             //Player.soundcloudReady(); | ||||
|                         } else { | ||||
|                             SC.initialize({ | ||||
|                             SC_player = SC; | ||||
|                             SC_player.initialize({ | ||||
|                               client_id: api_key.soundcloud | ||||
|                             }, function() { | ||||
|                             }); | ||||
|                         } | ||||
|                         Player.loadSoundCloudIframe(); | ||||
|                     } | ||||
|                 }; | ||||
|             } else {  //Others | ||||
|                 tagSC.onload = function(){ | ||||
|                     if(sc_need_initialization) { | ||||
|                         Player.soundcloudReady(); | ||||
|                         //Player.soundcloudReady(); | ||||
|                     } else { | ||||
|                         SC.initialize({ | ||||
|                         SC_player = SC; | ||||
|                         SC_player.initialize({ | ||||
|                           client_id: api_key.soundcloud | ||||
|                         }, function() { | ||||
|                         }); | ||||
|                     } | ||||
|                     Player.loadSoundCloudIframe(); | ||||
|                 }; | ||||
|             } | ||||
|             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); | ||||
|         } | ||||
|     } else if(window.location.pathname == "/" && client) { | ||||
|         Player.loadSoundCloudPlayer(); | ||||
|         //Player.loadSoundCloudPlayer(); | ||||
|     } | ||||
|  | ||||
|     if(Helper.mobilecheck()) { | ||||
| @@ -676,6 +683,7 @@ function addDynamicListeners() { | ||||
|             Player.soundcloud_player.unbind("play", Player.soundcloudPlay); | ||||
|             Player.soundcloud_player.kill(); | ||||
|         } catch(error){} | ||||
|         if(scUsingWidget) document.querySelector("#sc_player").innerHTML = ""; | ||||
|         socket.removeEventListener("np"); | ||||
|         socket.removeEventListener("id"); | ||||
|         socket.removeEventListener(id); | ||||
| @@ -711,7 +719,9 @@ function addDynamicListeners() { | ||||
|     }); | ||||
|  | ||||
|     addListener("click", "#player_overlay", function(event) { | ||||
|         if(videoSource == "soundcloud") Playercontrols.play_pause(); | ||||
|         if(videoSource == "soundcloud") { | ||||
|             Playercontrols.play_pause(); | ||||
|         } | ||||
|     }); | ||||
|  | ||||
|     /* | ||||
|   | ||||
| @@ -7,6 +7,7 @@ var Player = { | ||||
|     stopInterval: false, | ||||
|     fireplace: "", | ||||
|     np: {}, | ||||
|     seeking: false, | ||||
|     soundcloud_dead: false, | ||||
|     soundcloud_player: { | ||||
|         setVolume: function(val) {} | ||||
| @@ -301,7 +302,7 @@ var Player = { | ||||
|             return; | ||||
|         } | ||||
|         try { | ||||
|             if(SC == null) return; | ||||
|             if(SC_player == null) return; | ||||
|         } catch(e) { | ||||
|             return; | ||||
|         } | ||||
| @@ -314,7 +315,7 @@ var Player = { | ||||
|         soundcloud_loading = false; | ||||
|         var _autoAdd = "false"; | ||||
|         try { | ||||
|             if(SC == null || !SC.stream) return; | ||||
|             if(SC_player == null || !SC_player.stream) return; | ||||
|         } catch(e) { | ||||
|             return; | ||||
|         } | ||||
| @@ -324,14 +325,15 @@ var Player = { | ||||
|                 _autoAdd = "true"; | ||||
|                 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.bind("finish", Player.soundcloudFinish); | ||||
|                 Player.soundcloud_player.bind("pause", Player.soundcloudPause); | ||||
|                 Player.soundcloud_player.bind("play", Player.soundcloudPlay); | ||||
|                 window.player = player; | ||||
|                 Player.soundcloud_dead = false; | ||||
|                 SC.get('/tracks', { | ||||
|                 SC_player.get('/tracks', { | ||||
|                     ids: id | ||||
|                 }).then(function(tracks) { | ||||
|                     var sound = tracks[0]; | ||||
| @@ -342,18 +344,17 @@ var Player = { | ||||
|                 }); | ||||
|                 if(_autoplay) { | ||||
|                     player.play().then(function(){ | ||||
|                         scUsingWidget = false; | ||||
|                         Player.soundcloud_player.setVolume(embed ? 1 : Crypt.get_volume() / 100); | ||||
|                         Player.soundcloud_player.seek((seekTo) * 1000); | ||||
|                     }).catch(function(e){ | ||||
|                     }); | ||||
|                 } | ||||
|             }).catch(function(error) { | ||||
|                 curr_playing = 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); | ||||
|             //Player.initializeSCWidget(_autoplay, id); | ||||
|         } else { | ||||
|             try { | ||||
|                 Player.soundcloud_player.seek(seekTo * 1000); | ||||
| @@ -382,6 +383,46 @@ var Player = { | ||||
|         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){ | ||||
|         if(id == undefined) return; | ||||
|         var s; | ||||
| @@ -504,7 +545,8 @@ var Player = { | ||||
|             castSession.setVolume(vol/100); | ||||
|         } else { | ||||
|             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,16 +703,27 @@ var Player = { | ||||
|             playing = false; | ||||
|             end_programmatically = false; | ||||
|         } else { | ||||
|             was_stopped = true; | ||||
|             if(!scUsingWidget) was_stopped = true; | ||||
|             if(!embed && !client && window.location.pathname != "/") { | ||||
|                 var scPlaying = false; | ||||
|                 try { | ||||
|                     scPlaying = Player.soundcloud_player.isPlaying(); | ||||
|                 } catch(e){} | ||||
|                 try { | ||||
|                     resizePlaylistPlaying(Player.player.getPlayerState() == YT.PlayerState.PLAYING || scPlaying || Player.player.getPlayerState() == YT.PlayerState.BUFFERING); | ||||
|                 } catch(e) { | ||||
|                     resizePlaylistPlaying(scPlaying); | ||||
|                 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 { | ||||
|                         scPlaying = Player.soundcloud_player.isPlaying(); | ||||
|                     } catch(e){} | ||||
|                     try { | ||||
|                         resizePlaylistPlaying(Player.player.getPlayerState() == YT.PlayerState.PLAYING || scPlaying || Player.player.getPlayerState() == YT.PlayerState.BUFFERING); | ||||
|                     } catch(e) { | ||||
|                         resizePlaylistPlaying(scPlaying); | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|             if(!chromecastAvailable){ | ||||
| @@ -697,9 +750,19 @@ var Player = { | ||||
|         if(videoSource == "youtube") { | ||||
|             Player.soundcloud_player.pause(); | ||||
|         } else if(soundcloud_loading){ | ||||
|             Player.soundcloud_player.seek((seekTo) * 1000); | ||||
|             Player.soundcloud_player.setVolume(embed ? 1 : Crypt.get_volume() / 100); | ||||
|             soundcloud_loading = false; | ||||
|             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.setVolume(embed ? 1 : Crypt.get_volume() / 100); | ||||
|                 soundcloud_loading = false; | ||||
|             } | ||||
|         } | ||||
|         if(embed) { | ||||
|             Helper.css("#player", "visibility", "visible"); | ||||
| @@ -714,10 +777,17 @@ var Player = { | ||||
|         } | ||||
|         if(!embed && !client && window.location.pathname != "/") { | ||||
|             var scPlaying = false; | ||||
|             try { | ||||
|                 scPlaying = Player.soundcloud_player.isPlaying(); | ||||
|             } catch(e){} | ||||
|             resizePlaylistPlaying(scPlaying); | ||||
|             if(scUsingWidget) { | ||||
|                 Player.soundcloud_player.isPaused(function(paused) { | ||||
|                     scPlaying = !paused; | ||||
|                     resizePlaylistPlaying(scPlaying); | ||||
|                 }); | ||||
|             } else { | ||||
|                 try { | ||||
|                     scPlaying = Player.soundcloud_player.isPlaying(); | ||||
|                 } catch(e){} | ||||
|                 resizePlaylistPlaying(scPlaying); | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         Helper.css("#playpause", "visibility", "visible"); | ||||
| @@ -739,6 +809,7 @@ var Player = { | ||||
|             if(u == undefined) u = "";*/ | ||||
|             paused = false; | ||||
|             was_stopped = false; | ||||
|  | ||||
|             socket.emit('pos', {channel: chan.toLowerCase()}); | ||||
|         } else { | ||||
|             paused = false; | ||||
| @@ -748,13 +819,13 @@ var Player = { | ||||
|     }, | ||||
|  | ||||
|     soundcloudReady: function() { | ||||
|         if(SC == undefined && sc_need_initialization) { | ||||
|         if(SC_player == undefined && sc_need_initialization) { | ||||
|             sc_need_initialization = true; | ||||
|             return; | ||||
|         } | ||||
|         sc_need_initialization = false; | ||||
|         try { | ||||
|             SC.initialize({ | ||||
|             SC_player.initialize({ | ||||
|               client_id: api_key.soundcloud | ||||
|             }, function() { | ||||
|             }); | ||||
| @@ -942,7 +1013,13 @@ var Player = { | ||||
|                 dMinutes = Math.floor(duration / 60); | ||||
|                 dSeconds = duration - dMinutes * 60; | ||||
|                 if(videoSource == "soundcloud") { | ||||
|                     currDurr = Math.floor(Player.soundcloud_player.currentTime()) / 1000; | ||||
|                     if(scUsingWidget) { | ||||
|                         Player.soundcloud_player.getPosition(function(pos) { | ||||
|                             currDurr = Math.floor(pos) / 1000; | ||||
|                         }); | ||||
|                     } else { | ||||
|                         currDurr = Math.floor(Player.soundcloud_player.currentTime()) / 1000; | ||||
|                     } | ||||
|                 } else { | ||||
|                     currDurr = Player.player.getCurrentTime() !== undefined ? Math.floor(Player.player.getCurrentTime()) : seekTo; | ||||
|                 } | ||||
| @@ -974,6 +1051,21 @@ var Player = { | ||||
|                     document.getElementById("bar").style.width = per+"%"; | ||||
|                 } | ||||
|                 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()) { | ||||
|                             end_programmatically = true; | ||||
|                             if(!offline) { | ||||
| @@ -984,6 +1076,7 @@ var Player = { | ||||
|                                 Player.playNext(); | ||||
|                             } | ||||
|                         } | ||||
|                     } | ||||
|                 } else { | ||||
|                     if(Math.ceil(Player.player.getCurrentTime()) >= Player.np.end && (Player.player.getPlayerState() == YT.PlayerState.PLAYING)) { | ||||
|                         end_programmatically = true; | ||||
| @@ -1030,7 +1123,7 @@ var Player = { | ||||
|     loadSoundCloudPlayer: function() { | ||||
|         if(document.querySelectorAll("script[src='https://connect.soundcloud.com/sdk/sdk-3.3.0.js']").length == 1) { | ||||
|             try { | ||||
|                 Player.soundcloudReady(); | ||||
|                 //Player.soundcloudReady(); | ||||
|             } catch(error) { | ||||
|                 sc_need_initialization = true; | ||||
|                 //console.error(error); | ||||
| @@ -1043,18 +1136,54 @@ var Player = { | ||||
|                     if (tagSC.readyState == "loaded" || | ||||
|                             tagSC.readyState == "complete"){ | ||||
|                         tagSC.onreadystatechange = null; | ||||
|                         Player.soundcloudReady(); | ||||
|                         SC_player = SC; | ||||
|                         //Player.soundcloudReady(); | ||||
|                         Player.loadSoundCloudIframe(); | ||||
|                     } | ||||
|                 }; | ||||
|             } else {  //Others | ||||
|                 tagSC.onload = function(){ | ||||
|                     Player.soundcloudReady(); | ||||
|                     SC_player = SC; | ||||
|                     //Player.soundcloudReady(); | ||||
|                     Player.loadSoundCloudIframe(); | ||||
|                 }; | ||||
|             } | ||||
|             tagSC.src        = "https://connect.soundcloud.com/sdk/sdk-3.3.0.js"; | ||||
|             firstScriptTagSC = document.getElementsByTagName('script')[0]; | ||||
|             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); | ||||
|         } | ||||
|     } | ||||
|  | ||||
| }; | ||||
|   | ||||
| @@ -191,10 +191,22 @@ var Playercontrols = { | ||||
|     play_pause: function() { | ||||
|         if(!chromecastAvailable){ | ||||
|             if(videoSource == "soundcloud") { | ||||
|                 if(!Player.soundcloud_player.isPlaying()) { | ||||
|                     Player.playVideo(); | ||||
|                 if(scUsingWidget) { | ||||
|                     Player.soundcloud_player.isPaused(function(playing) { | ||||
|                         playing = !playing; | ||||
|                         if(!playing) { | ||||
|                             Player.playVideo(); | ||||
|                         } else { | ||||
|                             Player.pauseVideo(); | ||||
|                         } | ||||
|                         was_stopped = true; | ||||
|                     }); | ||||
|                 } else { | ||||
|                     Player.pauseVideo(); | ||||
|                     if(!Player.soundcloud_player.isPlaying()) { | ||||
|                         Player.playVideo(); | ||||
|                     } else { | ||||
|                         Player.pauseVideo(); | ||||
|                     } | ||||
|                 } | ||||
|             } else { | ||||
|                 if(Player.player.getPlayerState() == YT.PlayerState.PLAYING) | ||||
| @@ -273,7 +285,8 @@ var Playercontrols = { | ||||
|  | ||||
|     setVolume: function(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); | ||||
|         if(Player.player.isMuted()) | ||||
|         Player.player.unMute(); | ||||
| @@ -355,14 +368,29 @@ var Playercontrols = { | ||||
|  | ||||
|     playPause: function() { | ||||
|         if(videoSource == "soundcloud") { | ||||
|             if(!Player.soundcloud_player.isPlaying()) { | ||||
|                 Helper.addClass("#play", "hide"); | ||||
|                 Helper.removeClass("#pause", "hide"); | ||||
|                 Player.soundcloud_player.play(); | ||||
|             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 { | ||||
|                 Helper.removeClass("#play", "hide"); | ||||
|                 Helper.addClass("#pause", "hide"); | ||||
|                 Player.soundcloud_player.pause(); | ||||
|                 if(!Player.soundcloud_player.isPlaying()) { | ||||
|                     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 { | ||||
|             state = Player.player.getPlayerState(); | ||||
|   | ||||
| @@ -202,7 +202,7 @@ var Search = { | ||||
|             return; | ||||
|         } | ||||
|         if(keyword.length == 0) return; | ||||
|         SC.get('/tracks', { | ||||
|         SC_player.get('/tracks', { | ||||
|             q: keyword | ||||
|         }).then(function(tracks) { | ||||
|             var pre_result = document.createElement("div"); | ||||
|   | ||||
							
								
								
									
										1
									
								
								server/public/assets/sclib/scapi.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								server/public/assets/sclib/scapi.js
									
									
									
									
									
										Normal 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"}}]); | ||||
| @@ -4,7 +4,7 @@ | ||||
|         <div id="fireplace_player" class="ytplayer"></div> | ||||
|     {{/unless}} | ||||
|     <div id="player" class="ytplayer"></div> | ||||
|  | ||||
|     <div id="sc_player" class="scplayer"></div> | ||||
|     <div id="main_components"> | ||||
|         <div id="player_overlay" class="hide valign-wrapper"> | ||||
|             <div id="playing_on"> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user