diff --git a/app/controllers/artist_controller.rb b/app/controllers/artist_controller.rb index 547b086..94fba43 100644 --- a/app/controllers/artist_controller.rb +++ b/app/controllers/artist_controller.rb @@ -3,15 +3,15 @@ class ArtistController < ApplicationController require 'open-uri' def view # Dirty auth block START - unless request.session['session_id'].nil? or MainController.logged_in request.session['session_id'] - redirect_to '/login' - return - else - if request.session['session_id'].nil? - redirect_to '/login' - return - end - end + # unless request.session['session_id'].nil? or MainController.logged_in request.session['session_id'] + # redirect_to '/login' + # return + # else + # if request.session['session_id'].nil? + # redirect_to '/login' + # return + # end + # end # Dirty auth block END if params[:name].nil? name = '' diff --git a/app/controllers/main_controller.rb b/app/controllers/main_controller.rb index 3e3d473..948a6ec 100644 --- a/app/controllers/main_controller.rb +++ b/app/controllers/main_controller.rb @@ -1,23 +1,7 @@ class MainController < ApplicationController def index - # Dirty auth block START - unless request.session['session_id'].nil? or MainController.logged_in request.session['session_id'] - redirect_to '/login' - else - if request.session['session_id'].nil? - redirect_to '/login' - end - end - # Dirty auth block END - end - def self.logged_in session_id - user_data = User.collection.find({session_key: Digest::SHA256.hexdigest(session_id)}).first - unless user_data.nil? - user_data['lastvisit'] = Time.now() - User.collection.update({_id: user_data._id}, user_data.attributes) - return true - else - return false - end + # unless User.logged_in + # redirect_to '/login' + # end end end \ No newline at end of file diff --git a/app/controllers/track_controller.rb b/app/controllers/track_controller.rb index da74a75..4d5b17f 100644 --- a/app/controllers/track_controller.rb +++ b/app/controllers/track_controller.rb @@ -3,18 +3,14 @@ class TrackController < ApplicationController require 'uri' def listen pp track = Track.where(:id => params[:id].to_i).first - pp release = Release.where(:id => track.release_id).first - pp album = Album.where(:id => release.album_id).first - pp artist = Artist.where(:id => album.artist_id).first - data = Vkontakte.get(artist.name, track.name, (track.length / 1000).round) - + data = Vkontakte.get(track.artist_name, track.name, (track.length / 1000).round) + # data = Vkontakte.get(1, 1, 1) url = URI.parse(data['url']) nginx_url = '/proxy-stream/no-token/' << data['remixsid'] << '/' << '5' << '/' << url.host << url.path - #render :inline => nginx_url + headers['Content-Type'] = 'audio/mpeg' headers['X-Accel-Redirect'] = nginx_url - headers['Connection'] = 'close' render :nothing => true end end diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index a5d2739..32a0bfe 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -1,4 +1,7 @@ module ApplicationHelper + def navigation + + end end class Numeric diff --git a/app/helpers/vkontakte.rb b/app/helpers/vkontakte.rb index a462a58..700ed6f 100644 --- a/app/helpers/vkontakte.rb +++ b/app/helpers/vkontakte.rb @@ -2,38 +2,34 @@ module Vkontakte require 'uri' require 'net/http' require 'erb' + require 'pp' #require 'nokogiri' @@accounts = YAML.load_file("#{Rails.root.to_s}/config/vk_accounts.yml") @@bot = nil - def self.get artist, track, length - self.randomBot + def self.get(artist, track, length) + self.randomBot() html = self.getHtml(artist << ' - ' << track).force_encoding("WINDOWS-1251").encode("UTF-8") - #pp html.encoding - #File.open('/Users/chez/Sites/beathaven/tmp/vkres1.html', 'w') {|f| f.write(html) } - #html = open('/Users/chez/Sites/beathaven/tmp/vkres1.html').read files = self.parseHtml(html) - files = self.calcWeight(files, artist, track, length) - #self.stream files.first['url'] - + files = self.calcWeight(files, artist, track, length) return { - 'url' => files.first['url'], - 'remixsid' => @@bot['remixsid'], - 'remixchk' => @@bot['remixchk'] + 'url' => files.first['url'], + 'remixsid' => @@bot['remixsid'], + 'remixchk' => @@bot['remixchk'] } end private - def self.randomBot + def self.randomBot() botname = @@accounts.keys[rand(@@accounts.keys.length - 1)] @@bot = @@accounts[botname] pp 'Using bot ' << botname end - def self.getHtml q + def self.getHtml(q) headers = { 'Cookie' => 'remixsid='+ @@bot['remixsid'] + ';remixchk='+ @@bot['remixchk'].to_s, 'Referer' => 'http://vkontakte.ru/audio?album_id=0', @@ -60,7 +56,7 @@ module Vkontakte data end - def self.parseHtml html + def self.parseHtml(html) files = [] html .scan(/.*?(.*?)<\/div>.*?.*?selectPerformer\(event\,\s\'(.*?)\'\).*?(.*?)<\/span><\/div>.*?<\/table>/mi) @@ -76,7 +72,7 @@ module Vkontakte files end - def self.calcWeight files, artist, track, length + def self.calcWeight(files, artist, track, length) files.each do |file| weight = 0 @@ -99,18 +95,4 @@ module Vkontakte files.sort_by{|file| file['weight']}.reverse end - - def self.stream url - headers = { - 'Cookie' => 'remixsid='+ @@bot['remixsid'] + ';remixchk='+ @@bot['remixchk'].to_s, - 'Referer' => 'http://vkontakte.ru/audio?album_id=0', - 'User-Agent' => @@bot['user_agent'], - } - - uri = URI.parse(url) - http = Net::HTTP.new(uri.host, 80) - resp, data = http.get2(uri.path, headers) - - data - end end diff --git a/app/models/artist.rb b/app/models/artist.rb index ba3292e..c972e5d 100644 --- a/app/models/artist.rb +++ b/app/models/artist.rb @@ -10,10 +10,10 @@ class Artist < ActiveRecord::Base return nil if query.nil? or query.strip.empty? json = ActiveSupport::JSON.decode(open( - 'http://www.last.fm/search/autocomplete' << - '?q=' << URI.escape(query) - ).read) - return nil if json.empty? else return json + 'http://www.last.fm/search/autocomplete' << + '?q=' << URI.escape(query) + ).read) + return json.empty? ? nil : json end end diff --git a/app/models/user.rb b/app/models/user.rb index 5ec3bb8..7789a16 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -9,4 +9,16 @@ class User key :invites, Integer key :referer, Integer key :active, Integer + + def logged_in + unless request.session['session_id'].nil? or MainController.logged_in session['session_id'] + redirect_to '/login' + return + else + if request.session['session_id'].nil? + redirect_to '/login' + return + end + end + end end \ No newline at end of file diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 30d0d20..00a6e36 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -9,6 +9,7 @@ <%= csrf_meta_tag %> + + <% if @hide_player.nil? -%>
diff --git a/app/views/main/navigation.html.erb b/app/views/main/navigation.html.erb new file mode 100644 index 0000000..716afed --- /dev/null +++ b/app/views/main/navigation.html.erb @@ -0,0 +1,7 @@ + \ No newline at end of file