
Product
Socket Now Supports pylock.toml Files
Socket now supports pylock.toml, enabling secure, reproducible Python builds with advanced scanning and full alignment with PEP 751's new standard.
= metra_schedule: A library to access the Chicago Metra schedule information as Ruby objects.
This is the data library that powers http://metra.blakesmith.me
Supported Lines: Union Pacific Northwest => :up_nw Union Pacific North => :up_n North Central Service => :ncs Milwaukee District West => :md_w Union Pacific West => :up_w BNSF Railway => :bnsf Heritage Corrider => :hc Rock Island District => :ri Metra Electric District => :me
metra_schedule provides:
Scraper:: scrapes the metrarail.com website for schedule information. Schedule objects:: The scraper creates ruby objects for lines, trains and stops Cacher:: After a schedule is scraped, it can be serialized locally for subsequent object access Flexible Query Language:: Build complex scheduling constraints and permutations with the various query methods.
= Usage
How to use metra_schedule
=== Setup
gem install metra_schedule -s http://gemcutter.org
=== Using
require 'metra' line = Metra.new.line(:up_nw) # Union pacific Northwest line line.load_schedule
=== Building a list of trains
line.outbound.trains
line.outbound.weekday.trains
line.inbound.saturday.from(:barrington).to(:ogilve).trains
line.outbound.holiday.from(:arlington_heights).at(Time.parse('12:30PM')).to(:park_ridge).trains
line.inbound.on(Date.parse("December 30th 2009")).trains
= Trains
=== Instance variables:
train.train_num :: Metra train number. train.stops :: An array of all Stop objects. Contains the stop name and what time the train will arrive at that stop train.schedule :: Symbol representing the day the train runs. Either :weekday, :saturday, or :sunday (holidays run on a sunday schedule) train.direction :: Symbol representing the train direction. Either :inbound or :outbound train.bike_limit :: Maximum number of bikes per train. nil if no limit.
=== Instance methods:
train.my_travel_time :: Travel time in minutes of your trip. Assumes you specified Line#from and Line#to when you built your query train.print_my_travel_time :: Same as above, but in human readable form EG - "1 hour 2 minutes" train.has_stop?(stop) :: Takes a station name symbol and determines whether this train has that stop train.in_time?(station, time) :: Takes a station name symbol and time. Returns true if the time is before the time the train reaches that stop
= Stops
Stored inside each train.
=== Instance variables:
stop.station :: Symbol representing the station name stop.time :: Time object with the time the train stops there
=== Instance methods:
stop.in_time?(time) :: True if time is less than stop.time
=== Class methods:
Stop.pretty_print(station) :: Converts the station symbol to something human readable - EG: :irving_park becomes "Irving Park"
= Lines
=== Instance variables:
line.line_key :: Symbol of the line name line.name :: Human readable line name EG - "Union Pacific Northwest" line.url :: Url that the parser scrapes from. line.dir :: Symbol representing selected line direction. :outbound or :inbound. Set with Line#outbound Line#inbound or deduced using Line#from and Line#to or by current time of day using Line#deduce_direction_by_time line.sched :: Symbol representing selected line schedule. :weekday, :saturday or :sunday. Set with Line#weekday, Line#saturday Line#sunday Line#on(date) or Line#deduce_schedule line.start :: Symbol representing starting station name. EG - :clyborn. Set with Line#from line.destination :: Symbol representing destanation station name. EG - :ogilve. Set with Line#to line.time :: Time object representing the time you'd like to depart. Used to filter down lines. Set with Line#at
=== Instance methods:
line.load_schedule :: Load cached engine data from Marshaled cache dir (~/.metra_schedule) or if not available, fetch from the Metra website, parse and cache it line.trains :: Takes in all the other parameters you specified and returns only the trains that meet the criteria you specfied line.from(station) :: Set your starting station line.to(station) :: Set your destination station line.direction(dir) :: Set the line direction. :outbound or :inbound line.outbound :: Same as line.direction(:outbound) line.inbound :: Same as line.direction(:inbound) line.deduce_direction :: Infers line direction if you specified Line#from and Line#to line.deduce_direction_by_time :: Infers line direction based on the system clocks time of day. Before noon it sets to inbound, after noon it assumes outbound line.schedule(sched) :: Sets the line schedule. Either :weekday :saturday or :sunday line.weekday :: Same as line.direction(:weekday) line.saturday :: Same as line.direction(:saturday) line.sunday :: Same as line.direction(:sunday) line.holiday :: Same as line.direction(:sunday) line.on(date) :: Sets schedule using the date you specified line.deduce_schedule :: Same as on(Date.today) line.at(time) :: Sets line time. Specifying this will only display trains that appear at your starting station (specified with Line#from) before the given time
= Line Data
Current supported lines:
=== Union Pacific Northwest => :up_nw
stations:
:ogilve, :clyborn, :irving_park, :jefferson_park, :gladstone_park, :norwood_park, :edison_park, :park_ridge, :dee_road, :des_plaines, :cumberland, :mount_prospect, :arlington_heights, :arlington_park, :palatine, :barrington, :fox_river_grove, :cary, :pingree_road, :crystal_lake, :woodstock, :mchenry, :harvard
=== Union Pacific North => :up_n
stations:
:ogilve, :clyborn, :ravenswood, :rogers_park, :evanston_main_street, :evanston_davis_street, :evanston_central_street, :wilmette, :kenilworth, :indian_hill, :winnetka, :hubbard_woods, :glencoe, :braeside, :ravinia_park, :ravinia, :highland_park, :highwood, :fort_sheridan, :lake_forest, :lake_bluff, :greate_lakes, :north_chicago, :waukegan, :zion, :winthrop_harbor, :kenosha
=== North Central Service => :ncs
stations:
:union_station, :western_avenue, :river_grove, :franklin_park, :schiller_park, :rosemont, :ohare_transfer, :prospect_heights, :wheeling, :buffalo_grove, :prairie_view, :vernon_hills, :mundelein, :libertyville, :grayslake, :round_lake_beach, :lake_villa, :antioch
=== Milwaukee District West => :md_w
stations:
:union_station, :western_avenue, :grand_cicero, :hanson_park, :galewood, :mars, :mont_clare, :elmwood_park, :river_park, :franklin_park, :mannheim, :bensenville, :wood_dale, :itasca, :medinah, :roselle, :schaumburg, :hanover_park, :bartlett, :national_street, :elgin, :big_timber
=== Union Pacific West => :up_w
stations:
:ogilve, :kedzie, :oak_park, :river_forest, :maywood, :melrose_park, :bellwood, :berkeley, :elmhurst, :villa_park, :lombard, :glen_ellyn, :college_avenue, :wheaton, :winfield, :west_chicago, :geneva, :la_fox, :elburn
=== BNSF Railway => :bnsf
stations:
:union_station, :halsted, :western_avenue, :cicero, :lavergne, :berwyn, :harlem_ave, :riverside, :hollywood, :brookfield, :congress_park, :lagrange_road, :lagrange_stone_avenue, :western_springs, :highlands, :hinsdale, :west_hinsdale, :clarendon_hills, :westmont, :fairview_avenue, :downers_grove_main_street, :belmont, :lisle, :naperville, :route_59, :aurora
=== Heritage Corrider => :hc
stations:
:union_station, :summit, :willow_springs, :lemont, :lockport, :joliet
=== Rock Island District => :ri
stations:
:chicago_lasalle_station, :gresham, :longwood, :washington_heights, :brainerd, :beverly_hills_91_street, :beverly_hills_95_street, :beverly_hills_99_street, :beverly_hills_103_street, :beverly_hills_107_street, :morgan_park_111_street, :morgan_park_115_street, :street_119, :street_123, :prairie_street, :blue_island, :robbins, :midlothian, :oak_forest, :tinley_park, :tinley_park_80_avenue, :hickory_creek, :mokena, :new_lenox, :joliet
=== Metra Electric District => :me
stations:
:milennium_station, :van_buren_street, :museum_campus, :street_18, :mccormick_place, :street_27, :street_47, :street_51_53, :street_55_56_57, :street_59, :street_63, :street_75, :street_79, :street_83, :street_87, :street_91, :street_95, :street_103, :street_107, :street_111, :street_115, :riverdale, :ivanhoe, :street_147, :harvey, :hazel_crest, :calumet, :homewood, :flossmoor, :olympia_fields, :street_211, :matteson, :richton_park, :university_park, :stony_island, :bryn_mawr, :south_shore, :windsor_park, :street_79, :street_83, :street_87, :street_93, :state_street, :stewart_ridge, :west_pullman, :racine, :ashland, :burr_oak, :blue_island
FAQs
Unknown package
We found that metra_schedule demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Product
Socket now supports pylock.toml, enabling secure, reproducible Python builds with advanced scanning and full alignment with PEP 751's new standard.
Security News
Research
Socket uncovered two npm packages that register hidden HTTP endpoints to delete all files on command.
Research
Security News
Malicious Ruby gems typosquat Fastlane plugins to steal Telegram bot tokens, messages, and files, exploiting demand after Vietnam’s Telegram ban.