From f9376c59ea772ab37b497331ce3962c848c2a851 Mon Sep 17 00:00:00 2001 From: AnthorNet Date: Tue, 12 May 2015 10:53:58 +0200 Subject: [PATCH] Add python 3.4 example --- examples/PHP/Client_Complete.php | 6 + examples/Python 2.7/Client_Complete.bat | 3 + .../{Python => Python 2.7}/Client_Complete.py | 12 +- examples/Python 2.7/Client_Simple.bat | 3 + .../{Python => Python 2.7}/Client_Simple.py | 2 +- examples/Python 3.4/Client_Complete.bat | 3 + examples/Python 3.4/Client_Complete.py | 218 ++++++++++++++++++ examples/Python 3.4/Client_Simple.bat | 3 + examples/Python 3.4/Client_Simple.py | 50 ++++ examples/Python/Client_Complete.bat | 3 - examples/Python/Client_Simple.bat | 3 - 11 files changed, 296 insertions(+), 10 deletions(-) create mode 100644 examples/Python 2.7/Client_Complete.bat rename examples/{Python => Python 2.7}/Client_Complete.py (96%) create mode 100644 examples/Python 2.7/Client_Simple.bat rename examples/{Python => Python 2.7}/Client_Simple.py (97%) create mode 100644 examples/Python 3.4/Client_Complete.bat create mode 100644 examples/Python 3.4/Client_Complete.py create mode 100644 examples/Python 3.4/Client_Simple.bat create mode 100644 examples/Python 3.4/Client_Simple.py delete mode 100644 examples/Python/Client_Complete.bat delete mode 100644 examples/Python/Client_Simple.bat diff --git a/examples/PHP/Client_Complete.php b/examples/PHP/Client_Complete.php index 6237467..957d9e0 100644 --- a/examples/PHP/Client_Complete.php +++ b/examples/PHP/Client_Complete.php @@ -103,6 +103,9 @@ while (true) try { $subscriber->connect($relayEDDN); + echoLog('Connect to ' . $relayEDDN); + echoLog(''); + echoLog(''); while (true) { @@ -111,6 +114,9 @@ while (true) if ($message === false) { $subscriber->disconnect($relayEDDN); + echoLog('Disconnect from ' . $relayEDDN); + echoLog(''); + echoLog(''); break; } diff --git a/examples/Python 2.7/Client_Complete.bat b/examples/Python 2.7/Client_Complete.bat new file mode 100644 index 0000000..8b41cbb --- /dev/null +++ b/examples/Python 2.7/Client_Complete.bat @@ -0,0 +1,3 @@ +"C:\Python27\python.exe" "%~dp0\Client_Complete.py" + +pause \ No newline at end of file diff --git a/examples/Python/Client_Complete.py b/examples/Python 2.7/Client_Complete.py similarity index 96% rename from examples/Python/Client_Complete.py rename to examples/Python 2.7/Client_Complete.py index 734c318..5f6026e 100644 --- a/examples/Python/Client_Complete.py +++ b/examples/Python 2.7/Client_Complete.py @@ -1,5 +1,5 @@ import zlib -import zmq.green as zmq +import zmq import simplejson import sys, os, datetime, time @@ -96,12 +96,18 @@ def main(): while True: try: subscriber.connect(__relayEDDN) + echoLog('Connect to ' + __relayEDDN) + echoLog('') + echoLog('') while True: __message = subscriber.recv() if __message == False: subscriber.disconnect(__relayEDDN) + echoLog('Disconnect from ' + __relayEDDN) + echoLog('') + echoLog('') break __message = zlib.decompress(__message) @@ -112,8 +118,8 @@ def main(): # Handle commodity v1 if __json['$schemaRef'] == 'http://schemas.elite-markets.net/eddn/commodity/1' + ('/test' if (__debugEDDN == True) else ''): echoLogJSON(__message) - echoLog('Receiving commodity-v1 message...'); - echoLog(' - Converting to v2...'); + echoLog('Receiving commodity-v1 message...') + echoLog(' - Converting to v2...') __temp = {} __temp['$schemaRef'] = 'http://schemas.elite-markets.net/eddn/commodity/2' + ('/test' if (__debugEDDN == True) else '') diff --git a/examples/Python 2.7/Client_Simple.bat b/examples/Python 2.7/Client_Simple.bat new file mode 100644 index 0000000..75da3c1 --- /dev/null +++ b/examples/Python 2.7/Client_Simple.bat @@ -0,0 +1,3 @@ +"C:\Python27\python.exe" "%~dp0\Client_Simple.py" + +pause \ No newline at end of file diff --git a/examples/Python/Client_Simple.py b/examples/Python 2.7/Client_Simple.py similarity index 97% rename from examples/Python/Client_Simple.py rename to examples/Python 2.7/Client_Simple.py index ef40d9d..fde638d 100644 --- a/examples/Python/Client_Simple.py +++ b/examples/Python 2.7/Client_Simple.py @@ -1,5 +1,5 @@ import zlib -import zmq.green as zmq +import zmq import simplejson import sys diff --git a/examples/Python 3.4/Client_Complete.bat b/examples/Python 3.4/Client_Complete.bat new file mode 100644 index 0000000..95b4ca6 --- /dev/null +++ b/examples/Python 3.4/Client_Complete.bat @@ -0,0 +1,3 @@ +"C:\Python34\python.exe" "%~dp0\Client_Complete.py" + +pause \ No newline at end of file diff --git a/examples/Python 3.4/Client_Complete.py b/examples/Python 3.4/Client_Complete.py new file mode 100644 index 0000000..e40816a --- /dev/null +++ b/examples/Python 3.4/Client_Complete.py @@ -0,0 +1,218 @@ +import zlib +import zmq +import simplejson +import sys, os, datetime, time + +""" + " Configuration +""" +__relayEDDN = 'tcp://eddn-relay.elite-markets.net:9500' +__timeoutEDDN = 600000 + +# Set False to listen to production stream +__debugEDDN = True; + +# Set to False if you do not want verbose logging +__logVerboseFile = os.path.dirname(__file__) + '/Logs_Verbose_EDDN_%DATE%.htm' +#__logVerboseFile = False + +# Set to False if you do not want JSON logging +__logJSONFile = os.path.dirname(__file__) + '/Logs_JSON_EDDN_%DATE%.log' +#__logJSONFile = False + +# A sample list of authorised softwares +__authorisedSoftwares = [ + "EDCE", + "ED-TD.SPACE", + "EliteOCR", + "Maddavo's Market Share", + "RegulatedNoise", + "RegulatedNoise__DJ" +] + +# Used this to excludes yourself for example has you don't want to handle your own messages ^^ +__excludedSoftwares = [ + 'My Awesome Market Uploader' +] + + + +""" + " Start +""" +def date(__format): + d = datetime.datetime.utcnow() + return d.strftime(__format) + + +__oldTime = False +def echoLog(__str): + global __oldTime, __logVerboseFile + + if __logVerboseFile != False: + __logVerboseFileParsed = __logVerboseFile.replace('%DATE%', str(date('%Y-%m-%d'))) + + if __logVerboseFile != False and not os.path.exists(__logVerboseFileParsed): + f = open(__logVerboseFileParsed, 'w') + f.write('') + f.close() + + if (__oldTime == False) or (__oldTime != date('%H:%M:%S')): + __oldTime = date('%H:%M:%S') + __str = str(__oldTime) + ' | ' + str(__str) + else: + __str = ' ' + ' | ' + str(__str) + + print (__str) + sys.stdout.flush() + + if __logVerboseFile != False: + f = open(__logVerboseFileParsed, 'a') + f.write(__str + '\n') + f.close() + + +def echoLogJSON(__json): + global __logJSONFile + + if __logJSONFile != False: + __logJSONFileParsed = __logJSONFile.replace('%DATE%', str(date('%Y-%m-%d'))) + + f = open(__logJSONFileParsed, 'a') + f.write(str(__json) + '\n') + f.close() + + +def main(): + echoLog('Starting EDDN Subscriber') + echoLog('') + + context = zmq.Context() + subscriber = context.socket(zmq.SUB) + + subscriber.setsockopt(zmq.SUBSCRIBE, b"") + subscriber.setsockopt(zmq.RCVTIMEO, __timeoutEDDN) + + while True: + try: + subscriber.connect(__relayEDDN) + echoLog('Connect to ' + __relayEDDN) + echoLog('') + echoLog('') + + while True: + __message = subscriber.recv() + + if __message == False: + subscriber.disconnect(__relayEDDN) + echoLog('Disconnect from ' + __relayEDDN) + echoLog('') + echoLog('') + break + + __message = zlib.decompress(__message) + __json = simplejson.loads(__message) + __converted = False + + + # Handle commodity v1 + if __json['$schemaRef'] == 'http://schemas.elite-markets.net/eddn/commodity/1' + ('/test' if (__debugEDDN == True) else ''): + echoLogJSON(__message) + echoLog('Receiving commodity-v1 message...') + echoLog(' - Converting to v2...') + + __temp = {} + __temp['$schemaRef'] = 'http://schemas.elite-markets.net/eddn/commodity/2' + ('/test' if (__debugEDDN == True) else '') + __temp['header'] = __json['header'] + + __temp['message'] = {} + __temp['message']['systemName'] = __json['message']['systemName'] + __temp['message']['stationName'] = __json['message']['stationName'] + __temp['message']['timestamp'] = __json['message']['timestamp'] + + __temp['message']['commodities'] = [] + + __commodity = {} + + if 'itemName' in __json['message']: + __commodity['name'] = __json['message']['itemName'] + + if 'buyPrice' in __json['message']: + __commodity['buyPrice'] = __json['message']['buyPrice'] + if 'stationStock' in __json['message']: + __commodity['supply'] = __json['message']['stationStock'] + if 'supplyLevel' in __json['message']: + __commodity['supplyLevel'] = __json['message']['supplyLevel'] + + if 'sellPrice' in __json['message']: + __commodity['sellPrice'] = __json['message']['sellPrice'] + if 'demand' in __json['message']: + __commodity['demand'] = __json['message']['demand'] + if'demandLevel' in __json['message']: + __commodity['demandLevel'] = __json['message']['demandLevel'] + + __temp['message']['commodities'].append(__commodity) + __json = __temp + del __temp, __commodity + + __converted = True + + # Handle commodity v2 + if __json['$schemaRef'] == 'http://schemas.elite-markets.net/eddn/commodity/2' + ('/test' if (__debugEDDN == True) else ''): + if __converted == False: + echoLogJSON(__message) + echoLog('Receiving commodity-v2 message...') + + __authorised = False + __excluded = False + + if __json['header']['softwareName'] in __authorisedSoftwares: + __authorised = True + if __json['header']['softwareName'] in __excludedSoftwares: + __excluded = True + + echoLog(' - Software: ' + __json['header']['softwareName'] + ' / ' + __json['header']['softwareVersion']) + echoLog(' - ' + 'AUTHORISED' if (__authorised == True) else + ('EXCLUDED' if (__excluded == True) else 'UNAUTHORISED') + ) + + if __authorised == True and __excluded == False: + # Do what you want with the data... + # Have fun ! + + # For example + echoLog(' - Timestamp: ' + __json['message']['timestamp']) + echoLog(' - Uploader ID: ' + __json['header']['uploaderID']) + echoLog(' - System Name: ' + __json['message']['systemName']) + echoLog(' - Station Name: ' + __json['message']['stationName']) + + for __commodity in __json['message']['commodities']: + echoLog(' - Name: ' + __commodity['name']) + echoLog(' - Buy Price: ' + str(__commodity['buyPrice'])) + echoLog(' - Supply: ' + str(__commodity['supply']) + + ((' (' + __commodity['supplyLevel'] + ')') if 'supplyLevel' in __commodity else '') + ) + echoLog(' - Sell Price: ' + str(__commodity['sellPrice'])) + echoLog(' - Demand: ' + str(__commodity['demand']) + + ((' (' + __commodity['demandLevel'] + ')') if 'demandLevel' in __commodity else '') + ) + # End example + + del __authorised, __excluded + + echoLog('') + echoLog('') + + del __converted + + + except zmq.ZMQError as e: + echoLog('') + echoLog('ZMQSocketException: ' + str(e)) + echoLog('') + time.sleep(10) + + + +if __name__ == '__main__': + main() diff --git a/examples/Python 3.4/Client_Simple.bat b/examples/Python 3.4/Client_Simple.bat new file mode 100644 index 0000000..afbb6c2 --- /dev/null +++ b/examples/Python 3.4/Client_Simple.bat @@ -0,0 +1,3 @@ +"C:\Python34\python.exe" "%~dp0\Client_Simple.py" + +pause \ No newline at end of file diff --git a/examples/Python 3.4/Client_Simple.py b/examples/Python 3.4/Client_Simple.py new file mode 100644 index 0000000..87b2167 --- /dev/null +++ b/examples/Python 3.4/Client_Simple.py @@ -0,0 +1,50 @@ +import zlib +import zmq +import simplejson +import sys + +""" + " Configuration +""" +__relayEDDN = 'tcp://eddn-relay.elite-markets.net:9500' +__timeoutEDDN = 600000 + + + +""" + " Start +""" +def main(): + context = zmq.Context() + subscriber = context.socket(zmq.SUB) + + subscriber.setsockopt(zmq.SUBSCRIBE, b"") + subscriber.setsockopt(zmq.RCVTIMEO, __timeoutEDDN) + + while True: + try: + subscriber.connect(__relayEDDN) + + while True: + __message = subscriber.recv() + + if __message == False: + subscriber.disconnect(__relayEDDN) + break + + __message = zlib.decompress(__message) + __json = simplejson.loads(__message) + + + print __json + sys.stdout.flush() + + except zmq.ZMQError, e: + print 'ZMQSocketException: ' + str(e) + sys.stdout.flush() + time.sleep(10) + + + +if __name__ == '__main__': + main() diff --git a/examples/Python/Client_Complete.bat b/examples/Python/Client_Complete.bat deleted file mode 100644 index 1801683..0000000 --- a/examples/Python/Client_Complete.bat +++ /dev/null @@ -1,3 +0,0 @@ -"python" %~dp0\Client_Complete.py - -pause \ No newline at end of file diff --git a/examples/Python/Client_Simple.bat b/examples/Python/Client_Simple.bat deleted file mode 100644 index 6991101..0000000 --- a/examples/Python/Client_Simple.bat +++ /dev/null @@ -1,3 +0,0 @@ -"python" %~dp0\Client_Simple.py - -pause \ No newline at end of file