while True: sys.stderr.write("Connecting to %s...\n" % (KV6_ZMQ)) receiver = context.socket(zmq.SUB) receiver.connect(KV6_ZMQ) receiver.setsockopt(zmq.SUBSCRIBE, '') poll = zmq.Poller() poll.register(receiver, zmq.POLLIN) while True: sockets = dict(poll.poll(60000)) if receiver in sockets and sockets[receiver] == zmq.POLLIN: kv6 = receiver.recv_json() feedmessage = FeedMessage() feedmessage.header.gtfs_realtime_version = "1.0" feedmessage.header.incrementality = gtfs_realtime_pb2.FeedHeader.DIFFERENTIAL feedmessage.header.timestamp = int(time.mktime(iso8601.parse_date(kv6['timestamp']).timetuple())) for posinfo in kv6: if posinfo['messagetype'] in ['DELAY', 'INIT', 'END']: continue feedentity = feedmessage.entity.add() feedentity.id = str(sequence) getVehiclePosition(feedentity, posinfo) sequence += 1; else: break
from gtfs_realtime_pb2 import FeedEntity import utils from google.protobuf import text_format print 'getTripId', utils.getTripId('CXX', 'M300', '340', '2013-06-03') print 'getRouteId', utils.getStopId('ARR', '49005091') print 'getStopSequenceTripId', utils.getStopSequenceTripId('CXX', 'M300', '340', '2013-06-03', '57430800', '0') posinfo = {'operatingday': '2013-06-03', 'dataownercode': 'CXX', 'lineplanningnumber': 'M300', 'journeynumber': '340', 'messagetype': 'ONSTOP', 'rd-x': 150000, 'rd-y': 300000, 'userstopcode': '57430800', 'passagesequencenumber': '0', 'timestamp': '2013-06-03T02:00:00'} feedentity = FeedEntity() utils.getVehiclePosition(feedentity, posinfo) print 'getVehiclePosition', text_format.MessageToString(feedentity) message = {'operatingday': '2013-06-03', 'dataownercode': 'CXX', 'lineplanningnumber': 'M300', 'userstopcodes': ['57430800'], 'messagecontent': 'Hello World', 'messagestarttime': '2012-01-01T00:00:00', 'messagedurationtype': 'REMOVE'} feedentity = FeedEntity() utils.getAlertKV15(feedentity, message) print 'getAlertKV15', text_format.MessageToString(feedentity) operation = {'messagetype': 'CANCEL'} journey = {'operatingday': '2013-06-03', 'dataownercode': 'CXX', 'lineplanningnumber': 'M300', 'journeynumber': '340'} feedentity = FeedEntity() utils.getAlertKV17(feedentity, operation, journey) print 'getAlertKV17', text_format.MessageToString(feedentity)