jPlayer integrated

This commit is contained in:
magnolia-fan
2011-06-24 02:49:18 +04:00
parent 41f0c782fa
commit ecb47b27e7
5 changed files with 49 additions and 200 deletions
-113
View File
@@ -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();
});
+43 -30
View File
@@ -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));
});