web.py 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #!/usr/bin/env python3
  2. import os
  3. import json
  4. from datetime import datetime
  5. from websocket_server import WebsocketServer
  6. from qmanager import qManager
  7. import urllib
  8. # Port on which server will run.
  9. PORT = 8080
  10. BASE_PATH='/backend/' #changes based on webserver
  11. FILE_PATH='/tmp/'
  12. last_msg = datetime.now()
  13. def send_status(server, client=None, force=False):
  14. global last_msg
  15. if client is None and not force:
  16. if (datetime.now() - last_msg).total_seconds() < 2:
  17. return
  18. last_msg = datetime.now()
  19. status = { 'SEARCH': q.search_status(), 'BOOKS': q.books_status()}
  20. if client is None:
  21. ws.send_message_to_all(json.dumps(status))
  22. else:
  23. server.send_message(client, json.dumps(status))
  24. def new_client(client, server):
  25. send_status(server, client)
  26. def message_received(client, server, message):
  27. j = json.loads(message)
  28. print(j)
  29. if j['type'].upper() == 'SEARCH':
  30. q.new_search(j['book'], j['extension'])
  31. if j['type'].upper() == 'BOOK':
  32. q.new_dl(j['book'])
  33. send_status(server)
  34. def updated(force=False):
  35. send_status(ws, force=force)
  36. if __name__ == '__main__':
  37. q = qManager(updated)
  38. ws = WebsocketServer(8081, host='127.0.0.1')
  39. ws.set_fn_new_client(new_client)
  40. ws.set_fn_message_received(message_received)
  41. ws.run_forever()