Skip to content

Commit 7b36371

Browse files
authored
Merge pull request #768 from eskerda/fix-baksi
update baksi
2 parents f571396 + b5b0084 commit 7b36371

File tree

2 files changed

+36
-63
lines changed

2 files changed

+36
-63
lines changed

Diff for: pybikes/baksi.py

+22-40
Original file line numberDiff line numberDiff line change
@@ -3,65 +3,47 @@
33
# Distributed under the AGPL license, see LICENSE.txt
44

55
import re
6+
import json
67

7-
from .base import BikeShareSystem, BikeShareStation
8-
from . import utils
8+
from pybikes import BikeShareSystem, BikeShareStation, PyBikesScraper
9+
from pybikes.utils import Bounded
910

10-
__all__ = ['Baksi', 'BaksiStation']
1111

12-
ID_NAME_RGX = "([0-9]+)\-([\w\s.()-]+)\'"
13-
STATUS_RGX = "Durum\ [ ]+\ (\w+)"
14-
DOCKS_RGX = "Park[ ]+([0-9]+)"
15-
BIKES_RGX = "Bisiklet[ ]+([0-9]+)"
16-
LAT_LNG_RGX = "([\s0-9.]+)\',\ \'([\s0-9.]+)"
17-
18-
class Baksi(BikeShareSystem):
12+
class Baksi(Bounded, BikeShareSystem):
1913

2014
meta = {
2115
'system': 'Baksi',
2216
'company': ['Baksi Bike Sharing System']
2317
}
2418

25-
def __init__(self, tag, meta, feed_url):
26-
super(Baksi, self).__init__(tag, meta)
19+
def __init__(self, tag, meta, feed_url, bbox=None):
20+
super(Baksi, self).__init__(tag, meta, bounds=bbox)
2721
self.feed_url = feed_url
2822

29-
def update(self, scraper = None):
30-
if scraper is None:
31-
scraper = utils.PyBikesScraper()
32-
33-
html_data=scraper.request(self.feed_url, raw = True).decode('iso-8859-9')
34-
35-
# Fetch Data
36-
id_name = re.findall(ID_NAME_RGX, html_data, re.UNICODE)
37-
status = re.findall(STATUS_RGX, html_data, re.UNICODE)
38-
docks = re.findall(DOCKS_RGX, html_data, re.UNICODE)
39-
bikes = re.findall(BIKES_RGX, html_data, re.UNICODE)
40-
geopoints = re.findall(LAT_LNG_RGX, html_data, re.UNICODE)
41-
42-
# Refine Output
43-
station_id, name = zip(*id_name)
44-
status = ["Active" if out == "Aktif" else "Inactive" for out in status]
45-
docks = [int(i) for i in docks]
46-
bikes = [int(i) for i in bikes]
47-
latitude, longitude = zip(*geopoints)
23+
def update(self, scraper=None):
24+
scraper = scraper or PyBikesScraper()
4825

49-
fields = zip(station_id, name, status, docks, bikes, latitude,
50-
longitude)
26+
html_data = scraper.request(self.feed_url)
27+
ex_data = re.search(r'var all = (\[.*\]);', html_data).group(1)
28+
data = json.loads(ex_data)
5129

52-
self.stations = list(map(BaksiStation, fields))
30+
self.stations = list(map(BaksiStation, data))
5331

5432

5533
class BaksiStation(BikeShareStation):
5634
def __init__(self, data):
5735
super(BaksiStation, self).__init__()
58-
self.name = data[1]
59-
self.bikes = data[3]
60-
self.free = data[4]
36+
37+
uid, name = data[0].split('-', 1)
38+
39+
self.name = name
6140
self.latitude = float(data[5])
6241
self.longitude = float(data[6])
42+
43+
self.bikes = int(re.findall(r'\d+', data[2])[0])
44+
self.free = int(re.findall(r'\d+', data[3])[0])
45+
6346
self.extra = {
64-
'uid': data[0],
65-
'status': data[2],
66-
'slots': int(data[3] + data[4])
47+
'uid': uid,
48+
'online': 'Aktif' in data[1],
6749
}

Diff for: pybikes/data/baksi.json

+14-23
Original file line numberDiff line numberDiff line change
@@ -12,38 +12,29 @@
1212
"feed_url": "http://abone.antbis.com/harita.asp"
1313
},
1414
{
15-
"tag": "baksi-bisim",
15+
"tag": "baksi-cabis",
1616
"meta":{
17-
"latitude": 38.4134047464,
18-
"city": "Izmir",
19-
"name": "Baksi",
20-
"longitude": 27.0325753524,
21-
"country":"TR"
22-
},
23-
"feed_url": "http://abone.bisim.com.tr/harita.asp"
24-
},
25-
{
26-
"tag": "baksi-istanbul",
27-
"meta":{
28-
"latitude": 40.9696887925,
29-
"city": "Istanbul",
30-
"name": "Isbike",
31-
"longitude": 29.0475373717,
17+
"latitude": 40.1531,
18+
"city": "Çanakkale",
19+
"name": "Çabis",
20+
"longitude": 26.4146,
3221
"country": "TR"
3322
},
34-
"feed_url": "https://www.isbike.com.tr/abone/harita.asp"
23+
"feed_url": "https://cabis.canakkale.bel.tr/abone/harita.asp"
3524
},
3625
{
37-
"tag": "baksi-kobis",
26+
"tag": "baksi-nilesplit",
3827
"meta":{
39-
"latitude": 40.7674733342,
40-
"city": "Kocaeli",
41-
"name": "Baksi",
42-
"longitude": 29.9755885985,
28+
"latitude": 40.2127,
29+
"city": "Nilüfer",
30+
"name": "Nilesplit",
31+
"longitude": 28.9627,
4332
"country": "TR"
4433
},
45-
"feed_url": "http://abone.kobis.com.tr/harita.asp"
34+
"bbox": [[40.0050, 28.6523], [40.3951, 29.2069]],
35+
"feed_url": "https://nilespit.com/abone/harita.asp"
4636
}
37+
4738
],
4839
"system":"baksi",
4940
"class":"Baksi"

0 commit comments

Comments
 (0)