jPlayer integrated
This commit is contained in:
@@ -1,113 +0,0 @@
|
||||
var Audio = {
|
||||
|
||||
audio: null,
|
||||
|
||||
tid: null,
|
||||
tinterval: 300,
|
||||
ttime: 0,
|
||||
|
||||
play: function() {
|
||||
try {
|
||||
this.audio.play();
|
||||
} catch(e) {}
|
||||
},
|
||||
|
||||
pause: function() {
|
||||
try {
|
||||
this.audio.pause();
|
||||
} catch(e) {}
|
||||
},
|
||||
|
||||
rewind: function() {
|
||||
try {
|
||||
this.audio.currentTime = 0;
|
||||
} catch(e) {}
|
||||
},
|
||||
|
||||
addTrack: function(id, url) {
|
||||
if ($('#a'+ id).length == 0) {
|
||||
$('#audiobox').html('<audio id="a'+ id +'" src="'+ url +'"></audio>')
|
||||
}
|
||||
},
|
||||
|
||||
setTrack: function(id) {
|
||||
this.audio = document.getElementById('a'+ id);
|
||||
$(this.audio).bind('play',function() {
|
||||
$('#player .controls .play').hide();
|
||||
$('#player .controls .pause').show();
|
||||
}).bind('pause ended', function() {
|
||||
$('#player .controls .pause').hide();
|
||||
$('#player .controls .play').show();
|
||||
});
|
||||
this.ttime = 0;
|
||||
},
|
||||
|
||||
getLoadedPercent: function() {
|
||||
try {
|
||||
return Audio.audio.buffered.end(0) / Audio.audio.duration;
|
||||
} catch(e) {}
|
||||
return 0;
|
||||
},
|
||||
|
||||
getPlayedPercent: function() {
|
||||
try {
|
||||
return Audio.audio.currentTime / Audio.audio.duration;
|
||||
} catch(e) {}
|
||||
return 0;
|
||||
},
|
||||
|
||||
getListenedPercent: function() {
|
||||
try {
|
||||
if (Audio.audio.duration < 30 || Audio.ttime < 0) {
|
||||
return -1;
|
||||
}
|
||||
return Audio.ttime / 1000 / Audio.audio.duration;
|
||||
} catch(e) {}
|
||||
return -1;
|
||||
},
|
||||
|
||||
setPlayedPercent: function(val) {
|
||||
if (typeof(this.audio.duration) != undefined) {
|
||||
this.audio.currentTime = Math.round(val * this.audio.duration / 100);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
|
||||
skipToPercent: function(val) {
|
||||
try {
|
||||
this.audio.currentTime = this.audio.duration * val;
|
||||
} catch(e) {}
|
||||
},
|
||||
|
||||
startListener: function() {
|
||||
Audio.killListener();
|
||||
Audio.tid = window.setTimeout(Audio.startListener, Audio.tinterval);
|
||||
if (Audio.ttime !== -1) {
|
||||
Audio.ttime += Audio.tinterval;
|
||||
}
|
||||
Player.updateUI(
|
||||
Audio.getLoadedPercent(),
|
||||
Audio.getPlayedPercent(),
|
||||
Audio.getListenedPercent()
|
||||
);
|
||||
var pp = Audio.getPlayedPercent();
|
||||
if (pp > 0.5) {
|
||||
Audio.ttime = -1;
|
||||
}
|
||||
},
|
||||
|
||||
killListener: function() {
|
||||
try {
|
||||
window.clearTimeout(Audio.tid);
|
||||
} catch(e) {}
|
||||
}
|
||||
}
|
||||
|
||||
$('#player .controls .play').live('click', function(){
|
||||
Audio.play();
|
||||
});
|
||||
|
||||
$('#player .controls .pause').live('click', function(){
|
||||
Audio.pause();
|
||||
});
|
||||
@@ -1,9 +1,43 @@
|
||||
var Player = {
|
||||
|
||||
bar_width: 330,
|
||||
jp: null,
|
||||
scrobbled: false,
|
||||
|
||||
getTrackUrl: function(data) {
|
||||
|
||||
initJplayer: function() {
|
||||
this.jp = $("#jplayer");
|
||||
this.jp.jPlayer({
|
||||
swfPath: "/js",
|
||||
supplied: "mp3",
|
||||
cssSelectorAncestor: "",
|
||||
cssSelector: {
|
||||
play: "#player .play",
|
||||
pause: "#player .pause",
|
||||
stop: "",
|
||||
videoPlay: "",
|
||||
seekBar: "",
|
||||
playBar: "",
|
||||
mute: "",
|
||||
unmute: "",
|
||||
volumeBar: "",
|
||||
volumeBarValue: "",
|
||||
currentTime: "",
|
||||
duration: ""
|
||||
}
|
||||
});
|
||||
this.jp.bind($.jPlayer.event.timeupdate, function(e){
|
||||
data = e.jPlayer.status;
|
||||
if (!Player.scrobbled && data.currentPercentAbsolute > 50) {
|
||||
var tmp = $('#player .now-playing').text().split(' — ');
|
||||
Player.scrobble(tmp[0], tmp[1]);
|
||||
Player.scrobbled = true;
|
||||
}
|
||||
$('#player .progress .loaded').width(data.seekPercent * Player.bar_width / 100);
|
||||
$('#player .progress .played').width(data.currentPercentAbsolute * Player.bar_width / 100);
|
||||
});
|
||||
this.jp.bind($.jPlayer.event.ended, function(e){
|
||||
Player.setTrack(Player.nextTrack());
|
||||
});
|
||||
},
|
||||
|
||||
addTrack: function(artist, track, length) {
|
||||
@@ -38,13 +72,8 @@ var Player = {
|
||||
},
|
||||
|
||||
playSource: function(url) {
|
||||
var id = $('.playlist-tracks .now').attr('id').split('i')[1];
|
||||
Audio.pause();
|
||||
Audio.rewind();
|
||||
Audio.addTrack(id, url);
|
||||
Audio.setTrack(id);
|
||||
Audio.play();
|
||||
Audio.startListener();
|
||||
$('#jplayer').jPlayer('setMedia', {mp3: url}).jPlayer('play');
|
||||
Player.scrobbled = false;
|
||||
},
|
||||
|
||||
nextTrack: function() {
|
||||
@@ -67,26 +96,6 @@ var Player = {
|
||||
}
|
||||
},
|
||||
|
||||
updateUI: function(buffered, played, listened) {
|
||||
$('#player .loaded').width(Math.round(buffered * this.bar_width));
|
||||
$('#player .played').width(Math.round(played * this.bar_width));
|
||||
if (played == 1) {
|
||||
Audio.killListener();
|
||||
Player.setTrack(Player.nextTrack());
|
||||
}
|
||||
if (played > 0.5 && listened > 0) {
|
||||
var tmp = $('#player .now-playing').text().split(' — ');
|
||||
Player.scrobble(tmp[0], tmp[1]);
|
||||
}
|
||||
},
|
||||
|
||||
reset: function() {
|
||||
Audio.pause();
|
||||
Audio.killListener();
|
||||
$('#player .loaded, #player .played').width(0);
|
||||
$('#player .now-playing').text('Select track');
|
||||
},
|
||||
|
||||
updateNowListening: function(artist, track) {
|
||||
Session.query('/lastfm/listening?r='+ Math.random(), {'artist': artist, 'track': track})
|
||||
},
|
||||
@@ -96,6 +105,10 @@ var Player = {
|
||||
}
|
||||
}
|
||||
|
||||
$(function(){
|
||||
Player.initJplayer();
|
||||
});
|
||||
|
||||
$('#player .controls .prev').live('click', function(){
|
||||
Player.setTrack(Player.prevTrack());
|
||||
});
|
||||
@@ -150,5 +163,5 @@ $('.playlist-tracks li').live('dblclick', function(){
|
||||
});
|
||||
|
||||
$('#player .progress').live('click', function(e){
|
||||
Audio.skipToPercent(e.offsetX / Player.bar_width);
|
||||
$('#jplayer').jPlayer('playHead', Math.round((e.offsetX / Player.bar_width) * 100));
|
||||
});
|
||||
Reference in New Issue
Block a user