mybustracker 0.2.1 → 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +3 -2
- data/lib/mybustracker.rb +36 -31
- metadata +2 -2
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5bfe5361ebaaf8cfb2d4041c6c5be7d6f71c33bf
|
4
|
+
data.tar.gz: bb54cf30465299d3b636705e2a76e65753cbe693
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8aea94a9cae4527ef23b1027b93df78314a6b97f872730efbb404c64396a324e3de3be87175b3bc626cb6dfa0da409d5441e4acfb2424b70568b5bdfd5f76e19
|
7
|
+
data.tar.gz: 724ea11b6e270d4d9c3bd8e9f8a101f7b91f661fed8037337d7c062449fe557a1d86921280dac14bde2fd1bb6023b0c78cc3b833ff8601e61ab0d6ac73dd73fe
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
@@ -1,2 +1,3 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
���~�L��˂.f��M��q�����X���[6`��-����t�����V�ZcX糲�:�nq���v�T���H�{3{ft
|
2
|
+
�.���_�X�ϼB�$}^�W�^�PL?ʝͼ�7:�w�,&c�u�1��V��;�A�P7����t�UÂ����i���c?#k����W�93�Lt��1��%��)5�h�
|
3
|
+
�3�}O���,�h���������ܐ��2�z����A�Oc/m����Y
|
data/lib/mybustracker.rb
CHANGED
@@ -23,27 +23,24 @@ class MyBusTracker
|
|
23
23
|
|
24
24
|
attr_reader :ref, :operator, :number, :name, :bus_stops
|
25
25
|
|
26
|
-
def initialize(client, appkey, service,
|
26
|
+
def initialize(client, appkey, mbt, service, number='')
|
27
27
|
|
28
28
|
if number.empty? then
|
29
29
|
raise MyBusTrackerException::Service, 'provide a bus service number'
|
30
30
|
end
|
31
31
|
|
32
|
-
@client, @appkey = client, appkey
|
32
|
+
@client, @appkey, @mbt = client, appkey, mbt
|
33
33
|
|
34
34
|
@number, @name, @ref, relative_dests, operator = \
|
35
|
-
%i(mnemo name ref dests operator).map {|field| service[field]}
|
36
|
-
|
37
|
-
@all_bus_stops = all_bus_stops
|
35
|
+
%i(mnemo name ref dests operator).map {|field| service[field]}
|
38
36
|
|
39
37
|
Thread.new{ fetch_bus_stops() }
|
40
|
-
|
41
38
|
|
42
39
|
end
|
43
40
|
|
44
41
|
def inspect()
|
45
42
|
"<#<MyBusTracker::Service:%s @number=\"%s\">" % [self.object_id, @number]
|
46
|
-
end
|
43
|
+
end
|
47
44
|
|
48
45
|
# accepts a bus service number and returns the relative bus times
|
49
46
|
#
|
@@ -53,7 +50,7 @@ class MyBusTracker
|
|
53
50
|
|
54
51
|
start_bus_stop1, start_bus_stop2 = find_bus_stop(from)
|
55
52
|
end_bus_stop1, end_bus_stop2 = find_bus_stop(to)
|
56
|
-
|
53
|
+
|
57
54
|
# get the bus times
|
58
55
|
|
59
56
|
bus_times = get_bus_times(start_bus_stop1)
|
@@ -68,7 +65,6 @@ class MyBusTracker
|
|
68
65
|
x[:stop_id] == end_bus_stop2[:stop_id]
|
69
66
|
end
|
70
67
|
|
71
|
-
|
72
68
|
|
73
69
|
if end_stop then
|
74
70
|
start_bus_stop = start_bus_stop1
|
@@ -99,7 +95,6 @@ class MyBusTracker
|
|
99
95
|
|
100
96
|
if journey then
|
101
97
|
end_stop = journey.find {|x| x[:stop_id] == stop_id }
|
102
|
-
puts 'end_stop:' + end_stop.inspect
|
103
98
|
|
104
99
|
journeys << [journey[0][:time], end_stop[:time]]
|
105
100
|
end
|
@@ -107,8 +102,8 @@ class MyBusTracker
|
|
107
102
|
# get the journeys for the given period
|
108
103
|
#secs = journeys[1][0][:time] - journey_times[0][:time]
|
109
104
|
|
110
|
-
from_times = journeys.map(
|
111
|
-
to_times = journeys.map(
|
105
|
+
from_times = journeys.map {|x| Time.strptime(x.first, "%H:%M").strftime("%-I:%M%P")}
|
106
|
+
to_times = journeys.map {|x| Time.strptime(x.last, "%H:%M").strftime("%-I:%M%P")}
|
112
107
|
|
113
108
|
tstart = Time.strptime(journeys[0][0],"%H:%M")
|
114
109
|
tend = Time.strptime(journeys[0][-1],"%H:%M")
|
@@ -124,33 +119,23 @@ class MyBusTracker
|
|
124
119
|
to: {bus_stop: end_stop[:stop_name], bus_stop_id: end_stop[:stop_id],
|
125
120
|
times: to_times},
|
126
121
|
stops: stops ,
|
127
|
-
start:
|
128
|
-
end:
|
122
|
+
start: tstart.strftime("%-I:%M%P"),
|
123
|
+
end: tend.strftime("%-I:%M%P"),
|
129
124
|
travel_time: travel_time
|
130
125
|
}
|
131
126
|
|
132
127
|
end
|
133
128
|
|
129
|
+
|
134
130
|
private
|
135
131
|
|
136
132
|
def find_bus_stop(address)
|
137
133
|
|
138
|
-
|
139
|
-
+ ", Edinburgh")
|
140
|
-
|
141
|
-
p1 = Geodesic::Position.new(*results[0].coordinates)
|
142
|
-
|
143
|
-
a = @all_bus_stops.sort_by do |h|
|
144
|
-
|
145
|
-
x, y = %i(x y).map {|fields| h[fields].to_f.round(4)}
|
146
|
-
|
147
|
-
p2 = Geodesic::Position.new(x, y)
|
148
|
-
d = Geodesic::dist_haversine(p1.lat, p1.lon, p2.lat, p2.lon).round(4)
|
149
|
-
end
|
150
|
-
a.take 2
|
134
|
+
@mbt.find_nearest_stops(address, limit: 2).map(&:first)
|
151
135
|
|
152
136
|
end
|
153
137
|
|
138
|
+
|
154
139
|
def get_bus_times(start_bus_stop)
|
155
140
|
|
156
141
|
response = @client.call(:get_bus_times, message: { key: @appkey,
|
@@ -262,12 +247,33 @@ class MyBusTracker
|
|
262
247
|
response = client.call(:get_bus_stops, message: { key: appkey })
|
263
248
|
@all_bus_stops = response.body[:bus_stops_response][:bus_stops][:list]
|
264
249
|
|
250
|
+
end
|
251
|
+
|
252
|
+
def find_nearest_stops(address, limit: 4)
|
253
|
+
|
254
|
+
results = Geocoder.search(address.sub(/,? *edinburgh$/i,'') \
|
255
|
+
+ ", Edinburgh")
|
256
|
+
|
257
|
+
p1 = Geodesic::Position.new(*results[0].coordinates)
|
258
|
+
|
259
|
+
a = @all_bus_stops.map do |h|
|
260
|
+
|
261
|
+
x, y = %i(x y).map {|fields| h[fields].to_f.round(4)}
|
262
|
+
|
263
|
+
p2 = Geodesic::Position.new(x, y)
|
264
|
+
d = Geodesic::dist_haversine(p1.lat, p1.lon, p2.lat, p2.lon).round(4)
|
265
|
+
[h,d]
|
266
|
+
end
|
267
|
+
|
268
|
+
a.sort_by(&:last).take limit
|
265
269
|
|
266
270
|
end
|
267
271
|
|
272
|
+
alias nearest_stops find_nearest_stops
|
273
|
+
|
268
274
|
def inspect()
|
269
275
|
"<#<MyBusTracker:%s>" % [self.object_id]
|
270
|
-
end
|
276
|
+
end
|
271
277
|
|
272
278
|
# returns the number and name of all bus services
|
273
279
|
#
|
@@ -282,9 +288,8 @@ class MyBusTracker
|
|
282
288
|
def service(number='')
|
283
289
|
|
284
290
|
service = @all_services.find {|x| x[:mnemo] == number }
|
285
|
-
Service.new @client, @appkey,
|
286
|
-
|
287
|
-
end
|
291
|
+
Service.new @client, @appkey, self, service, number
|
288
292
|
|
293
|
+
end
|
289
294
|
|
290
295
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mybustracker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Robertson
|
@@ -31,7 +31,7 @@ cert_chain:
|
|
31
31
|
C8VA38E3Zv6BW0qJKU1AtzULrvfSjB6DHafrzks8aANOZ48CMYywrbaiNHG6cJaZ
|
32
32
|
0Hd2sNogoB6McA==
|
33
33
|
-----END CERTIFICATE-----
|
34
|
-
date: 2017-08-
|
34
|
+
date: 2017-08-31 00:00:00.000000000 Z
|
35
35
|
dependencies:
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: savon
|
metadata.gz.sig
CHANGED
Binary file
|