wangkun 2 years ago
parent
commit
3611eb7e5c
2 changed files with 80 additions and 65 deletions
  1. 1 1
      main/demo.py
  2. 79 64
      shipinhao/shipinhao_follow.py

+ 1 - 1
main/demo.py

@@ -29,7 +29,7 @@ class Demo:
         sht = Feishu.get_values_batch('recommend', 'shipinhao', 'XxmRlE')
         title = '穷人怎么变富上海爷叔句句肺腑,短短一席话令人深思'
 
-        if str(title) in [x for y in sht for x in y]:
+        if title in [x for y in Feishu.get_values_batch('demo', 'shipinhao', 'XxmRlE') for x in y]:
             print('yes')
         else:
             print('no')

+ 79 - 64
shipinhao/shipinhao_follow.py

@@ -47,7 +47,6 @@ class Follow:
 
     @classmethod
     def start_follow_wechat(cls, log_type, user_name, env):
-        # try:
         Common.logger(log_type).info('启动微信')
         caps = {
             "platformName": "Android",  # 手机操作系统 Android / iOS
@@ -83,9 +82,6 @@ class Follow:
         time.sleep(3)
         cls.quit(log_type, driver)
 
-        # except Exception as e:
-        #     Common.logger(log_type).error('start_follow_wechat异常:{}\n', e)
-
     @classmethod
     def quit(cls, log_type, driver: WebDriver):
         driver.quit()
@@ -144,14 +140,14 @@ class Follow:
         driver.switch_to.context('NATIVE_APP')
 
         # 判断置顶视频
-        top_videos = driver.find_elements(By.ID, 'com.tencent.mm:id/i56')
+        top_videos = driver.find_elements(By.ID, 'com.tencent.mm:id/e5s')
         Common.logger(log_type).info(f'发现 {len(top_videos)} 个置顶视频\n')
         if len(top_videos) == 0:
             Common.logger(log_type).info('当前用户没有置顶视频')
         else:
             for i in range(len(top_videos)):
                 top_videos[i].click()
-                cls.download_publish(log_type, driver, env)
+                cls.get_video_info(log_type, driver, env)
                 driver.press_keycode(AndroidKey.BACK)
 
         # 判断非置顶视频
@@ -160,14 +156,14 @@ class Follow:
         not_top_first_video = not_top_videos[len(top_videos)]
         not_top_first_video.click()
         while True:
-            cls.download_publish(log_type, driver, env)
+            cls.get_video_info(log_type, driver, env)
             driver.swipe(10, 1600, 10, 300, 200)
             if len(driver.find_elements(By.ID, 'com.tencent.mm:id/g2s')) > 0:
                 Common.logger(log_type).info('到底啦 ~\n')
                 return
 
     @classmethod
-    def get_video_info(cls, log_type, driver: WebDriver):
+    def get_video_info(cls, log_type, driver: WebDriver, env):
         driver.implicitly_wait(10)
         # 视频标题
         try:
@@ -249,79 +245,98 @@ class Follow:
         Common.logger(log_type).info('comment_cnt:{}', comment_cnt)
         Common.logger(log_type).info('user_name:{}', user_name)
 
-        video_dict = {
-            'video_title': video_title,
-            'duration': duration,
-            'like_cnt': like_cnt,
-            'share_cnt': share_cnt,
-            'share_id': share_id,
-            'favorite_cnt': favorite_cnt,
-            'comment_cnt': comment_cnt,
-            'user_name': user_name
-        }
-        return video_dict
-
-    @classmethod
-    def download_publish(cls, log_type, driver: WebDriver, env):
-        video_dict = cls.get_video_info(log_type, driver)
-        Common.logger(log_type).info(f'video_dict:{video_dict}')
-        Common.logger(log_type).info(f'video_title:{video_dict["video_title"]}')
-        return
-        if int(video_dict['duration']) < 50:
-            Common.logger(log_type).info(f'时长:{int(video_dict["duration"])} < 50 秒\n')
-        elif video_dict['video_title'] == '':
+        if int(duration) < 50:
+            Common.logger(log_type).info(f'时长:{int(duration)} < 50 秒\n')
+        elif video_title == '':
             Common.logger(log_type).info('视频标题为空\n')
         # 过滤词库(视频标题)
-        elif any(word if word in video_dict['video_title'] else False for word in cls.filter_words(log_type)) is True:
-            Common.logger(log_type).info(f'视频已中过滤词:{video_dict["video_title"]}\n')
+        elif any(word if word in video_title else False for word in cls.filter_words(log_type)) is True:
+            Common.logger(log_type).info(f'视频已中过滤词:{video_title}\n')
         # 视频号推荐_已下载表
-        elif str(video_dict['video_title']) in [x for y in Feishu.get_values_batch(log_type, 'shipinhao', 'c77cf9') for x in y]:
+        elif video_title in [x for y in Feishu.get_values_batch(log_type, 'shipinhao', 'c77cf9') for x in y]:
             Common.logger(log_type).info('视频已下载\n')
         # 视频号定向_已下载表
-        elif str(video_dict['video_title']) in [x for y in Feishu.get_values_batch(log_type, 'shipinhao', 'XxmRlE') for x in y]:
+        elif video_title in [x for y in Feishu.get_values_batch(log_type, 'shipinhao', 'XxmRlE') for x in y]:
             Common.logger(log_type).info('视频已下载\n')
         # feeds 表去重
-        elif str(video_dict['video_title']) in [x for y in Feishu.get_values_batch(log_type, 'shipinhao', 'FSDlBy') for x in y]:
+        elif video_title in [x for y in Feishu.get_values_batch(log_type, 'shipinhao', 'FSDlBy') for x in y]:
             Common.logger(log_type).info('视频已存在\n')
         # feeds 表去重
-        elif str(video_dict['video_title']) in [x for y in Feishu.get_values_batch(log_type, 'shipinhao', 'qzDljJ') for x in y]:
+        elif video_title in [x for y in Feishu.get_values_batch(log_type, 'shipinhao', 'qzDljJ') for x in y]:
             Common.logger(log_type).info('视频已存在\n')
         # 分享给 windows 爬虫机
         else:
-            video_dict['share_id'].click()
-            driver.find_element(By.XPATH, '//*[@text="转发给朋友"]').click()
-            driver.find_element(By.XPATH, '//*[@text="爬虫群"]').click()
-            driver.find_element(By.ID, 'com.tencent.mm:id/guw').click()
-
-            # 把视频信息写入飞书feeds文档
-            Feishu.insert_columns(log_type, 'shipinhao', 'qzDljJ', 'ROWS', 1, 2)
-            get_feeds_time = int(time.time())
-            values = [[time.strftime('%Y/%m/%d %H:%M:%S', time.localtime(get_feeds_time)),
-                       '定向榜',
-                       str(video_dict['video_title']),
-                       int(video_dict['duration']),
-                       int(video_dict['like_cnt']),
-                       int(video_dict['share_cnt']),
-                       int(video_dict['favorite_cnt']),
-                       int(video_dict['comment_cnt']),
-                       str(video_dict['user_name'])]]
-            time.sleep(1)
-            Feishu.update_values(log_type, 'shipinhao', 'qzDljJ', 'A2:Z2', values)
-            Common.logger(log_type).info('视频信息写入飞书文档成功\n')
+            video_dict = {
+                'video_title': video_title,
+                'duration': duration,
+                'like_cnt': like_cnt,
+                'share_cnt': share_cnt,
+                'share_id': share_id,
+                'favorite_cnt': favorite_cnt,
+                'comment_cnt': comment_cnt,
+                'user_name': user_name
+            }
+            cls.share_to_windows(log_type, driver, video_dict, env)
 
-            while True:
-                if Feishu.get_values_batch(log_type, 'shipinhao', 'qzDljJ')[1][11] is None:
-                    Common.logger(log_type).info('等待更新 URL 信息')
-                    time.sleep(10)
-                else:
-                    Common.logger(log_type).info('URL 信息已更新\n')
-                    break
+    @classmethod
+    def share_to_windows(cls, log_type, driver: WebDriver, video_dict, env):
+        # video_dict = cls.get_video_info(log_type, driver)
+        # if int(video_dict['duration']) < 50:
+        #     Common.logger(log_type).info(f'时长:{int(video_dict["duration"])} < 50 秒\n')
+        # elif video_dict['video_title'] == '':
+        #     Common.logger(log_type).info('视频标题为空\n')
+        # # 过滤词库(视频标题)
+        # elif any(word if word in video_dict['video_title'] else False for word in cls.filter_words(log_type)) is True:
+        #     Common.logger(log_type).info(f'视频已中过滤词:{video_dict["video_title"]}\n')
+        # # 视频号推荐_已下载表
+        # elif video_dict['video_title'] in [x for y in Feishu.get_values_batch(log_type, 'shipinhao', 'c77cf9') for x in y]:
+        #     Common.logger(log_type).info('视频已下载\n')
+        # # 视频号定向_已下载表
+        # elif video_dict['video_title'] in [x for y in Feishu.get_values_batch(log_type, 'shipinhao', 'XxmRlE') for x in y]:
+        #     Common.logger(log_type).info('视频已下载\n')
+        # # feeds 表去重
+        # elif video_dict['video_title'] in [x for y in Feishu.get_values_batch(log_type, 'shipinhao', 'FSDlBy') for x in y]:
+        #     Common.logger(log_type).info('视频已存在\n')
+        # # feeds 表去重
+        # elif video_dict['video_title'] in [x for y in Feishu.get_values_batch(log_type, 'shipinhao', 'qzDljJ') for x in y]:
+        #     Common.logger(log_type).info('视频已存在\n')
+        # # 分享给 windows 爬虫机
+        # else:
+
+        video_dict['share_id'].click()
+        driver.find_element(By.XPATH, '//*[@text="转发给朋友"]').click()
+        driver.find_element(By.XPATH, '//*[@text="爬虫群"]').click()
+        driver.find_element(By.ID, 'com.tencent.mm:id/guw').click()
+
+        # 把视频信息写入飞书feeds文档
+        Feishu.insert_columns(log_type, 'shipinhao', 'qzDljJ', 'ROWS', 1, 2)
+        get_feeds_time = int(time.time())
+        values = [[time.strftime('%Y/%m/%d %H:%M:%S', time.localtime(get_feeds_time)),
+                   '定向榜',
+                   str(video_dict['video_title']),
+                   int(video_dict['duration']),
+                   int(video_dict['like_cnt']),
+                   int(video_dict['share_cnt']),
+                   int(video_dict['favorite_cnt']),
+                   int(video_dict['comment_cnt']),
+                   str(video_dict['user_name'])]]
+        time.sleep(1)
+        Feishu.update_values(log_type, 'shipinhao', 'qzDljJ', 'A2:Z2', values)
+        Common.logger(log_type).info('视频信息写入飞书文档成功\n')
+
+        while True:
+            if Feishu.get_values_batch(log_type, 'shipinhao', 'qzDljJ')[1][11] is None:
+                Common.logger(log_type).info('等待更新 URL 信息')
+                time.sleep(10)
+            else:
+                Common.logger(log_type).info('URL 信息已更新\n')
+                break
 
-            cls.publish(log_type, env)
+        cls.download_publish(log_type, env)
 
     # 下载 、上传
     @classmethod
-    def publish(cls, log_type, env):
+    def download_publish(cls, log_type, env):
         try:
             follow_feeds_sheet = Feishu.get_values_batch(log_type, 'shipinhao', 'qzDljJ')
             for i in range(1, len(follow_feeds_sheet)):