class Vkontakte qr: null constructor: (@api_id) -> init: -> @qr = [] VK.init apiId: @api_id VK.Auth.getLoginStatus this.authInfo authInfo: (response) -> if typeof response isnt 'undefined' and response.session _session = new Session(response.session) $('#vk_login, .auth_notice').hide() $('#vk_logout').css display: 'block' $('#search_field').focus() if $('#search_field').length > 0 _session.query '/user/auth', {}, (ar) -> if ar.newbie VK.Api.call 'getVariable', key: 1281, (r) -> _session.query '/user/update', name: r.response, (ar2) -> _session.setUser ar2.user $('.header-container .hello .greating') .text 'Hi there, ' +(if _session.getUser().name then _session.getUser().name else '%username%')+ '!' else _session.setUser ar.user $('.header-container .hello .greating') .text 'Hi there, ' +(if _session.getUser().name then _session.getUser().name else '%username%')+ '!' else _session = new Session({}) $('#vk_login, .auth_notice').css display: 'block' $('#vk_logout').hide() window._session = _session loadTracksData: (artist, track, duration, callback) -> track_prepared = track.replace(/\(.*\)/i, '').split('/')[0]; query = artist+' '+track_prepared; if url = _vkontakte.getQR query callback url else VK.Api.call 'audio.search', q: query, (r) -> r.response.splice 0, 1 url = _vkontakte.matchPerfectResult r.response, artist, track, duration _vkontakte.addQR query, url callback url matchPerfectResult: (data, artist, track, duration) -> duration = duration.split ':' duration = parseInt(duration[0], 10) * 60 + parseInt(duration[1], 10) best_score = 0; best_result = null; for item in data score = 0; item.artist = item.artist.trim(); item.title = item.title.trim(); if item.artist == artist score += 10 else if item.artist.split(artist).length is 2 score += 5 else if item.title.split(artist).length is 2 score += 4 if item.title == track score += 10 else if item.title.split(track).length is 2 score += 5 if parseInt(item.duration, 10) == duration score += 15 else delta = Math.abs parseInt(item.duration, 10) - duration score += (10 - delta) if delta < 10 if score > best_score best_score = score best_result = item if score is 35 return best_result.url return best_result.url addQR: (query, url) -> @qr[query] = url; getQR: (query) -> if @qr[query]? @qr[query] false $ -> $('#vk_login').click -> VK.Auth.login _vkontakte.authInfo(), 8 $('#vk_logout').click -> VK.Auth.logout _vkontakte.authInfo()