run.py 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. # -*- coding: utf-8 -*-
  2. # @Author: wangkun
  3. # @Time: 2022/4/18
  4. import datetime
  5. import os
  6. import random
  7. import sys
  8. import time
  9. sys.path.append(os.getcwd())
  10. from main.download_sendtime import DownloadSendtime
  11. from main.download_up import DownloadUp
  12. from main.common import Common
  13. from main.download_play import DownloadPlay
  14. from main.get_feeds import get_feeds
  15. class Main:
  16. @classmethod
  17. def download_play_job(cls):
  18. """
  19. 播放量脚本任务
  20. """
  21. while True:
  22. play_now = datetime.datetime.now()
  23. # 指定时间结束抓取视频
  24. if play_now.hour == 0:
  25. Common.crawler_log().info("结束抓取播放量视频\n")
  26. time.sleep(3)
  27. break
  28. else:
  29. # 获取视频信息,并下载
  30. get_feeds()
  31. DownloadPlay.download_play_video("prod")
  32. # 请求随机间隔时间
  33. time.sleep(random.randint(31, 40))
  34. # 删除 charles 缓存文件
  35. Common.del_charles_files()
  36. # 删除多余日志
  37. Common.del_logs()
  38. # 统计累计下载数量
  39. Common.kanyikan_download_count()
  40. @classmethod
  41. def download_up_job(cls):
  42. """
  43. 上升榜脚本任务
  44. """
  45. while True:
  46. up_now = datetime.datetime.now()
  47. # 指定时间结束抓取视频
  48. if up_now.hour > 19:
  49. Common.crawler_log().info("结束抓取上升榜视频\n")
  50. time.sleep(3)
  51. break
  52. else:
  53. # 获取视频信息,并下载
  54. get_feeds()
  55. DownloadUp.download_up_video("prod")
  56. # 请求随机间隔时间
  57. time.sleep(random.randint(31, 40))
  58. # 删除 charles 缓存文件
  59. Common.del_charles_files()
  60. # 删除多余日志
  61. Common.del_logs()
  62. # 统计累计下载数量
  63. Common.kanyikan_download_count()
  64. @classmethod
  65. def download_sendtime_job(cls):
  66. """
  67. 发布时间榜脚本任务
  68. """
  69. while True:
  70. sendtime_now = datetime.datetime.now()
  71. # 指定时间结束抓取视频
  72. if sendtime_now.hour > 9:
  73. Common.crawler_log().info("结束抓取3天榜单视频\n")
  74. time.sleep(3)
  75. break
  76. else:
  77. # 获取视频信息,并下载
  78. get_feeds()
  79. DownloadSendtime.download_sendtime_video("prod")
  80. # 请求随机间隔时间
  81. time.sleep(random.randint(31, 40))
  82. # 删除 charles 缓存文件
  83. Common.del_charles_files()
  84. # 删除多余日志
  85. Common.del_logs()
  86. # 统计累计下载数量
  87. Common.kanyikan_download_count()
  88. @classmethod
  89. def main(cls):
  90. """
  91. - 1.凌晨0点-10点 3日内播放大于2万 爬取
  92. - 2.早上10点-20点 内容上升榜 爬取
  93. - 3.晚上20点-24点 15万播放爬取
  94. """
  95. while True:
  96. while True:
  97. main_now = datetime.datetime.now()
  98. if 9 >= main_now.hour >= 0:
  99. Common.crawler_log().info("开始抓取3天榜单视频\n")
  100. time.sleep(1)
  101. cls.download_sendtime_job()
  102. elif 19 >= main_now.hour >= 10:
  103. Common.crawler_log().info("开始抓取上升榜视频\n")
  104. time.sleep(1)
  105. cls.download_up_job()
  106. elif 24 >= main_now.hour >= 20:
  107. Common.crawler_log().info("开始抓取播放量视频\n")
  108. time.sleep(1)
  109. cls.download_play_job()
  110. else:
  111. Common.crawler_log().info("结束今天抓取及上传任务\n")
  112. time.sleep(60)
  113. break
  114. if __name__ == "__main__":
  115. main = Main()
  116. main.main()