Mercurial > code > home > repos > homeauto
annotate service/starArduino/barcodePlayer.py @ 28:97d7c0bb9408
barcode maker tool
Ignore-this: e786d32c8192377f0b967089fcfc536
author | drewp@bigasterisk.com |
---|---|
date | Tue, 17 Apr 2012 21:52:11 -0700 |
parents | bd3604359b98 |
children | ca380454d176 |
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 | 8 import cyclone.web, cyclone.httpclient, sys, json, urllib |
23
4bf2be19c6c4
barcode support on star. triggers mpd song
drewp@bigasterisk.com
parents:
diff
changeset
|
9 from twisted.python import log |
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 |
26 | 14 from pymongo import Connection |
15 mpdPaths = Connection("bang", 27017)['barcodePlayer']['mpdPaths'] | |
23
4bf2be19c6c4
barcode support on star. triggers mpd song
drewp@bigasterisk.com
parents:
diff
changeset
|
16 |
4bf2be19c6c4
barcode support on star. triggers mpd song
drewp@bigasterisk.com
parents:
diff
changeset
|
17 class Index(PrettyErrorHandler, cyclone.web.RequestHandler): |
4bf2be19c6c4
barcode support on star. triggers mpd song
drewp@bigasterisk.com
parents:
diff
changeset
|
18 def get(self): |
26 | 19 self.write("barcode player. POST to /barcodeScan") |
23
4bf2be19c6c4
barcode support on star. triggers mpd song
drewp@bigasterisk.com
parents:
diff
changeset
|
20 |
4bf2be19c6c4
barcode support on star. triggers mpd song
drewp@bigasterisk.com
parents:
diff
changeset
|
21 class BarcodeScan(PrettyErrorHandler, cyclone.web.RequestHandler): |
4bf2be19c6c4
barcode support on star. triggers mpd song
drewp@bigasterisk.com
parents:
diff
changeset
|
22 @inlineCallbacks |
4bf2be19c6c4
barcode support on star. triggers mpd song
drewp@bigasterisk.com
parents:
diff
changeset
|
23 def post(self): |
26 | 24 code = json.loads(self.request.body) |
23
4bf2be19c6c4
barcode support on star. triggers mpd song
drewp@bigasterisk.com
parents:
diff
changeset
|
25 |
26 | 26 if not code['code'].startswith("music "): |
27 raise ValueError("this service only knows music barcodes, not %r" % | |
28 code) | |
23
4bf2be19c6c4
barcode support on star. triggers mpd song
drewp@bigasterisk.com
parents:
diff
changeset
|
29 |
26 | 30 rows = list(mpdPaths.find({'_id' : int(code['code'].split()[1])})) |
31 if not rows: | |
32 raise ValueError("code %r unknown" % code) | |
33 | |
34 song = rows[0]['mpdPath'] | |
23
4bf2be19c6c4
barcode support on star. triggers mpd song
drewp@bigasterisk.com
parents:
diff
changeset
|
35 |
26 | 36 post = "http://star:9009/addAndPlay/%s" % urllib.quote(song, safe='') |
37 result = (yield cyclone.httpclient.fetch( | |
38 method="POST", url=post)).body | |
39 print result | |
40 self.write(result) | |
23
4bf2be19c6c4
barcode support on star. triggers mpd song
drewp@bigasterisk.com
parents:
diff
changeset
|
41 |
4bf2be19c6c4
barcode support on star. triggers mpd song
drewp@bigasterisk.com
parents:
diff
changeset
|
42 |
4bf2be19c6c4
barcode support on star. triggers mpd song
drewp@bigasterisk.com
parents:
diff
changeset
|
43 if __name__ == '__main__': |
4bf2be19c6c4
barcode support on star. triggers mpd song
drewp@bigasterisk.com
parents:
diff
changeset
|
44 app = cyclone.web.Application([ |
4bf2be19c6c4
barcode support on star. triggers mpd song
drewp@bigasterisk.com
parents:
diff
changeset
|
45 (r'/', Index), |
4bf2be19c6c4
barcode support on star. triggers mpd song
drewp@bigasterisk.com
parents:
diff
changeset
|
46 (r'/barcodeScan', BarcodeScan), |
4bf2be19c6c4
barcode support on star. triggers mpd song
drewp@bigasterisk.com
parents:
diff
changeset
|
47 ], ) |
4bf2be19c6c4
barcode support on star. triggers mpd song
drewp@bigasterisk.com
parents:
diff
changeset
|
48 log.startLogging(sys.stdout) |
4bf2be19c6c4
barcode support on star. triggers mpd song
drewp@bigasterisk.com
parents:
diff
changeset
|
49 reactor.listenTCP(9011, app) |
4bf2be19c6c4
barcode support on star. triggers mpd song
drewp@bigasterisk.com
parents:
diff
changeset
|
50 reactor.run() |