1
0
Fork 0
vkontakte_music_search/lib/vkontakte_music.min.js

10 lines
1.6 KiB
JavaScript

/*
* Vkontakte (VK.com) API music search tool
* https://github.com/magnolia-fan/vkontakte_music_search
*
* Copyright 2011, Gregory Eremin
* Licensed under the MIT license.
* https://raw.github.com/magnolia-fan/vkontakte_music_search/master/LICENSE
*/
window.VkontakteMusic=function(){function a(){}a.prototype.query_results={};a.prototype.search=function(a,b,c,d,e){var f,g;if(e==null){e=false}f=this.prepareQuery(a,b);if(this.query_results[f]!=null&&!e){d(this.query_results[f])}g=this;return VK.Api.call("audio.search",{q:f},function(h){var i,j;i=g.range(h.response,a,b,c);j=null;if(i.length>0){j=i[0].url}g.query_results[f]=i;return d(e?i:j)})};a.prototype.range=function(a,b,c,d){var e,f,g,h,i;if(typeof d==="string"){d=d.split(":");d=parseInt(d[0],10)*60+parseInt(d[1],10)}for(f=0,i=a.length;f<i;f++){g=a[f];if(typeof g!=="object"){continue}g.score=0;g.artist=this.trim(g.artist);g.title=this.trim(g.title);h=0;if(g.artist.length>0){if(g.artist===b){h+=10}else if(g.artist.split(b).length===2){h+=5}else if(g.title.split(b).length===2){h+=4}}if(g.artist.length>0){if(g.title===c){h+=10}else if(g.title.split(c).length===2){h+=5}}if(d!==0&&parseInt(g.duration,10)===d){h+=15}else{e=Math.abs(parseInt(g.duration,10)-d);if(e<10){h+=10-e}}a[f].score=h}if(a.length>0){if(typeof a[0]!=="object"){a.splice(0,1)}a.sort(function(a,b){return b.score-a.score})}return a};a.prototype.prepareQuery=function(a,b){return a+" "+b.replace(/\(.*\)/i,"").split("/")[0]};a.prototype.trim=function(a){while(a.indexOf(" ")!==-1){a=a.replace(" "," ")}if(a.charAt(0)===" "){a=a.substring(1)}if(a.charAt(a.length-1)===" "){a=a.substring(0,a.length-1)}return a};return a}()