annotate service/starArduino/barcodePlayer.py @ 462:7ec5945752b7

some old Measurement and Locator edits Ignore-this: 188ecdf63f49b7a58f99a5961c6c23a6
author drewp@bigasterisk.com
date Sat, 20 Apr 2019 23:35:46 -0700
parents ca380454d176
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
23
4bf2be19c6c4 barcode support on star. triggers mpd song
drewp@bigasterisk.com
parents:
diff changeset
1 #!bin/python
4bf2be19c6c4 barcode support on star. triggers mpd song
drewp@bigasterisk.com
parents:
diff changeset
2 """
4bf2be19c6c4 barcode support on star. triggers mpd song
drewp@bigasterisk.com
parents:
diff changeset
3 receives POSTs about barcodes that are scanned, plays songs on mpd
4bf2be19c6c4 barcode support on star. triggers mpd song
drewp@bigasterisk.com
parents:
diff changeset
4 """
4bf2be19c6c4 barcode support on star. triggers mpd song
drewp@bigasterisk.com
parents:
diff changeset
5
4bf2be19c6c4 barcode support on star. triggers mpd song
drewp@bigasterisk.com
parents:
diff changeset
6 from __future__ import division
4bf2be19c6c4 barcode support on star. triggers mpd song
drewp@bigasterisk.com
parents:
diff changeset
7
26
bd3604359b98 barcode player send commands to pympd
drewp@bigasterisk.com
parents: 23
diff changeset
8 import cyclone.web, cyclone.httpclient, sys, json, urllib
200
ca380454d176 old updates to barcode player
drewp@bigasterisk.com
parents: 26
diff changeset
9 from twisted.python import log as twlog
23
4bf2be19c6c4 barcode support on star. triggers mpd song
drewp@bigasterisk.com
parents:
diff changeset
10 from twisted.internet import reactor
4bf2be19c6c4 barcode support on star. triggers mpd song
drewp@bigasterisk.com
parents:
diff changeset
11 from twisted.internet.defer import inlineCallbacks
4bf2be19c6c4 barcode support on star. triggers mpd song
drewp@bigasterisk.com
parents:
diff changeset
12 sys.path.append("/my/proj/homeauto/lib")
4bf2be19c6c4 barcode support on star. triggers mpd song
drewp@bigasterisk.com
parents:
diff changeset
13 from cycloneerr import PrettyErrorHandler
200
ca380454d176 old updates to barcode player
drewp@bigasterisk.com
parents: 26
diff changeset
14 from logsetup import log
ca380454d176 old updates to barcode player
drewp@bigasterisk.com
parents: 26
diff changeset
15
26
bd3604359b98 barcode player send commands to pympd
drewp@bigasterisk.com
parents: 23
diff changeset
16 from pymongo import Connection
bd3604359b98 barcode player send commands to pympd
drewp@bigasterisk.com
parents: 23
diff changeset
17 mpdPaths = Connection("bang", 27017)['barcodePlayer']['mpdPaths']
23
4bf2be19c6c4 barcode support on star. triggers mpd song
drewp@bigasterisk.com
parents:
diff changeset
18
4bf2be19c6c4 barcode support on star. triggers mpd song
drewp@bigasterisk.com
parents:
diff changeset
19 class Index(PrettyErrorHandler, cyclone.web.RequestHandler):
4bf2be19c6c4 barcode support on star. triggers mpd song
drewp@bigasterisk.com
parents:
diff changeset
20 def get(self):
26
bd3604359b98 barcode player send commands to pympd
drewp@bigasterisk.com
parents: 23
diff changeset
21 self.write("barcode player. POST to /barcodeScan")
23
4bf2be19c6c4 barcode support on star. triggers mpd song
drewp@bigasterisk.com
parents:
diff changeset
22
4bf2be19c6c4 barcode support on star. triggers mpd song
drewp@bigasterisk.com
parents:
diff changeset
23 class BarcodeScan(PrettyErrorHandler, cyclone.web.RequestHandler):
4bf2be19c6c4 barcode support on star. triggers mpd song
drewp@bigasterisk.com
parents:
diff changeset
24 @inlineCallbacks
4bf2be19c6c4 barcode support on star. triggers mpd song
drewp@bigasterisk.com
parents:
diff changeset
25 def post(self):
26
bd3604359b98 barcode player send commands to pympd
drewp@bigasterisk.com
parents: 23
diff changeset
26 code = json.loads(self.request.body)
23
4bf2be19c6c4 barcode support on star. triggers mpd song
drewp@bigasterisk.com
parents:
diff changeset
27
26
bd3604359b98 barcode player send commands to pympd
drewp@bigasterisk.com
parents: 23
diff changeset
28 if not code['code'].startswith("music "):
bd3604359b98 barcode player send commands to pympd
drewp@bigasterisk.com
parents: 23
diff changeset
29 raise ValueError("this service only knows music barcodes, not %r" %
bd3604359b98 barcode player send commands to pympd
drewp@bigasterisk.com
parents: 23
diff changeset
30 code)
23
4bf2be19c6c4 barcode support on star. triggers mpd song
drewp@bigasterisk.com
parents:
diff changeset
31
26
bd3604359b98 barcode player send commands to pympd
drewp@bigasterisk.com
parents: 23
diff changeset
32 rows = list(mpdPaths.find({'_id' : int(code['code'].split()[1])}))
bd3604359b98 barcode player send commands to pympd
drewp@bigasterisk.com
parents: 23
diff changeset
33 if not rows:
bd3604359b98 barcode player send commands to pympd
drewp@bigasterisk.com
parents: 23
diff changeset
34 raise ValueError("code %r unknown" % code)
bd3604359b98 barcode player send commands to pympd
drewp@bigasterisk.com
parents: 23
diff changeset
35
bd3604359b98 barcode player send commands to pympd
drewp@bigasterisk.com
parents: 23
diff changeset
36 song = rows[0]['mpdPath']
23
4bf2be19c6c4 barcode support on star. triggers mpd song
drewp@bigasterisk.com
parents:
diff changeset
37
26
bd3604359b98 barcode player send commands to pympd
drewp@bigasterisk.com
parents: 23
diff changeset
38 post = "http://star:9009/addAndPlay/%s" % urllib.quote(song, safe='')
bd3604359b98 barcode player send commands to pympd
drewp@bigasterisk.com
parents: 23
diff changeset
39 result = (yield cyclone.httpclient.fetch(
bd3604359b98 barcode player send commands to pympd
drewp@bigasterisk.com
parents: 23
diff changeset
40 method="POST", url=post)).body
200
ca380454d176 old updates to barcode player
drewp@bigasterisk.com
parents: 26
diff changeset
41 log.info("post result: %r", result)
26
bd3604359b98 barcode player send commands to pympd
drewp@bigasterisk.com
parents: 23
diff changeset
42 self.write(result)
23
4bf2be19c6c4 barcode support on star. triggers mpd song
drewp@bigasterisk.com
parents:
diff changeset
43
4bf2be19c6c4 barcode support on star. triggers mpd song
drewp@bigasterisk.com
parents:
diff changeset
44
4bf2be19c6c4 barcode support on star. triggers mpd song
drewp@bigasterisk.com
parents:
diff changeset
45 if __name__ == '__main__':
4bf2be19c6c4 barcode support on star. triggers mpd song
drewp@bigasterisk.com
parents:
diff changeset
46 app = cyclone.web.Application([
4bf2be19c6c4 barcode support on star. triggers mpd song
drewp@bigasterisk.com
parents:
diff changeset
47 (r'/', Index),
4bf2be19c6c4 barcode support on star. triggers mpd song
drewp@bigasterisk.com
parents:
diff changeset
48 (r'/barcodeScan', BarcodeScan),
4bf2be19c6c4 barcode support on star. triggers mpd song
drewp@bigasterisk.com
parents:
diff changeset
49 ], )
200
ca380454d176 old updates to barcode player
drewp@bigasterisk.com
parents: 26
diff changeset
50 twlog.startLogging(sys.stdout)
23
4bf2be19c6c4 barcode support on star. triggers mpd song
drewp@bigasterisk.com
parents:
diff changeset
51 reactor.listenTCP(9011, app)
4bf2be19c6c4 barcode support on star. triggers mpd song
drewp@bigasterisk.com
parents:
diff changeset
52 reactor.run()