Vkontakte session battle
This commit is contained in:
		
							parent
							
								
									eed7ea685c
								
							
						
					
					
						commit
						4a2f793635
					
				| @ -19,12 +19,12 @@ class Session | ||||
| 		@user | ||||
| 	 | ||||
| 	query: (url, params, callback) -> | ||||
| 		q_params = @vk_params | ||||
| 		$.each params, (key, val) -> | ||||
| 			q_params[key] = val | ||||
| 		q_params = $.extend {}, @vk_params, params | ||||
| 		$.post url, q_params, callback | ||||
| 		false | ||||
| 	 | ||||
| 	reloadSession: -> | ||||
| 		_session.query '/user/auth', {}, (ar) -> | ||||
| 			_session.setUser ar.user | ||||
| 			false | ||||
| 		false | ||||
|  | ||||
| @ -13,7 +13,8 @@ class Vkontakte | ||||
| 		 | ||||
| 		window.vkAsyncInit = -> | ||||
| 			VK.init apiId: _vkontakte.getApiId() | ||||
| 			VK.Auth.getLoginStatus _vkontakte.authInfo | ||||
| 			VK.Auth.getLoginStatus (response) -> | ||||
| 				_vkontakte.authInfo(response) | ||||
| 
 | ||||
| 
 | ||||
| 		setTimeout -> | ||||
| @ -42,6 +43,12 @@ class Vkontakte | ||||
| 				$('.header-container .hello').show() | ||||
| 				$('.header-container .hello .greating') | ||||
| 					.html 'Tēnā koe, <span class="settings">' +(if _session.getUser().name then _session.getUser().name else '%username%')+ '</span>!' | ||||
| 			 | ||||
| 			if response.session.expire? | ||||
| 				setTimeout -> | ||||
| 					_vkontakte.auth() | ||||
| 					false | ||||
| 				, response.session.expire * 1000 - new Date().getTime() + 1000 | ||||
| 		else | ||||
| 			_session = new Session({}) | ||||
| 			_session.setUser {} | ||||
| @ -49,6 +56,13 @@ class Vkontakte | ||||
| 			$('.header-container .hello').hide() | ||||
| 		window._session = _session | ||||
| 	 | ||||
| 	auth: -> | ||||
| 		VK.Auth.login (response) -> | ||||
| 			_vkontakte.authInfo(response) | ||||
| 			false | ||||
| 		, 8 | ||||
| 		false | ||||
| 	 | ||||
| 	loadTracksData: (artist, track, duration, callback) -> | ||||
| 		track_prepared = track.replace(/\(.*\)/i, '').split('/')[0]; | ||||
| 		query = artist+' '+track_prepared; | ||||
| @ -56,46 +70,45 @@ class Vkontakte | ||||
| 			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 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.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 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 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 > best_score | ||||
| 					best_score = score | ||||
| 					best_result = item | ||||
| 			 | ||||
| 			if score is 35 | ||||
| 				return best_result.url | ||||
| 				if score is 35 | ||||
| 					return best_result.url | ||||
| 
 | ||||
| 		return best_result.url | ||||
| 	 | ||||
| @ -108,12 +121,11 @@ class Vkontakte | ||||
| 		false | ||||
| 
 | ||||
