class Scraper
Constants
- KEY
Public Class Methods
get_line_destinations(station_code)
click to toggle source
# File lib/gobart/scraper.rb, line 14 def self.get_line_destinations(station_code) #gets the real time updates doc = Scraper.scrape_api(station_code) doc.css("station etd").css("abbreviation").collect {|x| x.text} end
get_station_info(station_code)
click to toggle source
# File lib/gobart/scraper.rb, line 38 def self.get_station_info(station_code) #get station info as provided by BART stnt_info_api = "http://api.bart.gov/api/stn.aspx?cmd=stnaccess&orig=#{station_code}&l=1&key=#{KEY}" doc = Nokogiri::HTML(open(stnt_info_api)) output = doc.css("//stations").text output end
get_train_status(station_code)
click to toggle source
# File lib/gobart/scraper.rb, line 19 def self.get_train_status(station_code) #gets real time departure times doc = Scraper.scrape_api(station_code) output = doc.css('station etd').map do |etd| { destination: etd.css('destination').text, abbreviation: etd.css('abbreviation').text, arrivals: reformat(etd.css('estimate').map { |e| e.css('minutes').text.to_i }), cars: (etd.css('estimate').map { |e| e.css('length').text.to_i }) } end output end
reformat(eta)
click to toggle source
# File lib/gobart/scraper.rb, line 32 def self.reformat(eta) #reformats the minutes data to show 'now' when it is 0 eta.map do |time| time == 0 ? 'now' : "#{time}" end end
scrape_advisory(station_code)
click to toggle source
# File lib/gobart/scraper.rb, line 45 def self.scrape_advisory(station_code) #gets system advisories adv_api = "http://api.bart.gov/api/bsa.aspx?cmd=bsa&orig=#{station_code}&key=#{KEY}" doc = Nokogiri::XML(open(adv_api)) advisories = doc.search('description').children.find{|e| e.cdata?}.text end
scrape_api(station_code)
click to toggle source
# File lib/gobart/scraper.rb, line 9 def self.scrape_api(station_code) #used by self.get_line_destinations & self.get_train_status edt_api = "http://api.bart.gov/api/etd.aspx?cmd=etd&orig=#{station_code}&key=#{KEY}" doc = Nokogiri::HTML(open(edt_api)) end
scrape_train_count()
click to toggle source
# File lib/gobart/scraper.rb, line 51 def self.scrape_train_count #gets the current count of the trains currently running in the system tc_api = "http://api.bart.gov/api/bsa.aspx?cmd=count&key=#{KEY}" doc = Nokogiri::HTML(open(tc_api)) count = doc.css("traincount").text end