class Sportsflix::Providers::Arenavision::Client
Constants
- BASE_URLS
- HEADERS
Public Class Methods
new(options)
click to toggle source
# File lib/sportsflix/providers/arenavision.rb, line 19 def initialize(options) @verbose = options[:verbose] @club_name = options[:club] @server_only = options['server-only'] @http = Sportsflix::Utils::HTTP.new @base_url = BASE_URLS.sample puts "" puts @base_url puts "" end
Public Instance Methods
get_stream_uri(stream_nr, event)
click to toggle source
# File lib/sportsflix/providers/arenavision.rb, line 70 def get_stream_uri(stream_nr, event) home = get_page_contents("#{@base_url}/") stream_link = home.css('a').select {|item| item.text.include?("#{event} #{stream_nr}")}.first.get('href') stream_raw = get_page_contents(stream_link) stream_raw.css('a').select {|item| !item.get('href').nil? && item.get('href').include?('acestream://')}.first.get('href') end
list_streams()
click to toggle source
# File lib/sportsflix/providers/arenavision.rb, line 30 def list_streams @base_url = resolve_base_url("#{@base_url}/") home = get_page_contents("#{@base_url}/") schedule_path = home.css('a').select {|item| item.text.include?('EVENTS GUIDE')}.first.get('href') schedule_url = if schedule_path.start_with?("http") schedule_path else "#{@base_url}#{schedule_path}" end schedule = get_page_contents(schedule_url) streams = schedule.css('table tr') # Remove first element streams = streams.drop(1) # Remove last element streams.pop(2) # Remove weird empty lines with non-breaking spaces ?!? streams = streams.select do |item| item_text = item.css('td:nth-child(1)').text item_text = item_text.force_encoding('UTF-8') item_text = item_text.delete(' ').strip script_text = item.css('td:nth-child(1) script').text not item_text.empty? and script_text.empty? end streams.map do |item| { :date => clean_str(item.css('td:nth-child(1)').text), :hour => clean_str(item.css('td:nth-child(2)').text), :sport => clean_str(item.css('td:nth-child(3)').text), :competition => clean_str(item.css('td:nth-child(4)').text), :game => clean_str(item.css('td:nth-child(5)').text), :stream_nr => parse_stream_ids(clean_str(item.css('td:nth-child(6)').text)), :proxy => :acestream } end end
Private Instance Methods
clean_str(str)
click to toggle source
# File lib/sportsflix/providers/arenavision.rb, line 105 def clean_str(str) str.force_encoding('UTF-8') .gsub("\n\t\t", ' ') .strip end
get_page_contents(raw_url)
click to toggle source
# File lib/sportsflix/providers/arenavision.rb, line 84 def get_page_contents(raw_url) html_str = @http.get(raw_url, {}, HEADERS).body Oga.parse_xml(html_str) end
parse_stream_ids(raw_stream)
click to toggle source
# File lib/sportsflix/providers/arenavision.rb, line 89 def parse_stream_ids(raw_stream) matches = raw_stream.scan(/(([W]?[0-9]+)(?:-([W]?[0-9]+))? \[(.+?)\])/) matches.map do |match| { :start => match[1].delete("W").to_i, :end => (match[2] || match[1]).delete("W").to_i, :language => match[3], :event => if match[1].start_with?("W") "World Cup" else "ArenaVision" end } end end
resolve_base_url(raw_url)
click to toggle source
# File lib/sportsflix/providers/arenavision.rb, line 79 def resolve_base_url(raw_url) resp = @http.get(raw_url, {},HEADERS) "#{resp.uri.scheme}://#{resp.uri.host}" end