1
0
Fork 0
oldhaven/app/assets/javascripts/vkontakte.coffee

140 lines
3.9 KiB
CoffeeScript
Raw Normal View History

2011-09-07 23:47:11 +00:00
class window.Vkontakte
2011-09-09 22:13:02 +00:00
qr: null
api_id: null
constructor: (@api_id) ->
getApiId: ->
@api_id
init: ->
2011-09-15 11:07:35 +00:00
@qr = {}
2011-09-09 22:13:02 +00:00
window.vkAsyncInit = ->
VK.init apiId: _vkontakte.getApiId()
VK.Auth.getLoginStatus (response) ->
_vkontakte.authInfo(response)
2011-06-29 04:11:54 +00:00
2011-09-09 22:13:02 +00:00
setTimeout ->
$('#vk_api_transport').append('<script async="async" type="text/javascript" src="http://vkontakte.ru/js/api/openapi.js"></script>')
, 0
authInfo: (response) ->
if typeof response isnt 'undefined' and response.session
_session = new Session(response.session)
_session.query '/user/auth', {}, (ar) ->
2011-09-17 10:20:07 +00:00
if ar.ok_reload
window.location.reload()
false
2011-09-09 22:13:02 +00:00
if ar.newbie
VK.Api.call 'getVariable', key: 1281, (r) ->
_session.query '/user/update', name: r.response, (ar2) ->
_session.setUser ar2.user
2011-09-09 23:30:03 +00:00
$('#username')
.html (if _session.getUser().name then _session.getUser().name else '%username%')
2011-09-09 22:13:02 +00:00
window._session = _session
_ajax.detectPage()
_session.displayAuthorizedContent()
2011-09-15 09:38:24 +00:00
$('#authorized').css display: 'block'
2011-09-09 22:13:02 +00:00
else
_session.setUser ar.user
2011-09-09 23:30:03 +00:00
$('#username')
.html (if _session.getUser().name then _session.getUser().name else '%username%')
_session.displayAuthorizedContent()
2011-09-09 22:13:02 +00:00
window._session = _session
_ajax.detectPage()
$('.fullscreen').hide();
if response.session.expire?
setTimeout ->
_vkontakte.auth()
false
, response.session.expire * 1000 - new Date().getTime() + 1000
else
_session = new Session({})
_session.setUser {}
_session.hideAuthorizedContent()
2011-09-09 22:13:02 +00:00
window._session = _session
_ajax.detectPage()
$('.fullscreen').hide();
auth: ->
VK.Auth.getLoginStatus (response) ->
_vkontakte.authInfo(response)
false
, 8
false
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) ->
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
if typeof item is 'object'
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
2011-06-27 18:41:36 +00:00
2011-09-09 22:13:02 +00:00
return best_result.url
addQR: (query, url) ->
2011-09-15 11:07:35 +00:00
_vkontakte.qr[query] = url;
2011-09-09 22:13:02 +00:00
getQR: (query) ->
2011-09-15 11:07:35 +00:00
if _vkontakte.qr[query]?
_vkontakte.qr[query]
2011-09-09 22:13:02 +00:00
false
2011-06-27 18:41:36 +00:00
2011-09-15 09:38:24 +00:00
$('#login').live 'click', ->
2011-09-09 22:13:02 +00:00
VK.Auth.login (response) ->
_vkontakte.authInfo(response)
false
, 8
false
2011-09-15 09:38:24 +00:00
$('#logout').live 'click', ->
2011-09-09 22:13:02 +00:00
VK.Auth.logout (response) ->
_vkontakte.authInfo(response)
2011-09-19 08:21:03 +00:00
$('.button-container').hide()
2011-09-09 22:13:02 +00:00
false
false