⌈⌋ ⎇ branch:  Bitrhythm


Hex Artifact Content

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)..