helpers.py 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  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):
  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. if contains_keyword:
  24. new_title = await GPT4oMini.get_ai_mini_title(title)
  25. current_time = datetime.now()
  26. formatted_time = current_time.strftime("%Y-%m-%d %H:%M:%S")
  27. values = [
  28. video_obj["v_url"],
  29. video_obj["url"],
  30. title,
  31. new_title,
  32. formatted_time,
  33. ]
  34. await insert_feishu_data(sheet_id, values)
  35. async def insert_feishu_data(sheet_id: str,values: List):
  36. spreadsheet_token = "KsoMsyP2ghleM9tzBfmcEEXBnXg"
  37. async with FeishuDataAsync() as feishu:
  38. await feishu.insert_values(spreadsheet_token=spreadsheet_token, sheet_id=sheet_id,ranges="A2:Z2",values=values)
  39. import re
  40. def extract_variables(text: str, pattern: str = r"\{\{(\w+)\}\}") -> list:
  41. """
  42. 从文本中提取模板变量名
  43. 参数:
  44. text: 要分析的文本
  45. pattern: 正则表达式模式,默认为 "{{变量名}}" 格式
  46. 返回:
  47. 提取到的变量名列表
  48. """
  49. return re.findall(pattern, text)
  50. if __name__ == '__main__':
  51. filter_word = asyncio.run(insert_feishu_data())
  52. print(filter_word)