7
7
8
8
from pybikes import BikeShareSystem , BikeShareStation , exceptions
9
9
from pybikes .utils import PyBikesScraper , filter_bounds
10
- from pybikes .compat import urljoin
10
+ from pybikes .compat import urljoin , urlparse , parse_qs
11
11
12
12
try :
13
13
# Python 2
@@ -33,6 +33,7 @@ def __init__(
33
33
ignore_errors = False ,
34
34
retry = None ,
35
35
bbox = None ,
36
+ append_feed_args_to_req = False ,
36
37
):
37
38
# Add feed_url to meta in order to be exposed to the API
38
39
meta ['gbfs_href' ] = feed_url
@@ -43,6 +44,12 @@ def __init__(
43
44
self .retry = retry
44
45
self .bbox = bbox
45
46
47
+ if append_feed_args_to_req :
48
+ purl = urlparse (feed_url )
49
+ self .req_args = parse_qs (purl .query )
50
+ else :
51
+ self .req_args = {}
52
+
46
53
# Allow hardcoding feed urls on initialization
47
54
self .feeds = {}
48
55
if station_information :
@@ -108,7 +115,7 @@ def get_feeds(self, url, scraper, force_https):
108
115
if self .feeds :
109
116
return self .feeds
110
117
111
- feed_data = scraper .request (url , raw = True )
118
+ feed_data = scraper .request (url , params = self . req_args , raw = True )
112
119
113
120
# do not hide Unauthorized or Too many requests status codes
114
121
if scraper .last_request .status_code in [401 , 429 ]:
@@ -151,10 +158,10 @@ def update(self, scraper=None):
151
158
152
159
# Station Information and Station Status data retrieval
153
160
station_information = json .loads (
154
- scraper .request (feeds ['station_information' ])
161
+ scraper .request (feeds ['station_information' ], params = self . req_args )
155
162
)['data' ]['stations' ]
156
163
station_status = json .loads (
157
- scraper .request (feeds ['station_status' ])
164
+ scraper .request (feeds ['station_status' ], params = self . req_args )
158
165
)['data' ]['stations' ]
159
166
160
167
if 'vehicle_types' in feeds :
@@ -163,7 +170,7 @@ def update(self, scraper=None):
163
170
def noop (s , v , i ):
164
171
warn ("Unhandled vehicle type %s with count %d" % (i , v ['count' ]))
165
172
166
- vehicle_info = json .loads (scraper .request (feeds ['vehicle_types' ]))
173
+ vehicle_info = json .loads (scraper .request (feeds ['vehicle_types' ], params = self . req_args ))
167
174
# map vehicle id to vehicle info AND extra info resolver
168
175
# for direct access
169
176
vehicles = {
0 commit comments