You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

319 lines
9.6 KiB

# -*- coding: utf-8 -*-
#!/usr/bin/env python
from json import loads
HEADER = '''
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Traffy 73 tracker</title>
<meta name="description" content="Traffy" />
<meta name="keywords" content="traffy bus tracking 73" />
<link rel="stylesheet" href="http://bus.traffy.xyz/build/css/style.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">
</head>
<body>
<div class="container">
<header class="clearfix">
<ul class="pull-right inline-list">
<li class="width-20"><img class="thumbnail" alt="BMTA" src="http://bus.traffy.xyz/build/css/images/bmta_logo.png" /></li>
<li class="width-20"><img class="thumbnail" alt="AIS" src="http://bus.traffy.xyz/build/css/images/ais_logo.png" /></li>
<li class="width-20"><img class="thumbnail" alt="Traffy" src="http://bus.traffy.xyz/build/css/images/traffy_logo.png" /></li>
<li class="width-20"><img class="thumbnail" alt="NECTEC" src="http://bus.traffy.xyz/build/css/images/nectec_logo.png" /></li>
<li class="width-20"><img class="thumbnail" alt="NSTDA" src="http://bus.traffy.xyz/build/css/images/nstda_logo.png" /></li>
</ul>
<span>สาย</span>
<h1>73 <small>BETA</small> </h1>
</header>
<div class="content">
<ul class="inline-list">
<li>จำนวนรถ: %(bus_total)s </li>
<li>%(link)s</li>
<li><a href="http://goo.gl/forms/99FEHosxQl" target="_blank" class="outside_link">[ แจงเหต/ของหายในรถเมล ]</a></li>
<li><a href="http://goo.gl/forms/e7GYDPC0CK" target="_blank" class="outside_link">
[ เสนอแนะ/ชม ]</a></li>
<li><a href="http://kumo.traffy.in.th/busmap/" target="_blank" class="outside_link">
[ เปนแผนท ]</a></li>
<li><a href="http://kumo.traffy.in.th/nstda/" class="outside_link">
&lt;&lt; อมลรถ สวทช. &gt;&gt;</a></li>
</ul>
</div>
<div class="main">
<ul class="cbp_tmtimeline">
'''
FOOTER = '''
</ul>
</div>
</div>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-72505920-1', 'auto');
ga('send', 'pageview');
</script>
</body>
</html>
'''
STOP_TMPL = '''
<li class="each_stop">
<div class="block">
<time class="cbp_tmtime">
<span></span>
<span></span></time>
<div class="cbp_tmicon">%(at_stop)s</div>
%(running)s
<div class="cbp_tmlabel">
<h4>%(name)s</h4>
</div>
</div>
</li>
'''
GO = '''<div class="cbp_tmicon ontheway d80"><i class="fa fa-bus"></i></div>
'''
inbound_bus = []
outbound_bus = []
in_stop = []
out_stop = []
with open('bus_loc.json', 'r') as f:
data = loads(f.read())
inbound_bus = [i for i in data if i['status_id'] == '11']
outbound_bus = [i for i in data if i['status_id'] == '12']
print 'bus in #%s -- out #%s' % (len(inbound_bus), len(outbound_bus))
with open('inbound.json', 'r') as f:
data = loads(f.read())['results']
in_stop = data
with open('outbound.json', 'r') as f:
data = loads(f.read())['results']
out_stop = data
'''
OUTBOUND -------------------------------------------------------
'''
stops = {}
for i in out_stop:
stops[i['stop_id']] = {
'at_stop': '', 'running': '',
}
for i in in_stop:
stops[i['stop_id']] = {
'at_stop': '', 'running': '',
}
with open('index.html', 'w') as f:
stops = {}
for i in out_stop:
stops[i['stop_id']] = {
'at_stop': '', 'running': '',
}
print 'outbound ----------'
print 'stop: #', len(stops)
ind = 0
for j in outbound_bus:
btw_stop_ref = float(j['next_stop']['linear_ref']) - float(j['prev_stop']['linear_ref'])
rel_ref = (float(j['linear_ref']) - float(j['prev_stop']['linear_ref'])) * 100 / btw_stop_ref
prev_stop_id = j['prev_stop']['stop_id']
next_stop_id = j['next_stop']['stop_id']
# print ' btw stop %s - %s -- ref = %s' % (prev_stop_id, next_stop_id, rel_ref)
if rel_ref < 10:
stops[prev_stop_id]['at_stop'] = True
elif rel_ref > 90:
stops[next_stop_id]['at_stop'] = True
else:
stops[prev_stop_id]['running'] = True
content_ = []
for stop in out_stop:
# has_bus_at_stop = [si for si in outbound_bus if si['prev_stop'] == i['id']]
stop_id = stop['stop_id']
at_stop_text = ''
if stops[stop_id]['at_stop']:
# print ' stop %s has %s bus at stop' % (stop_id, stops[stop_id]['at_stop'])
at_stop_text = '<i class="fa fa-bus"></i>'
running_text = ''
if stops[stop_id]['running']:
# print ' stop %s has %s bus leaving' % (stop_id, stops[stop_id]['running'])
running_text = GO
stop_data = {
'name': stop['name'],
'at_stop': at_stop_text,
'running': running_text,
}
s = STOP_TMPL % stop_data
# if at_stop_text or running_text:
# print s.encode('utf-8')
content_.append(s)
ind += 1
f.write(HEADER % {
'bus_total': len(outbound_bus),
'link': '<a class="outside_link" href="/transit/in.html">ดขาเขา</a>'
})
f.write( (''.join(content_)).encode('utf-8') )
f.write(FOOTER)
'''
INBOUND -------------------------------------------------------
'''
with open('in.html', 'w') as f:
stops = {}
for i in in_stop:
stops[i['stop_id']] = {
'at_stop': '', 'running': '',
}
for i in out_stop:
stops[i['stop_id']] = {
'at_stop': '', 'running': '',
}
print 'in ----------'
print 'stop: #', len(stops)
ind = 0
for j in inbound_bus:
btw_stop_ref = float(j['next_stop']['linear_ref']) - float(j['prev_stop']['linear_ref'])
rel_ref = (float(j['linear_ref']) - float(j['prev_stop']['linear_ref'])) * 100 / btw_stop_ref
prev_stop_id = j['prev_stop']['stop_id']
next_stop_id = j['next_stop']['stop_id']
# print ' btw stop %s - %s -- ref = %s' % (prev_stop_id, next_stop_id, rel_ref)
if rel_ref < 10:
stops[prev_stop_id]['at_stop'] = True
elif rel_ref > 90:
stops[next_stop_id]['at_stop'] = True
else:
stops[prev_stop_id]['running'] = True
content_ = []
for stop in in_stop:
# has_bus_at_stop = [si for si in inbound_bus if si['prev_stop'] == i['id']]
stop_id = stop['stop_id']
at_stop_text = ''
if stops[stop_id]['at_stop']:
# print ' stop %s has %s bus at stop' % (stop_id, stops[stop_id]['at_stop'])
at_stop_text = '<i class="fa fa-bus"></i>'
running_text = ''
if stops[stop_id]['running']:
# print ' stop %s has %s bus leaving' % (stop_id, stops[stop_id]['running'])
running_text = GO
stop_data = {
'name': stop['name'],
'at_stop': at_stop_text,
'running': running_text,
}
s = STOP_TMPL % stop_data
# if at_stop_text or running_text:
# print s.encode('utf-8')
content_.append(s)
ind += 1
f.write(HEADER % {
'bus_total': len(inbound_bus),
'link': '<a class="outside_link" href="/transit/">ดขาออก</a>'
})
f.write( (''.join(content_)).encode('utf-8') )
f.write(FOOTER)
# with open('in.html', 'w') as f:
# stops = {}
# for i in in_stop:
# stops[i['stop_id']] = {
# 'at_stop': '', 'running': '',
# }
# ind = 0
# CONTENT = []
# for j in inbound_bus:
# btw_stop_ref = float(j['next_stop']['linear_ref']) - float(j['prev_stop']['linear_ref'])
# rel_ref = (float(j['linear_ref']) - float(j['prev_stop']['linear_ref'])) * 100 / btw_stop_ref
# prev_stop_id = j['prev_stop']['stop_id']
# next_stop_id = j['next_stop']['stop_id']
# if rel_ref < 10:
# stops[prev_stop_id]['at_stop'] = True
# elif rel_ref > 90:
# stops[next_stop_id]['at_stop'] = True
# else:
# stops[prev_stop_id]['running'] = True
# for stop in in_stop:
# # has_bus_at_stop = [si for si in inbound_bus if si['prev_stop'] == i['id']]
# # print
# at_stop_text = ''
# if stops[stop['stop_id']]['at_stop']:
# at_stop_text = '<i class="fa fa-bus"></i>'
# running_text = ''
# if stops[stop['stop_id']]['running']:
# running_text = GO
# stop = {
# 'name': stop['name'],
# 'at_stop': at_stop_text,
# 'running': running_text,
# }
# s = STOP_TMPL % stop
# CONTENT.append(s)
# ind += 1
# f.write(HEADER % {
# 'bus_total': len(inbound_bus),
# 'link': '<a class="outside_link" href="/transit/">ดขาออก</a>'
# })
# f.write( (''.join(CONTENT)).encode('utf-8') )
# f.write(FOOTER)