annotate service/starArduino/barcodePlayer.py @ 1305:965397a2648a

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