download_play.py 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. # -*- coding: utf-8 -*-
  2. # @Author: wangkun
  3. # @Time: 2022/4/18
  4. """
  5. 下载并上传:播放量视频
  6. """
  7. import os
  8. import sys
  9. import time
  10. sys.path.append(os.getcwd())
  11. from main.common import Common
  12. from main.get_feeds import get_feeds
  13. from main.publish import Publish
  14. from main.feishu_lib import Feishu
  15. class DownloadPlay:
  16. @staticmethod
  17. def play_rule(play_width, play_height, play_duration, play_play_cnt):
  18. """
  19. 1.分辨率,宽或者高 >= 720 or ==0
  20. 2.600s >= 时长 >= 60s
  21. 3.视频播放量 >= 150000
  22. """
  23. if int(play_width) >= 720 or int(play_height) >= 720 or play_width == "0" or play_height == "0":
  24. if 600 >= int(play_duration) >= 60:
  25. if int(play_play_cnt) >= 150000:
  26. return True
  27. else:
  28. return False
  29. else:
  30. return False
  31. else:
  32. return False
  33. @classmethod
  34. def download_play_video(cls, env):
  35. """
  36. 下载播放量视频
  37. 测试环境:env == dev
  38. 正式环境:env == prod
  39. """
  40. try:
  41. if len(Feishu.get_values_batch("SdCHOM")) == 1:
  42. pass
  43. else:
  44. for i in range(len(Feishu.get_values_batch("SdCHOM"))):
  45. time.sleep(1)
  46. try:
  47. download_video_id = Feishu.get_values_batch("SdCHOM")[i+1][1]
  48. download_video_play_cnt = Feishu.get_values_batch("SdCHOM")[i+1][2]
  49. download_video_title = Feishu.get_values_batch("SdCHOM")[i+1][3]
  50. download_video_duration = Feishu.get_values_batch("SdCHOM")[i+1][4]
  51. download_video_comment_cnt = Feishu.get_values_batch("SdCHOM")[i+1][5]
  52. download_video_like_cnt = Feishu.get_values_batch("SdCHOM")[i+1][6]
  53. download_video_share_cnt = Feishu.get_values_batch("SdCHOM")[i+1][7]
  54. download_video_resolution = Feishu.get_values_batch("SdCHOM")[i+1][8]
  55. download_video_width = download_video_resolution.split("*")[0]
  56. download_video_height = download_video_resolution.split("*")[-1]
  57. download_video_send_time = Feishu.get_values_batch("SdCHOM")[i+1][9]
  58. download_user_name = Feishu.get_values_batch("SdCHOM")[i+1][10]
  59. download_head_url = Feishu.get_values_batch("SdCHOM")[i+1][11]
  60. download_cover_url = Feishu.get_values_batch("SdCHOM")[i+1][12]
  61. download_video_url = Feishu.get_values_batch("SdCHOM")[i+1][13]
  62. download_video_session = Feishu.get_values_batch("SdCHOM")[i+1][14]
  63. if cls.play_rule(download_video_width, download_video_height,
  64. download_video_duration, download_video_play_cnt) is True:
  65. Common.logger().info("开始下载视频:{}", download_video_title)
  66. # 下载封面
  67. Common.download_method(text="cover", d_name=download_video_title, d_url=download_cover_url)
  68. # 下载视频
  69. Common.download_method(text="video", d_name=download_video_title, d_url=download_video_url)
  70. # 保存视频信息至 "./videos/{download_video_title}/info.txt"
  71. with open(r"./videos/" + download_video_title + r"/info.txt", "a", encoding="utf8") as f_a:
  72. f_a.write(str(download_video_id) + "\n" +
  73. str(download_video_title) + "\n" +
  74. str(download_video_duration) + "\n" +
  75. str(download_video_play_cnt) + "\n" +
  76. str(download_video_comment_cnt) + "\n" +
  77. str(download_video_like_cnt) + "\n" +
  78. str(download_video_share_cnt) + "\n" +
  79. str(download_video_resolution) + "\n" +
  80. str(download_video_send_time) + "\n" +
  81. str(download_user_name) + "\n" +
  82. str(download_head_url) + "\n" +
  83. str(download_video_url) + "\n" +
  84. str(download_cover_url) + "\n" +
  85. str(download_video_session))
  86. # 上传视频
  87. Common.logger().info("开始上传视频:{}", download_video_title)
  88. Publish.upload_and_publish(env, "play")
  89. # 保存视频 ID 到云文档:https://w42nne6hzg.feishu.cn/sheets/shtcngRPoDYAi24x52j2nDuHMih?sheet=20ce0c
  90. Common.logger().info("保存视频ID至云文档:{}", download_video_title)
  91. # 看一看+ ,视频ID工作表,插入首行
  92. Feishu.insert_columns("20ce0c")
  93. # 看一看+ ,视频ID工作表,首行写入数据
  94. Feishu.update_values("20ce0c", download_video_id, "", "", "",
  95. "", "", "", "", "", "", "", "", "", "", "")
  96. # 从云文档删除该视频信息:https://w42nne6hzg.feishu.cn/sheets/shtcngRPoDYAi24x52j2nDuHMih?sheet=SdCHOM
  97. Common.logger().info("从云文档删除该视频信息:{}", download_video_title)
  98. # 删除行或列,可选 ROWS、COLUMNS
  99. Feishu.dimension_range("SdCHOM", "ROWS", i + 2, i + 2)
  100. else:
  101. # 从云文档删除该视频信息:https://w42nne6hzg.feishu.cn/sheets/shtcngRPoDYAi24x52j2nDuHMih?sheet=SdCHOM
  102. Common.logger().info("该视频不满足下载规则,删除在云文档中的信息:{}", download_video_title)
  103. # 删除行或列,可选 ROWS、COLUMNS
  104. Feishu.dimension_range("SdCHOM", "ROWS", i + 2, i + 2)
  105. except Exception as e:
  106. Common.logger().error("视频 info 异常,删除该视频信息", e)
  107. # 删除行或列,可选 ROWS、COLUMNS
  108. Feishu.dimension_range("SdCHOM", "ROWS", i + 2, i + 2)
  109. cls.download_play_video("prod")
  110. except Exception as e:
  111. Common.logger().error(e)
  112. if __name__ == "__main__":
  113. download_play = DownloadPlay()
  114. get_feeds()
  115. download_play.download_play_video("dev")