| 
					
				 | 
			
			
				@@ -73,81 +73,81 @@ class Person: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         else: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return False 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    # 从小程序中,关注用户列表同步至云文档 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @classmethod 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    def get_sub_or_fans_list(cls, log_type): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        try: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            follow_list = [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            follow_sheet = Feishu.get_values_batch(log_type, "xiaoniangao", "oNpThi") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            url = "https://api.xiaoniangao.cn/account/get_sub_or_fans_list" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            headers = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                "X-Mid": str(cls.follow_x_mid), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                "X-Token-Id": str(cls.follow_x_token_id), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                "content-type": "application/json", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                "uuid": str(cls.follow_uid), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                "Accept-Encoding": "gzip,compress,br,deflate", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X)" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                              " AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                              "MicroMessenger/8.0.20(0x18001435) NetType/WIFI Language/zh_CN", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                "Referer": str(cls.follow_referer) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            json_text = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                "visited_mid": str(cls.follow_x_mid), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                "start_t": cls.wechat_follow_start_t, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                "limit": 20, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                "h_qs": "imageMogr2/gravity/center/rotate/$/thumbnail/!84x84r/crop/84x84/interlace/1/format/jpg", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                "type": 1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                "token": str(cls.follow_token), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                "uid": str(cls.follow_uid), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                "proj": "ma", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                "wx_ver": "8.0.23", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                "code_ver": "3.68.0", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                "log_common_params": { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    "e": [{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        "data": { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            "page": "followFansPage" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    }], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    "ext": { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        "brand": "iPhone", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        "device": "iPhone 11", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        "os": "iOS 14.7.1", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        "weixinver": "8.0.23", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        "srcver": "2.24.7", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        "net": "wifi", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        "scene": "1089" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    "pj": "1", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    "pf": "2", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    "session_id": "7468cf52-00ea-432e-8505-6ea3ad7ec164" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            r = requests.post(url=url, headers=headers, json=json_text, proxies=proxies, verify=False) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if "data" not in r.json(): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                Common.logger(log_type).warning("从小程序中获取关注用户列表:{}", r.text) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            else: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                users = r.json()["data"]["list"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                for i in range(len(users)): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    profile_mid = users[i]["mid"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    nick = users[i]["nick"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    follow_list.append(profile_mid) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    # 同步已关注的用户至云文档 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    if profile_mid not in [j for i in follow_sheet for j in i]: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        Feishu.insert_columns(log_type, "xiaoniangao", "oNpThi", "ROWS", 1, 2) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        time.sleep(1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        values = [[profile_mid, nick]] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        Feishu.update_values(log_type, "xiaoniangao", "oNpThi", "B2:C2", values) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    else: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        Common.logger(log_type).info("用户:{},在云文档中已存在", nick) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            cls.wechat_follow_start_t = r.json()["data"]["next_t"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            # 翻页,直至到底了 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if cls.wechat_follow_start_t != 0: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                cls.get_sub_or_fans_list(log_type) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            else: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                Common.logger(log_type).info("从小程序中同步关注用户至云文档完成\n") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            return follow_list 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        except Exception as e: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Common.logger(log_type).error("从小程序中,关注用户列表同步至云文档异常:{}", e) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # # 从小程序中,关注用户列表同步至云文档 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # @classmethod 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # def get_sub_or_fans_list(cls, log_type): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #     try: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #         follow_list = [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #         follow_sheet = Feishu.get_values_batch(log_type, "xiaoniangao", "oNpThi") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #         url = "https://api.xiaoniangao.cn/account/get_sub_or_fans_list" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #         headers = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #             "X-Mid": str(cls.follow_x_mid), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #             "X-Token-Id": str(cls.follow_x_token_id), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #             "content-type": "application/json", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #             "uuid": str(cls.follow_uid), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #             "Accept-Encoding": "gzip,compress,br,deflate", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #             "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X)" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #                           " AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #                           "MicroMessenger/8.0.20(0x18001435) NetType/WIFI Language/zh_CN", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #             "Referer": str(cls.follow_referer) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #         json_text = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #             "visited_mid": str(cls.follow_x_mid), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #             "start_t": cls.wechat_follow_start_t, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #             "limit": 20, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #             "h_qs": "imageMogr2/gravity/center/rotate/$/thumbnail/!84x84r/crop/84x84/interlace/1/format/jpg", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #             "type": 1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #             "token": str(cls.follow_token), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #             "uid": str(cls.follow_uid), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #             "proj": "ma", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #             "wx_ver": "8.0.23", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #             "code_ver": "3.68.0", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #             "log_common_params": { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #                 "e": [{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #                     "data": { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #                         "page": "followFansPage" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #                     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #                 }], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #                 "ext": { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #                     "brand": "iPhone", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #                     "device": "iPhone 11", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #                     "os": "iOS 14.7.1", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #                     "weixinver": "8.0.23", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #                     "srcver": "2.24.7", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #                     "net": "wifi", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #                     "scene": "1089" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #                 }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #                 "pj": "1", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #                 "pf": "2", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #                 "session_id": "7468cf52-00ea-432e-8505-6ea3ad7ec164" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #         r = requests.post(url=url, headers=headers, json=json_text, proxies=proxies, verify=False) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #         if "data" not in r.json(): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #             Common.logger(log_type).warning("从小程序中获取关注用户列表:{}", r.text) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #         else: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #             users = r.json()["data"]["list"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #             for i in range(len(users)): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #                 profile_mid = users[i]["mid"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #                 nick = users[i]["nick"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #                 follow_list.append(profile_mid) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #                 # 同步已关注的用户至云文档 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #                 if profile_mid not in [j for i in follow_sheet for j in i]: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #                     Feishu.insert_columns(log_type, "xiaoniangao", "oNpThi", "ROWS", 1, 2) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #                     time.sleep(1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #                     values = [[profile_mid, nick]] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #                     Feishu.update_values(log_type, "xiaoniangao", "oNpThi", "B2:C2", values) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #                 else: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #                     Common.logger(log_type).info("用户:{},在云文档中已存在", nick) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #         cls.wechat_follow_start_t = r.json()["data"]["next_t"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #         # 翻页,直至到底了 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #         if cls.wechat_follow_start_t != 0: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #             cls.get_sub_or_fans_list(log_type) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #         else: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #             Common.logger(log_type).info("从小程序中同步关注用户至云文档完成\n") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #         return follow_list 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #     except Exception as e: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    #         Common.logger(log_type).error("从小程序中,关注用户列表同步至云文档异常:{}", e) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     # 从云文档获取关注用户列表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @classmethod 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -557,7 +557,8 @@ class Person: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     def get_videos_from_follow(cls, log_type): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         try: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             # 已关注的用户列表 mids 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            profile_mids = cls.get_sub_or_fans_list(log_type) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            profile_mids = cls.get_follow_users(log_type) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            # Common.logger(log_type).info('profile_mids:{}', profile_mids) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             for profile_mid in profile_mids: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 Common.logger(log_type).info("获取用户:{}主页视频\n", profile_mid) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 cls.get_videos_from_person(log_type, profile_mid) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -713,6 +714,5 @@ class Person: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 if __name__ == "__main__": 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     person = Person() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    person.download_publish("person", "prod") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    person.get_videos_from_follow('person') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     pass 
			 |