| $('#vk_login').live 'click', -> | ||||
| 	VK.Auth.login (response) -> | ||||
| 		_vkontakte.authInfo(response) | ||||
| 		false | ||||
| 	, 8 | ||||
| 	_vkontakte.auth() | ||||
| 	false | ||||
| $('#vk_logout').live 'click', -> | ||||
| 	_ajax.go '/search/'; | ||||
| 	VK.Auth.logout _vkontakte.authInfo | ||||
| 	VK.Auth.logout (response) -> | ||||
| 		_vkontakte.authInfo(response) | ||||
| 		false | ||||
| 	false | ||||
|  | ||||
| @ -5,12 +5,12 @@ | ||||
| 		<meta charset="utf-8"/> | ||||
| 		<link rel="shortcut icon" href="/favicon.ico" /> | ||||
| 		<link rel="stylesheet" type="text/css" media="screen" href="/stylesheets/beathaven.css" /> | ||||
| 		<%= javascript_include_tag "jquery/jquery.min.js" %> | ||||
| 		<%= javascript_include_tag "jquery/jquery-ui/js/jquery-ui-1.8.13.custom.min.js" %> | ||||
| 		<%= javascript_include_tag "jquery/jquery.autocomplete.js" %> | ||||
| 		<%= javascript_include_tag "jquery/jquery.contentchange.js" %> | ||||
| 		<%= javascript_include_tag "jquery/jquery.jplayer.js" %> | ||||
| 		<%= javascript_include_tag "jquery/jquery.scroll.js" %> | ||||
| 		<%= javascript_include_tag "jquery/jquery.min.js", :type => "text/javascript", :charset => "utf-8"  %> | ||||
| 		<%= javascript_include_tag "jquery/jquery-ui/js/jquery-ui-1.8.13.custom.min.js", :type => "text/javascript", :charset => "utf-8"  %> | ||||
| 		<%= javascript_include_tag "jquery/jquery.autocomplete.js", :type => "text/javascript", :charset => "utf-8"  %> | ||||
| 		<%= javascript_include_tag "jquery/jquery.contentchange.js", :type => "text/javascript", :charset => "utf-8"  %> | ||||
| 		<%= javascript_include_tag "jquery/jquery.jplayer.js", :type => "text/javascript", :charset => "utf-8"  %> | ||||
| 		<%= javascript_include_tag "jquery/jquery.scroll.js", :type => "text/javascript", :charset => "utf-8"  %> | ||||
| 		<%= javascript_include_tag "coffee/beathaven.js", :type => "text/javascript", :charset => "utf-8" %> | ||||
| 		<%= javascript_include_tag "coffee/vkontakte.js", :type => "text/javascript", :charset => "utf-8" %> | ||||
| 		<%= javascript_include_tag "coffee/session.js", :type => "text/javascript", :charset => "utf-8" %> | ||||
| @ -61,7 +61,7 @@ | ||||
| 				<div class="settings settings-button"></div> | ||||
| 			</div> | ||||
| 			<ul class="navigation"> | ||||
| 				<li class="logo search">BeatHaven<div class="version">0.4</div></li> | ||||
| 				<li class="logo search">BeatHaven<div class="version">0.4b</div></li> | ||||
| 				<li class="search">Search</li> | ||||
| 				<li><a href="https://twitter.com/#!/beat_haven" target="_blank">News</a></li> | ||||
| 				<li class="about">About</li> | ||||
|  | ||||
| @ -23,17 +23,16 @@ Session = (function() { | ||||
|   }; | ||||
|   Session.prototype.query = function(url, params, callback) { | ||||
|     var q_params; | ||||
|     q_params = this.vk_params; | ||||
|     $.each(params, function(key, val) { | ||||
|       return q_params[key] = val; | ||||
|     }); | ||||
|     q_params = $.extend({}, this.vk_params, params); | ||||
|     $.post(url, q_params, callback); | ||||
|     return false; | ||||
|   }; | ||||
|   Session.prototype.reloadSession = function() { | ||||
|     return _session.query('/user/auth', {}, function(ar) { | ||||
|       return _session.setUser(ar.user); | ||||
|     _session.query('/user/auth', {}, function(ar) { | ||||
|       _session.setUser(ar.user); | ||||
|       return false; | ||||
|     }); | ||||
|     return false; | ||||
|   }; | ||||
|   return Session; | ||||
| })(); | ||||
| @ -14,7 +14,9 @@ Vkontakte = (function() { | ||||
|       VK.init({ | ||||
|         apiId: _vkontakte.getApiId() | ||||
|       }); | ||||
|       return VK.Auth.getLoginStatus(_vkontakte.authInfo); | ||||
|       return VK.Auth.getLoginStatus(function(response) { | ||||
|         return _vkontakte.authInfo(response); | ||||
|       }); | ||||
|     }; | ||||
|     return setTimeout(function() { | ||||
|       return $('#vk_api_transport').append('<script async="async" src="http://vkontakte.ru/js/api/openapi.js"></script>'); | ||||
| @ -49,6 +51,12 @@ Vkontakte = (function() { | ||||
|         $('.header-container .hello').show(); | ||||
|         return $('.header-container .hello .greating').html('Tēnā koe, <span class="settings">' + (_session.getUser().name ? _session.getUser().name : '%username%') + '</span>!'); | ||||
|       }); | ||||
|       if (response.session.expire != null) { | ||||
|         setTimeout(function() { | ||||
|           _vkontakte.auth(); | ||||
|           return false; | ||||
|         }, response.session.expire * 1000 - new Date().getTime() + 1000); | ||||
|       } | ||||
|     } else { | ||||
|       _session = new Session({}); | ||||
|       _session.setUser({}); | ||||
| @ -59,6 +67,13 @@ Vkontakte = (function() { | ||||
|     } | ||||
|     return window._session = _session; | ||||
|   }; | ||||
|   Vkontakte.prototype.auth = function() { | ||||
|     VK.Auth.login(function(response) { | ||||
|       _vkontakte.authInfo(response); | ||||
|       return false; | ||||
|     }, 8); | ||||
|     return false; | ||||
|   }; | ||||
|   Vkontakte.prototype.loadTracksData = function(artist, track, duration, callback) { | ||||
|     var query, track_prepared, url; | ||||
|     track_prepared = track.replace(/\(.*\)/i, '').split('/')[0]; | ||||
| @ -69,7 +84,6 @@ Vkontakte = (function() { | ||||
|       return VK.Api.call('audio.search', { | ||||
|         q: query | ||||
|       }, function(r) { | ||||
|         r.response.splice(0, 1); | ||||
|         url = _vkontakte.matchPerfectResult(r.response, artist, track, duration); | ||||
|         _vkontakte.addQR(query, url); | ||||
|         return callback(url); | ||||
| @ -84,35 +98,37 @@ Vkontakte = (function() { | ||||
|     best_result = null; | ||||
|     for (_i = 0, _len = data.length; _i < _len; _i++) { | ||||
|       item = data[_i]; | ||||
|       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 === 2) { | ||||
|         score += 5; | ||||
|       } else if (item.title.split(artist).length === 2) { | ||||
|         score += 4; | ||||
|       } | ||||
|       if (item.title === track) { | ||||
|         score += 10; | ||||
|       } else if (item.title.split(track).length === 2) { | ||||
|         score += 5; | ||||
|       } | ||||
|       if (parseInt(item.duration, 10) === duration) { | ||||
|         score += 15; | ||||
|       } else { | ||||
|         delta = Math.abs(parseInt(item.duration, 10) - duration); | ||||
|         if (delta < 10) { | ||||
|           score += 10 - delta; | ||||
|       if (typeof item === '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 === 2) { | ||||
|           score += 5; | ||||
|         } else if (item.title.split(artist).length === 2) { | ||||
|           score += 4; | ||||
|         } | ||||
|         if (item.title === track) { | ||||
|           score += 10; | ||||
|         } else if (item.title.split(track).length === 2) { | ||||
|           score += 5; | ||||
|         } | ||||
|         if (parseInt(item.duration, 10) === duration) { | ||||
|           score += 15; | ||||
|         } else { | ||||
|           delta = Math.abs(parseInt(item.duration, 10) - duration); | ||||
|           if (delta < 10) { | ||||
|             score += 10 - delta; | ||||
|           } | ||||
|         } | ||||
|         if (score > best_score) { | ||||
|           best_score = score; | ||||
|           best_result = item; | ||||
|         } | ||||
|         if (score === 35) { | ||||
|           return best_result.url; | ||||
|         } | ||||
|       } | ||||
|       if (score > best_score) { | ||||
|         best_score = score; | ||||
|         best_result = item; | ||||
|       } | ||||
|       if (score === 35) { | ||||
|         return best_result.url; | ||||
|       } | ||||
|     } | ||||
|     return best_result.url; | ||||
| @ -129,14 +145,14 @@ Vkontakte = (function() { | ||||
|   return Vkontakte; | ||||
| })(); | ||||
| $('#vk_login').live('click', function() { | ||||
|   VK.Auth.login(function(response) { | ||||
|     _vkontakte.authInfo(response); | ||||
|     return false; | ||||
|   }, 8); | ||||
|   _vkontakte.auth(); | ||||
|   return false; | ||||
| }); | ||||
| $('#vk_logout').live('click', function() { | ||||
|   _ajax.go('/search/'); | ||||
|   VK.Auth.logout(_vkontakte.authInfo); | ||||
|   VK.Auth.logout(function(response) { | ||||
|     _vkontakte.authInfo(response); | ||||
|     return false; | ||||
|   }); | ||||
|   return false; | ||||
| }); | ||||
| @ -204,24 +204,24 @@ $icons_dir: "/images/icns/"; | ||||
| 			&.active { | ||||
| 				@include opacity(0.8); | ||||
| 			} | ||||
| 		} | ||||
| 		 | ||||
| 		img { | ||||
| 			float: left; | ||||
| 			margin-top: 1px; | ||||
| 		} | ||||
| 		 | ||||
| 		.annotation { | ||||
| 			float: left; | ||||
| 			margin-left: 2px; | ||||
| 		} | ||||
| 		 | ||||
| 		&#empty-playlist { | ||||
| 			float: right; | ||||
| 			margin-right: 10px; | ||||
| 			 | ||||
| 			img { | ||||
| 				margin-top: 3px; | ||||
| 				float: left; | ||||
| 				margin-top: 1px; | ||||
| 			} | ||||
| 
 | ||||
| 			.annotation { | ||||
| 				float: left; | ||||
| 				margin-left: 2px; | ||||
| 			} | ||||
| 
 | ||||
| 			&#empty-playlist { | ||||
| 				float: right; | ||||
| 				margin-right: 10px; | ||||
| 
 | ||||
| 				img { | ||||
| 					margin-top: 3px; | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| @ -171,14 +171,14 @@ | ||||
|       -ms-filter: ”alpha(opacity=80) ”; | ||||
|       filter: alpha(opacity=80); | ||||
|       opacity: 0.8; } | ||||
|   .player-container .additional-controls img { | ||||
|     float: left; | ||||
|     margin-top: 1px; } | ||||
|   .player-container .additional-controls .annotation { | ||||
|     float: left; | ||||
|     margin-left: 2px; } | ||||
|   .player-container .additional-controls#empty-playlist { | ||||
|     float: right; | ||||
|     margin-right: 10px; } | ||||
|     .player-container .additional-controls#empty-playlist img { | ||||
|       margin-top: 3px; } | ||||
|     .player-container .additional-controls .item img { | ||||
|       float: left; | ||||
|       margin-top: 1px; } | ||||
|     .player-container .additional-controls .item .annotation { | ||||
|       float: left; | ||||
|       margin-left: 2px; } | ||||
|     .player-container .additional-controls .item#empty-playlist { | ||||
|       float: right; | ||||
|       margin-right: 10px; } | ||||
|       .player-container .additional-controls .item#empty-playlist img { | ||||
|         margin-top: 3px; } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user