Player improvements, scrobbling with album name
This commit is contained in:
parent
cef23c43e9
commit
0b6bad1a24
|
@ -47,7 +47,7 @@ class LastFmController < ApplicationController
|
|||
return unless authorized?
|
||||
@res = {}
|
||||
|
||||
if params[:artist].nil? or params[:track].nil?
|
||||
if params[:artist].nil? or params[:album].nil? or params[:track].nil?
|
||||
render :json => {:status => 'bad params'}
|
||||
return
|
||||
end
|
||||
|
@ -70,7 +70,7 @@ class LastFmController < ApplicationController
|
|||
return unless authorized?
|
||||
@res = {}
|
||||
|
||||
if params[:artist].nil? or params[:track].nil?
|
||||
if params[:artist].nil? or params[:album].nil? or params[:track].nil?
|
||||
render :json => {:status => 'bad params'}
|
||||
return
|
||||
end
|
||||
|
@ -83,7 +83,7 @@ class LastFmController < ApplicationController
|
|||
|
||||
lastfm = Lastfm.new(@@api_key, @@secret)
|
||||
lastfm.session = user.lastfm_key
|
||||
r = lastfm.track.scrobble(params[:artist], params[:track], nil, Time.now.utc.to_i)
|
||||
r = lastfm.track.scrobble(params[:artist], params[:track], params[:album], Time.now.utc.to_i)
|
||||
|
||||
render :json => {:status => r ? 'success' : 'failed', time: Time.now.utc}
|
||||
return
|
||||
|
|
|
@ -28,8 +28,8 @@ var Player = {
|
|||
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]);
|
||||
var $obj = $('.playlist-tracks li.now');
|
||||
Player.scrobble($obj.attr('data-artist'), $obj.attr('data-album'), $obj.attr('data-track'));
|
||||
Player.scrobbled = true;
|
||||
}
|
||||
$('#player .progress .loaded').width(data.seekPercent * Player.bar_width / 100);
|
||||
|
@ -40,10 +40,13 @@ var Player = {
|
|||
});
|
||||
},
|
||||
|
||||
addTrack: function(artist, track, length) {
|
||||
addTrack: function(artist, album, track, length, autoplay) {
|
||||
if (typeof autoplay === 'undefined') {
|
||||
autoplay = false;
|
||||
}
|
||||
var initial_count = $('.playlist-tracks li').length;
|
||||
$('.playlist-tracks').append('\
|
||||
<li id="i'+ Math.round(Math.random() * 999999) +'">\
|
||||
<li id="i'+ Math.round(Math.random() * 999999) +'" data-artist="'+ artist +'" data-album="'+ album +'" data-track="'+ track +'" data-length="'+ length +'">\
|
||||
<div class="item">\
|
||||
<div class="fade"></div>\
|
||||
<span class="title">'+ artist +' — '+ track +'</span>\
|
||||
|
@ -56,24 +59,24 @@ var Player = {
|
|||
$('#playlist').html($('.playlist-tracks')).scrollbar();
|
||||
$('.playlist-tracks').sortable();
|
||||
|
||||
if (initial_count === 0 && !Player.hasTrack()) {
|
||||
if (autoplay) {
|
||||
Player.setTrack($('.playlist-tracks li').last().attr('id').split('i')[1]);
|
||||
} else if (initial_count === 0 && !Player.hasTrack()) {
|
||||
Player.setTrack($('.playlist-tracks li').first().attr('id').split('i')[1]);
|
||||
}
|
||||
},
|
||||
|
||||
setTrack: function(id) {
|
||||
var $obj = $('#i'+ id);
|
||||
var query = $obj.find('.title').text();
|
||||
var length = $obj.find('.duration').text();
|
||||
var tmp = query.split(' — ');
|
||||
var query = $obj.attr('data-artist') +'—'+ $obj.attr('data-track');
|
||||
|
||||
$('#player .now-playing').html(query);
|
||||
$('.playlist-tracks li').removeClass('now');
|
||||
$obj.addClass('now');
|
||||
$('#player .loaded, #player .played').width(0);
|
||||
|
||||
loadTracksData(tmp[0], tmp[1], length, Player.playSource);
|
||||
Player.updateNowListening(tmp[0], tmp[1]);
|
||||
loadTracksData($obj.attr('data-artist'), $obj.attr('data-track'), $obj.attr('data-length'), Player.playSource);
|
||||
Player.updateNowListening($obj.attr('data-artist'), $obj.attr('data-album'), $obj.attr('data-track'));
|
||||
},
|
||||
|
||||
hasTrack: function() {
|
||||
|
@ -111,12 +114,12 @@ var Player = {
|
|||
}
|
||||
},
|
||||
|
||||
updateNowListening: function(artist, track) {
|
||||
Session.query('/lastfm/listening?r='+ Math.random(), {'artist': artist, 'track': track})
|
||||
updateNowListening: function(artist, album, track) {
|
||||
Session.query('/lastfm/listening?r='+ Math.random(), {'artist': artist, 'album': album, 'track': track})
|
||||
},
|
||||
|
||||
scrobble: function(artist, track) {
|
||||
Session.query('/lastfm/scrobble?r='+ Math.random(), {'artist': artist, 'track': track})
|
||||
scrobble: function(artist, album, track) {
|
||||
Session.query('/lastfm/scrobble?r='+ Math.random(), {'artist': artist, 'album': album, 'track': track})
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -134,17 +137,19 @@ $('#player .controls .next').live('click', function(){
|
|||
|
||||
$('.add-album').live('click', function() {
|
||||
var artist = $('.artist-info .name').html();
|
||||
var album = $(this).parent().parent().parent().find('h2.name').text().replace(/\s\([\d]{4}\)$/, '');
|
||||
$(this).parent().parent().parent().find('.tracklist li').each(function(i, item){
|
||||
var track_name = $(item).find('.trackname').html();
|
||||
var length = $(item).find('.length').html();
|
||||
Player.addTrack(artist, track_name, length);
|
||||
Player.addTrack(artist, album, track_name, length);
|
||||
});
|
||||
})
|
||||
$('.add-track').live('click', function(){
|
||||
var artist = $('.artist-info .name').html();
|
||||
var album = $(this).parent().parent().parent().parent().find('h2.name').text().replace(/\s\([\d]{4}\)$/, '');
|
||||
var track_name = $(this).parent().find('.trackname').html();
|
||||
var length = $(this).parent().find('.length').html();
|
||||
Player.addTrack(artist, track_name, length);
|
||||
Player.addTrack(artist, album, track_name, length);
|
||||
});
|
||||
|
||||
$('#player .play').live('click', function(){
|
||||
|
@ -159,6 +164,12 @@ $('.tracklist li').live('mouseover mouseout', function(e){
|
|||
} else {
|
||||
$(this).find('.add-track').hide();
|
||||
}
|
||||
}).live('dblclick', function(e){
|
||||
var artist = $('.artist-info .name').html();
|
||||
var album = $(this).parent().parent().parent().find('h2.name').text().replace(/\s\([\d]{4}\)$/, '');
|
||||
var track_name = $(this).find('.trackname').html();
|
||||
var length = $(this).find('.length').html();
|
||||
Player.addTrack(artist, album, track_name, length, true);
|
||||
});
|
||||
|
||||
$('.playlist-tracks li .fade, .playlist-tracks li .duration, .playlist-tracks li .remove').live('mouseover mouseout', function(e){
|
||||
|
|
Loading…
Reference in New Issue