Vkontakte api work optimized

This commit is contained in:
magnolia-fan 2011-06-26 16:14:17 +04:00
parent 295811c6de
commit c95fb3514a
3 changed files with 106 additions and 77 deletions

View File

@ -64,3 +64,17 @@ String.prototype.htmlsafe = function() {
} }
return str; return str;
} }
String.prototype.trim = function() {
var str = this;
while (str.indexOf(' ') !== -1) {
str = str.replace(' ', ' ');
}
if (str.charAt(0) == ' ') {
str = str.substring(1);
}
if (str.charAt(str.length - 1) == ' ') {
str = str.substring(0, str.length - 1);
}
return str;
}

View File

@ -54,7 +54,7 @@ var Player = {
} }
var initial_count = $('.playlist-tracks li').length; var initial_count = $('.playlist-tracks li').length;
$('.playlist-tracks').append('\ $('.playlist-tracks').append('\
<li id="i'+ Math.round(Math.random() * 999999) +'" data-artist="'+ artist +'" data-album="'+ album +'" data-track="'+ track +'" data-length="'+ length +'">\ <li id="i'+ Math.round(Math.random() * 999999) +'" data-artist="'+ artist.trim() +'" data-album="'+ album.trim() +'" data-track="'+ track.trim() +'" data-length="'+ length +'">\
<div class="item">\ <div class="item">\
<div class="fade"></div>\ <div class="fade"></div>\
<span class="title" title="'+ artist.htmlsafe() +' &mdash; '+ track.htmlsafe() +'">'+ artist +' &mdash; '+ track +'</span>\ <span class="title" title="'+ artist.htmlsafe() +' &mdash; '+ track.htmlsafe() +'">'+ artist +' &mdash; '+ track +'</span>\
@ -83,7 +83,7 @@ var Player = {
$obj.addClass('now'); $obj.addClass('now');
$('#player .loaded, #player .played').width(0); $('#player .loaded, #player .played').width(0);
loadTracksData($obj.attr('data-artist'), $obj.attr('data-track'), $obj.attr('data-length'), Player.playSource); Vkontakte.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')); Player.updateNowListening($obj.attr('data-artist'), $obj.attr('data-album'), $obj.attr('data-track'));
}, },

View File

@ -1,4 +1,8 @@
function authInfo(response) { var Vkontakte = {
qr: [],
authInfo: function(response) {
if (typeof response != 'undefined' && response.session) { if (typeof response != 'undefined' && response.session) {
Session.setVkParams(response.session); Session.setVkParams(response.session);
$('#vk_login, .auth_notice').hide(); $('#vk_login, .auth_notice').hide();
@ -23,29 +27,23 @@ function authInfo(response) {
$('#vk_login, .auth_notice').css('display', 'block'); $('#vk_login, .auth_notice').css('display', 'block');
$('#vk_logout').hide(); $('#vk_logout').hide();
} }
} },
$(function(){
VK.init({
apiId: (document.location.host == 'beathaven.org' ? 2335068 : 2383163),
nameTransportPath: "/xd_receiver.html"
});
VK.Auth.getLoginStatus(authInfo);
$('#vk_login').click(function(){
VK.Auth.login(authInfo, 8);
});
$('#vk_logout').click(function(){
VK.Auth.logout(authInfo);
});
})
function loadTracksData(artist, track, duration, callback) { loadTracksData: function(artist, track, duration, callback) {
track_prepared = track.replace(/\(.*\)/i, '').split('/')[0]; var track_prepared = track.replace(/\(.*\)/i, '').split('/')[0];
VK.Api.call('audio.search', {q: artist +' '+ track_prepared}, function(r){ var query = artist +' '+ track_prepared;
callback(matchPerfectResult(r.response, artist, track, duration)); if (typeof Vkontakte.qr[query] !== 'undefined') {
}) callback(Vkontakte.qr[query]);
} else {
VK.Api.call('audio.search', {q: query}, function(r){
var url = Vkontakte.matchPerfectResult(r.response, artist, track, duration);
Vkontakte.qr[query] = url;
callback(url);
});
} }
},
function matchPerfectResult(data, artist, track, duration) { matchPerfectResult: function(data, artist, track, duration) {
var duration = duration.split(':'); var duration = duration.split(':');
if (duration[1].charAt(0) === '0') { if (duration[1].charAt(0) === '0') {
duration[1] = duration[1].substring(1); duration[1] = duration[1].substring(1);
@ -55,6 +53,8 @@ function matchPerfectResult(data, artist, track, duration) {
var best_result = null; var best_result = null;
for (var i = 1; i < data.length; i++) { for (var i = 1; i < data.length; i++) {
var score = 0; var score = 0;
data[i].artist = data[i].artist.trim();
data[i].title = data[i].title.trim();
if (data[i].artist === artist) { if (data[i].artist === artist) {
score += 10; score += 10;
} else if (data[i].artist.split(artist).length === 2) { } else if (data[i].artist.split(artist).length === 2) {
@ -85,3 +85,18 @@ function matchPerfectResult(data, artist, track, duration) {
} }
return best_result.url; return best_result.url;
} }
}
$(function(){
VK.init({
apiId: (document.location.host == 'beathaven.org' ? 2335068 : 2383163),
nameTransportPath: "/xd_receiver.html"
});
VK.Auth.getLoginStatus(Vkontakte.authInfo);
$('#vk_login').click(function(){
VK.Auth.login(Vkontakte.authInfo, 8);
});
$('#vk_logout').click(function(){
VK.Auth.logout(Vkontakte.authInfo);
});
})