video_processing.py 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. import os
  2. import time
  3. import requests
  4. import json
  5. from common.aliyun_log import AliyunLogger
  6. from common.redis import get_video_data
  7. from common.feishu_data import Material
  8. HOST = 'google_server' if os.getenv('env', 'dev') == 'prod' else 'localhost'
  9. API_KEY = os.getenv('API_KEY')
  10. class VideoProcessing:
  11. def get_ai_data(self, video_path):
  12. mark, prompt = Material.feishu_list()
  13. sample_data = {
  14. "一、基础信息": {
  15. "视觉/音乐/文字": "",
  16. "内容选题": "",
  17. "视频主题": ""
  18. },
  19. "二、主体和场景": {
  20. "视频主体": "",
  21. "视频场景": []
  22. },
  23. "三、情感与风格": {},
  24. "四、视频传播性与观众": {
  25. "片尾引导": {},
  26. "传播性判断": "",
  27. "观众画像": {}
  28. },
  29. "五、音画细节": {
  30. "音频细节": {},
  31. "视频水印": {},
  32. "视频字幕": {},
  33. "视频口播": ""
  34. },
  35. "六、人物与场景": {
  36. "知名人物": {},
  37. "人物年龄段": "",
  38. "场景描述": []
  39. },
  40. "七、时效性与分类": {
  41. "时效性": {},
  42. "视频一级分类": "",
  43. "二级分类": ["品类- 、分数-", "品类- 、分数-", "品类- 、分数-"]
  44. }
  45. }
  46. url = f"http://{HOST}:8080/process_video/"
  47. payload = json.dumps( {
  48. "api_key": API_KEY,
  49. "video_path": video_path,
  50. "prompt": prompt,
  51. "mark": str(mark),
  52. "sample_data": str(sample_data)
  53. } )
  54. headers = {
  55. 'Content-Type': 'application/json'
  56. }
  57. try:
  58. response = requests.request( "POST", url, headers=headers, data=payload )
  59. response = response.json()
  60. result = response['result']
  61. mark = response['mark']
  62. cleaned_string = result.replace( "```json", '' ).replace( "```", '' ).strip()
  63. return cleaned_string, str(mark)
  64. except Exception as e:
  65. print(f"视频请求异常:{e}")
  66. return None
  67. def get_video(self, redis_task):
  68. video_data = get_video_data(redis_task)
  69. if not video_data:
  70. print("没有获取到视频内容")
  71. time.sleep(5)
  72. return
  73. # 解码为字符串
  74. data_str = video_data.decode( 'utf-8' )
  75. # 解析为 JSON 对象
  76. data_json = json.loads( data_str )
  77. video_id = data_json['video_id']
  78. title = data_json['title']
  79. video_path = data_json['video_path']
  80. type = data_json['type']
  81. partition = data_json['partition']
  82. print(video_path)
  83. data, mark = self.get_ai_data(video_path)
  84. AliyunLogger.logging(str(video_id), title, video_path, mark, type, partition, data)
  85. print("写入日志成功")
  86. if __name__ == '__main__':
  87. video_processor = VideoProcessing()
  88. video_processor.get_video()