helpers.py 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import asyncio
  2. from typing import List, Dict
  3. from datetime import datetime
  4. from core.utils.feishu_data_async import FeishuDataAsync
  5. from core.utils.gpt4o_mini_help import GPT4oMini
  6. async def get_title_filter_word() -> List[str]:
  7. """
  8. 获取飞书表配置的标题过滤词
  9. https://w42nne6hzg.feishu.cn/sheets/KsoMsyP2ghleM9tzBfmcEEXBnXg?sheet=BS9uyu
  10. :return:
  11. """
  12. spreadsheet_token = "KsoMsyP2ghleM9tzBfmcEEXBnXg"
  13. sheet_id = "BS9uyu"
  14. async with FeishuDataAsync() as feishu:
  15. feishu_data = await feishu.get_values(spreadsheet_token=spreadsheet_token, sheet_id=sheet_id)
  16. return feishu_data[1]
  17. async def generate_titles(sheet_id: str,video_obj: Dict,logger,aliyun_log):
  18. title_list = await get_title_filter_word()
  19. title = video_obj.get("title")
  20. if not title:
  21. return
  22. contains_keyword = any(keyword in title for keyword in title_list)
  23. logger.info(f"【{title}】标题包含过滤关键词:{contains_keyword}")
  24. if contains_keyword:
  25. new_title = await GPT4oMini.get_ai_mini_title(title)
  26. logger.info(f"生成新的标题:{new_title}")
  27. current_time = datetime.now()
  28. formatted_time = current_time.strftime("%Y-%m-%d %H:%M:%S")
  29. values = [
  30. video_obj["v_url"],
  31. video_obj["url"],
  32. title,
  33. new_title,
  34. formatted_time,
  35. ]
  36. await insert_safe_data(sheet_id, values)
  37. async def insert_safe_data(sheet_id: str, values: List):
  38. spreadsheet_token = "U5dXsSlPOhiNNCtEfgqcm1iYnpf"
  39. async with FeishuDataAsync() as feishu:
  40. await feishu.insert_values(spreadsheet_token=spreadsheet_token, sheet_id=sheet_id,ranges="A2:Z2",values=values)
  41. if __name__ == '__main__':
  42. filter_word = asyncio.run(get_title_filter_word())
  43. print(filter_word)