Artifact
68f5584a5fbc9c109d919b91e993d315cef99e6ce8210bf5a22482eeaeb0dc8c:
- File
bitrhythm.py
— part of check-in
[28d3f65371]
at
2022-05-03 03:30:47
on branch trunk
— Cleanup of requirements
(user:
dev
size: 1140)
0000: 66 72 6f 6d 20 73 61 6e 69 63 20 69 6d 70 6f 72 from sanic impor
0010: 74 20 53 61 6e 69 63 2c 20 72 65 73 70 6f 6e 73 t Sanic, respons
0020: 65 0a 66 72 6f 6d 20 73 61 6e 69 63 2e 72 65 73 e.from sanic.res
0030: 70 6f 6e 73 65 20 69 6d 70 6f 72 74 20 6a 73 6f ponse import jso
0040: 6e 2c 20 74 65 78 74 0a 66 72 6f 6d 20 73 61 6e n, text.from san
0050: 69 63 2e 65 78 63 65 70 74 69 6f 6e 73 20 69 6d ic.exceptions im
0060: 70 6f 72 74 20 4e 6f 74 46 6f 75 6e 64 20 0a 66 port NotFound .f
0070: 72 6f 6d 20 6a 69 6e 6a 61 32 20 69 6d 70 6f 72 rom jinja2 impor
0080: 74 20 45 6e 76 69 72 6f 6e 6d 65 6e 74 2c 20 46 t Environment, F
0090: 69 6c 65 53 79 73 74 65 6d 4c 6f 61 64 65 72 0a ileSystemLoader.
00a0: 69 6d 70 6f 72 74 20 72 65 0a 69 6d 70 6f 72 74 import re.import
00b0: 20 69 70 64 62 0a 69 6d 70 6f 72 74 20 73 79 73 ipdb.import sys
00c0: 0a 69 6d 70 6f 72 74 20 74 72 61 63 65 62 61 63 .import tracebac
00d0: 6b 0a 69 6d 70 6f 72 74 20 6a 73 6f 6e 0a 69 6d k.import json.im
00e0: 70 6f 72 74 20 64 61 74 65 74 69 6d 65 0a 66 72 port datetime.fr
00f0: 6f 6d 20 65 6d 61 69 6c 2e 75 74 69 6c 73 20 69 om email.utils i
0100: 6d 70 6f 72 74 20 66 6f 72 6d 61 74 5f 64 61 74 mport format_dat
0110: 65 74 69 6d 65 0a 66 72 6f 6d 20 75 72 6c 6c 69 etime.from urlli
0120: 62 2e 70 61 72 73 65 20 69 6d 70 6f 72 74 20 75 b.parse import u
0130: 72 6c 70 61 72 73 65 0a 69 6d 70 6f 72 74 20 62 rlparse.import b
0140: 61 73 65 36 34 0a 66 69 6c 65 5f 6c 6f 61 64 65 ase64.file_loade
0150: 72 20 3d 20 46 69 6c 65 53 79 73 74 65 6d 4c 6f r = FileSystemLo
0160: 61 64 65 72 28 27 74 65 6d 70 6c 61 74 65 73 27 ader('templates'
0170: 29 0a 65 6e 76 20 3d 20 45 6e 76 69 72 6f 6e 6d ).env = Environm
0180: 65 6e 74 28 6c 6f 61 64 65 72 3d 66 69 6c 65 5f ent(loader=file_
0190: 6c 6f 61 64 65 72 29 0a 61 70 70 20 3d 20 53 61 loader).app = Sa
01a0: 6e 69 63 28 27 42 69 74 72 68 79 74 68 6d 27 29 nic('Bitrhythm')
01b0: 0a 0a 0a 40 61 70 70 2e 65 78 63 65 70 74 69 6f ...@app.exceptio
01c0: 6e 28 4e 6f 74 46 6f 75 6e 64 29 0a 61 73 79 6e n(NotFound).asyn
01d0: 63 20 64 65 66 20 69 67 6e 6f 72 65 5f 34 30 34 c def ignore_404
01e0: 73 28 72 65 71 75 65 73 74 2c 20 65 78 63 65 70 s(request, excep
01f0: 74 69 6f 6e 29 3a 0a 20 20 20 20 72 65 74 75 72 tion):. retur
0200: 6e 20 74 65 78 74 28 27 59 65 70 2c 20 49 20 74 n text('Yep, I t
0210: 6f 74 61 6c 6c 79 20 66 6f 75 6e 64 20 74 68 65 otally found the
0220: 20 70 61 67 65 20 27 20 2b 20 72 65 71 75 65 73 page ' + reques
0230: 74 2e 75 72 6c 29 0a 0a 0a 40 61 70 70 2e 72 6f t.url)...@app.ro
0240: 75 74 65 28 27 2f 73 6f 6e 67 2f 3c 6e 61 6d 65 ute('/song/<name
0250: 3e 27 29 0a 61 73 79 6e 63 20 64 65 66 20 67 65 >').async def ge
0260: 74 5f 69 6e 64 65 78 28 72 65 71 75 65 73 74 2c t_index(request,
0270: 20 6e 61 6d 65 29 3a 0a 20 20 20 20 74 65 6d 70 name):. temp
0280: 6c 61 74 65 20 3d 20 65 6e 76 2e 67 65 74 5f 74 late = env.get_t
0290: 65 6d 70 6c 61 74 65 28 27 69 6e 64 65 78 2e 68 emplate('index.h
02a0: 74 6d 6c 27 29 0a 20 20 20 20 72 65 74 75 72 6e tml'). return
02b0: 20 72 65 73 70 6f 6e 73 65 2e 68 74 6d 6c 28 74 response.html(t
02c0: 65 6d 70 6c 61 74 65 2e 72 65 6e 64 65 72 28 7b emplate.render({
02d0: 27 64 61 74 61 27 3a 20 6e 61 6d 65 7d 29 29 0a 'data': name})).
02e0: 0a 0a 40 61 70 70 2e 72 6f 75 74 65 28 27 2f 27 ..@app.route('/'
02f0: 29 0a 61 73 79 6e 63 20 64 65 66 20 67 65 74 5f ).async def get_
0300: 69 6e 64 65 78 28 72 65 71 75 65 73 74 29 3a 0a index(request):.
0310: 20 20 20 20 74 65 6d 70 6c 61 74 65 20 3d 20 65 template = e
0320: 6e 76 2e 67 65 74 5f 74 65 6d 70 6c 61 74 65 28 nv.get_template(
0330: 27 69 6e 64 65 78 2e 68 74 6d 6c 27 29 0a 20 20 'index.html').
0340: 20 20 72 65 74 75 72 6e 20 72 65 73 70 6f 6e 73 return respons
0350: 65 2e 68 74 6d 6c 28 74 65 6d 70 6c 61 74 65 2e e.html(template.
0360: 72 65 6e 64 65 72 28 7b 27 64 61 74 61 27 3a 20 render({'data':
0370: 27 27 7d 29 29 0a 0a 0a 40 61 70 70 2e 72 6f 75 ''}))...@app.rou
0380: 74 65 28 27 2f 69 73 73 75 65 27 29 0a 61 73 79 te('/issue').asy
0390: 6e 63 20 64 65 66 20 67 65 74 5f 69 6e 64 65 78 nc def get_index
03a0: 28 72 65 71 75 65 73 74 29 3a 0a 20 20 20 20 74 (request):. t
03b0: 65 6d 70 6c 61 74 65 20 3d 20 65 6e 76 2e 67 65 emplate = env.ge
03c0: 74 5f 74 65 6d 70 6c 61 74 65 28 27 70 61 67 65 t_template('page
03d0: 2e 68 74 6d 6c 27 29 0a 20 20 20 20 72 65 74 75 .html'). retu
03e0: 72 6e 20 72 65 73 70 6f 6e 73 65 2e 68 74 6d 6c rn response.html
03f0: 28 74 65 6d 70 6c 61 74 65 2e 72 65 6e 64 65 72 (template.render
0400: 28 29 29 0a 0a 0a 61 70 70 2e 73 74 61 74 69 63 ())...app.static
0410: 28 27 2f 27 2c 20 27 2e 2f 70 75 62 6c 69 63 27 ('/', './public'
0420: 29 0a 69 66 20 5f 5f 6e 61 6d 65 5f 5f 20 3d 3d ).if __name__ ==
0430: 20 27 5f 5f 6d 61 69 6e 5f 5f 27 3a 0a 20 20 20 '__main__':.
0440: 20 69 6d 70 6f 72 74 20 73 79 73 0a 20 20 20 20 import sys.
0450: 61 70 70 2e 72 75 6e 28 68 6f 73 74 3d 27 30 2e app.run(host='0.
0460: 30 2e 30 2e 30 27 2c 20 70 6f 72 74 3d 38 30 31 0.0.0', port=801
0470: 35 29 0a 0a 5)..