hkvideo.py 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. from fastapi import APIRouter, Request, Depends
  4. from database import get_db
  5. from sqlalchemy.orm import Session
  6. from utils import hk_video_api
  7. from common import PTZApi
  8. from utils.StripTagsHTMLParser import *
  9. import json
  10. from config import settings
  11. router = APIRouter()
  12. @router.get('/get_video_url_by_id')
  13. async def get_video_url_by_id(
  14. request: Request,
  15. id: str,
  16. protocol: str = 'hlss',
  17. db: Session = Depends(get_db)
  18. ):
  19. video_url = hk_video_api.get_video_url(id=id, protocol=protocol)
  20. print('video_url', video_url)
  21. return {
  22. "code": 200,
  23. "msg": "操作成功",
  24. "data": video_url
  25. }
  26. # 获取适合小屏播放的互联网代理地址
  27. @router.get('/proxy/get_video_url_by_id')
  28. async def get_video_url_by_id(
  29. request: Request,
  30. id: str,
  31. db: Session = Depends(get_db)
  32. ):
  33. video_url = hk_video_api.get_video_url(id=id, protocol='hlss')
  34. video_url = video_url.replace("https://19.155.5.14:6014", f"{settings.YZY_WEB_ROOT}/yzyvideo")
  35. print('video_url', video_url)
  36. return {
  37. "code": 200,
  38. "msg": "操作成功",
  39. "data": video_url
  40. }
  41. @router.get("/get_ptz_info")
  42. async def get_ptz_info(
  43. request: Request,
  44. code: str,
  45. db: Session = Depends(get_db)
  46. ):
  47. try:
  48. data = PTZApi.get_ptz_info(code)
  49. return {
  50. "code": 200,
  51. "msg": "操作成功",
  52. "data": data
  53. }
  54. except:
  55. return {
  56. "code": 500,
  57. "msg": "操作失败"
  58. }
  59. @router.get("/indexCode")
  60. async def indexCode(
  61. request: Request,
  62. code: str,
  63. db: Session = Depends(get_db)
  64. ):
  65. try:
  66. data = hk_video_api.indexCode(code)
  67. return {
  68. "code": 200,
  69. "msg": "操作成功",
  70. "data": data
  71. }
  72. except:
  73. return {
  74. "code": 500,
  75. "msg": "操作失败"
  76. }
  77. @router.post("/controlling")
  78. async def controlling(
  79. request: Request,
  80. body=Depends(remove_xss_json),
  81. db: Session = Depends(get_db)
  82. ):
  83. try:
  84. cameraIndexCode = body['cameraIndexCode']
  85. action = body['action']
  86. command = body['command']
  87. speed = body['speed']
  88. presetIndex = body['presetIndex']
  89. data = hk_video_api.controlling(cameraIndexCode, action, command, speed, presetIndex)
  90. return {
  91. "code": 200,
  92. "msg": "操作成功"
  93. }
  94. except:
  95. return {
  96. "code": 500,
  97. "msg": "操作失败"
  98. }