douyin_search_tikhub.py 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. """通过 TikHub 搜索一页抖音视频并自动保存。"""
  2. from __future__ import annotations
  3. import asyncio
  4. import os as os
  5. import httpx as httpx
  6. from agents.find_agent.support.douyin_search_tikhub import (
  7. DEFAULT_MIN_DURATION_SECONDS,
  8. _douyin_search_tikhub_raw,
  9. _ensure_env_loaded as _ensure_env_loaded,
  10. _wait_rate_limit as _wait_rate_limit,
  11. )
  12. from agents.find_agent.support.search_persistence import persist_search_payload
  13. from supply_agent.tools import tool
  14. @tool
  15. async def douyin_search_tikhub(
  16. run_id: str,
  17. keyword: str,
  18. query_reason: str,
  19. source_type: str,
  20. source_value: str | None = None,
  21. parent_search_id: int | None = None,
  22. page_no: int = 1,
  23. content_type: str = "视频",
  24. sort_type: str = "综合排序",
  25. publish_time: str = "不限",
  26. cursor: int = 0,
  27. filter_duration: str = "不限",
  28. search_id: str = "",
  29. backtrace: str = "",
  30. min_duration_seconds: int = DEFAULT_MIN_DURATION_SECONDS,
  31. timeout: float | None = None,
  32. ) -> str:
  33. """使用 TikHub 搜索一页抖音视频,返回基础信息、数据库 ID 和分页状态。"""
  34. result = await _douyin_search_tikhub_raw(
  35. keyword=keyword,
  36. content_type=content_type,
  37. sort_type=sort_type,
  38. publish_time=publish_time,
  39. cursor=cursor,
  40. filter_duration=filter_duration,
  41. search_id=search_id,
  42. backtrace=backtrace,
  43. min_duration_seconds=min_duration_seconds,
  44. timeout=timeout,
  45. )
  46. return await asyncio.to_thread(
  47. persist_search_payload,
  48. result,
  49. run_id=run_id,
  50. keyword=keyword,
  51. query_reason=query_reason,
  52. source_type=source_type,
  53. source_value=source_value,
  54. parent_search_id=parent_search_id,
  55. cursor=str(cursor),
  56. page_no=page_no,
  57. provider="tikhub",
  58. content_type=content_type,
  59. sort_type=sort_type,
  60. publish_time=publish_time,
  61. provider_state={"search_id": search_id, "backtrace": backtrace},
  62. )