annotate service/starArduino/makeBarcodes.py @ 438:d453cdd8a86f

start dev mode nginx config. not working yet Ignore-this: d18b11cd5566d844bf126b8a9e50b912
author drewp@bigasterisk.com
date Sat, 13 Apr 2019 20:56:30 -0700
parents 97d7c0bb9408
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
28
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
1 import os, re
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
2 from subprocess import check_call
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
3 from tempfile import NamedTemporaryFile
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
4 from pymongo import Connection
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
5
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
6 def makeCode(s):
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
7 #return 'code'
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
8 psFile = NamedTemporaryFile(suffix='.ps')
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
9 check_call(['barcode',
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
10 '-b', s,
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
11 '-E',
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
12 '-o', psFile.name])
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
13 svgFile = NamedTemporaryFile(suffix='.svg')
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
14 check_call(['pstoedit',
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
15 '-f', 'plot-svg',
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
16 '-yshift', '580',
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
17 '-xshift', '20',
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
18 psFile.name, svgFile.name])
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
19 lines = open(svgFile.name).readlines()
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
20 return ''.join(lines[2:])
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
21
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
22 def codeElem(s):
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
23 return '<div class="bc">%s</div>' % makeCode(s)
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
24
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
25 mpdPaths = Connection("bang", 27017)['barcodePlayer']['mpdPaths']
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
26 # {mpdPath:"music/path/to/album/or/song", "_id":12}
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
27 mpdPaths.ensure_index([('mpdPath', 1)])
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
28 def idForMpdPath(p):
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
29 match = mpdPaths.find_one({"mpdPath" : p})
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
30 if match:
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
31 return match['_id']
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
32
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
33 top = list(mpdPaths.find().sort([('_id', -1)]).limit(1))
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
34 newId = top[0]['_id'] + 1 if top else 0
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
35 mpdPaths.insert({"mpdPath" : p, "_id" : newId})
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
36 return newId
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
37
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
38
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
39 out = open("out.xhtml", "w")
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
40 out.write("""<?xml version="1.0" encoding="utf-8"?>
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
41 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
42 "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
43 <html xmlns="http://www.w3.org/1999/xhtml">
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
44 <head>
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
45 <title>barcodes</title>
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
46 <link rel="stylesheet" href="barcode.css"/>
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
47 </head>
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
48 <body>
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
49 <div class="cards">
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
50 """)
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
51
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
52
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
53 mpdRoot = "/my/music"
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
54
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
55 paths = open("mpdPaths.txt").read().strip().splitlines()
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
56
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
57 cardsSeen = 0
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
58 for path in paths:
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
59 if os.path.isdir(os.path.join(mpdRoot, path)):
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
60 albumDir = path.split('/')[-1]
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
61 songFile = None
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
62 else:
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
63 albumDir, songFile = path.split('/')[-2:]
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
64
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
65 if '-' in albumDir:
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
66 artistName, albumName = albumDir.replace('_', ' ').split('-', 1)
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
67 else:
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
68 artistName, albumName = '', albumDir
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
69
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
70 if artistName in ['', 'Original Soundtrack', 'Various']:
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
71 artistName = albumName
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
72 albumName = ''
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
73
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
74 if songFile:
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
75 songName = re.sub(r'(^\d+\.)|(^\d+\s*-)', '', songFile)
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
76 songName = songName.rsplit('.',1)[0].replace('_', ' ')
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
77
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
78 out.write('<div class="card">')
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
79 out.write('<div class="artist">%s</div>' % artistName)
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
80 out.write('<div class="album">%s</div>' % albumName)
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
81
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
82 print (albumName, songName if songFile else '')
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
83 out.write(codeElem("music %s" % idForMpdPath(path)))
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
84
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
85 if songFile:
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
86 out.write('<div class="song">%s</div>' % songName)
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
87
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
88 out.write('</div>')
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
89 cardsSeen += 1
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
90 if cardsSeen % 8 == 0:
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
91 out.write('<div class="pgbr"/>')
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
92
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
93 out.write("""
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
94 </div>
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
95 </body>
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
96 </html>
97d7c0bb9408 barcode maker tool
drewp@bigasterisk.com
parents:
diff changeset
97 """)