--- a/maxious-canberra-transit-feed/01-extracttimes.rb
+++ b/maxious-canberra-transit-feed/01-extracttimes.rb
@@ -11,10 +11,14 @@
def makeTimetable(table, period, short_name)
- timetable = {"stop_times" => [], "between_stops" => [], "short_name" => short_name}
+ timetable = {"between_stops" => [], "short_name" => short_name}
time_points = table.xpath('tr[1]//th').map do |tp|
if tp.content != "\302\240" && tp.content != "" && tp.content != "
"
- timing_point = tp.content.squeeze(" ").gsub("\r\n Platform"," - Platform").gsub(" - "," - ").gsub("\n","").gsub("\r","").gsub("\\"," / ").strip
+ timing_point = tp.content.squeeze(" ").gsub(" Platform"," (Platform").gsub(" - "," - ").gsub("\n","").gsub("\r","").gsub("\\"," / ").squeeze(" ").strip
+ if (tp.content.match('Platform'))
+ timing_point.concat(")")
+ end;
+ timing_point
end
end
time_points.delete(nil)
@@ -23,8 +27,11 @@
periodtimes = []
table.css('tr').each do |row|
times = row.css('td').map do |cell|
- #TODO convert to GTFS time ie. replace " AM" with a
time = cell.content.squeeze(" ").strip
+ time = time.gsub(/ *A\S?M/,"a").gsub(/ ?P\S?M/,"p").gsub("12:08 AM","1208x").gsub(":","").gsub("1.","1").gsub("2.","2")
+ time = time.gsub("3.","3").gsub("4.","4")
+ time = time.gsub("5.","5").gsub("6.","6").gsub("7.","7").gsub("8.","8").gsub("9.","9").gsub("10.","10")
+ time = time.gsub("11.","11").gsub("12.","12").gsub(/\.+/,"-")
end
if not times.empty?
if not (route = times.shift)
@@ -36,9 +43,10 @@
if periodtimes.size < 1
raise "No times for route " + short_name + " in period " + period
end
- timetable["stop_times"] = { period => periodtimes.to_a }
+ timetable[period] = periodtimes.to_a
# pp timetable
- filename = timetable["short_name"] + "-" + timetable["long_name"].downcase.gsub(" ","-").gsub("/","") + "." + period + ".yml"
+ filename = timetable["short_name"] + "-" + timetable["long_name"]+ "." + period + ".yml"
+ filename = filename.downcase.gsub(" ","-").gsub("/","-").gsub("(","").gsub(")","")
puts "Saving " + filename
File.open("#{File.dirname(__FILE__)}/output/"+filename, "w") do |f|
f.write timetable.to_yaml
@@ -54,33 +62,33 @@
timetables = []
short_name = "";
doc.xpath('//title').each do |title|
- short_name = title.content.gsub("Route_","").gsub("Route ","").squeeze(" ").strip
+ short_name = title.content.gsub("Route_","").gsub("Route ","").gsub(", ","/").squeeze(" ").strip
end
if short_name == ""
raise "Route number(s) not found in