server.py 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import uvicorn
  2. from fastapi import FastAPI, Request
  3. from logger import logger
  4. from config import Config
  5. from uploadData import upload
  6. from parser import parse_multipart
  7. from parser import parser_json_data
  8. from byteimg import byte2pil, pil2byte, draw
  9. app = FastAPI()
  10. conf = Config.get("prod")
  11. url = conf["url"]
  12. classIndex = conf["classIndex"]
  13. nvr = conf["nvr"]
  14. @app.post("/speed")
  15. async def speed(request: Request):
  16. multipart_data = await request.body()
  17. boundary = b'---------------------------7e13971310878'
  18. result = parse_multipart(multipart_data, boundary)
  19. car_infos, image_contents = parser_json_data(result)
  20. if len(car_infos) != 0:
  21. # with open(f"assert/{index}-tfx.txt", "wb") as f:
  22. # f.write(multipart_data)
  23. logger.info(car_infos)
  24. for info, image_content in zip(car_infos, image_contents):
  25. try:
  26. videoTime = info["dateTime"]
  27. speed = info["VehicleInfo"]["vehicleSpeed"]
  28. plate = info["PlateInfo"]["plate"]
  29. ip_addr = info["ipAddress"]
  30. filename = None
  31. imagedata = None
  32. filename = image_content["filename"]
  33. if filename != "detectionPicture.jpg":
  34. continue
  35. imagedata = image_content["content"]
  36. if imagedata is not None:
  37. img = byte2pil(imagedata)
  38. text = f"{plate} : {speed} km/h"
  39. draw(img, text, (100, 100))
  40. byte_data = pil2byte(img)
  41. if ip_addr not in conf["ip2channel"]:
  42. logger.info(f"{ip_addr} not in ip2channel")
  43. return
  44. channel = conf["ip2channel"][ip_addr]
  45. res = await upload(url, ip_addr, classIndex, nvr, videoTime, filename, byte_data, plate, speed)
  46. logger.info(res)
  47. except Exception as error:
  48. logger.info(error)
  49. return {"msg": "sucess"}
  50. if __name__ == "__main__":
  51. uvicorn.run('server:app', host="0.0.0.0", port=18000)