dev.py 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. import time
  2. import datetime
  3. from app.core.database import DatabaseManager
  4. from app.core.config import GlobalConfigSettings
  5. from app.infra.internal import auto_create_crawler_task
  6. import asyncio
  7. async def main():
  8. config = GlobalConfigSettings()
  9. mysql_manager = DatabaseManager(config)
  10. await mysql_manager.init_pools()
  11. category_list = ['军事']
  12. for c in category_list:
  13. query = """
  14. select t1.id, article_link, read_cnt, read_median_multiplier
  15. from ad_platform_accounts_daily_detail t1
  16. join ad_platform_accounts t2 on t1.gh_id = t2.gh_id
  17. where cold_start_status = 0
  18. and t2.category = %s
  19. order by read_median_multiplier desc limit 100;
  20. """
  21. articles = await mysql_manager.async_fetch(query, params=(c,))
  22. articles = articles[:100]
  23. url_list = [i["article_link"] for i in articles]
  24. crawler_plan_response = await auto_create_crawler_task(
  25. plan_id=None,
  26. plan_name=f"冷启动--{c}-{datetime.date.today().__str__()}-{len(articles)}",
  27. plan_tag="互选平台优质账号",
  28. platform="weixin",
  29. url_list=url_list,
  30. )
  31. print(crawler_plan_response)
  32. create_timestamp = int(time.time()) * 1000
  33. crawler_plan_id = crawler_plan_response["data"]["id"]
  34. crawler_plan_name = crawler_plan_response["data"]["name"]
  35. query = """
  36. insert into article_crawler_plan (crawler_plan_id, name, create_timestamp)
  37. values (%s, %s, %s)
  38. """
  39. await mysql_manager.async_save(
  40. query=query,
  41. params=(crawler_plan_id, crawler_plan_name, create_timestamp),
  42. )
  43. id_list = [i["id"] for i in articles]
  44. query = """
  45. update ad_platform_accounts_daily_detail
  46. set cold_start_status = %s
  47. where id in %s and cold_start_status = %s;
  48. """
  49. affect_rows = await mysql_manager.async_save(
  50. query=query,
  51. params=(2, tuple(id_list), 0),
  52. )
  53. print(affect_rows)
  54. return
  55. await mysql_manager.close_pools()
  56. if __name__ == "__main__":
  57. asyncio.run(main())