| 
					
				 | 
			
			
				@@ -0,0 +1,89 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import json 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import time 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import requests 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+from common import Feishu, AliyunLogger 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+from common.sql_help import sqlCollect 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class KSXCX: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @classmethod 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    def get_xcx_date(cls): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        list = [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        try: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            url = "http://8.217.192.46:8889/crawler/kuai_shou_mp/recommend" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            payload = json.dumps({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                "cursor": "" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            headers = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                'Content-Type': 'application/json' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            response = requests.request("POST", url, headers=headers, data=payload) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            response = response.json() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            code = response['code'] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if code == 0: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                data_list = response['data']['data'] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                for data in data_list: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    type = int(data['type']) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if type != 1: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        continue 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    photo_type = data['photoType'] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if photo_type != "VIDEO": 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        continue 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    duration = int(int(data["duration"])/1000) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    cover_url = data['webpCoverUrls'][0]['url'] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    video_url = data['mainMvUrls'][0]['url'] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    like_count = data.get('likeCount', 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    timestamp = data['timestamp'] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    share_count = data.get('shareCount', 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    comment_count = data.get('commentCount', 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    view_count = data.get('viewCount', 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    title = data['caption'] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    photo_id = data['photoId'] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    user_name = data['userName'] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    log_data = f"user:快手小程序,,video_id:{photo_id},,video_url:{video_url},original_title:{title},,share_count:{share_count},,view_count:{view_count},,duration:{duration}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    AliyunLogger.logging("快手小程序", user_name, "快手小程序", photo_id, "扫描到一条视频", "2001", log_data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    status = sqlCollect.ks_is_used_xcx(photo_id,"快手小程序") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if status: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        AliyunLogger.logging("快手小程序", user_name, "快手小程序", photo_id, "该视频已改造过", "2002", log_data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        continue 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if duration <= 30: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        AliyunLogger.logging("快手小程序", user_name, "快手小程序", photo_id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                             f"不符合规则:时长不符合规则小于30秒,视频时长{duration}", "2003", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                             log_data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        continue 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if int(share_count) < 1000: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        AliyunLogger.logging("快手小程序", user_name, "快手小程序", photo_id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                             f"分享小于1000,实际点赞{share_count}", "2003", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                             log_data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        continue 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    video_percent = '%.4f' % (int(share_count) / int(like_count)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if float(video_percent) < 0.15: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        AliyunLogger.logging("快手小程序", user_name, "快手小程序", photo_id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                             f"分享/点赞 < 15%,实际占比{video_percent}", "2003", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                             log_data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        continue 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    all_data = {"video_id": photo_id, "cover": cover_url, "video_url": video_url, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                "rule": video_percent, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                "old_title": title} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if not list and  any(item["video_id"] == all_data["video_id"] for item in list): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        AliyunLogger.logging("快手小程序", user_name, "快手小程序", photo_id, "重复视频", "2002", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                             log_data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        continue 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    list.append(all_data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    AliyunLogger.logging("快手小程序", user_name, "快手小程序", photo_id, "符合规则等待改造", "2004", log_data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return list 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        except Exception as e: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return list 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+if __name__ == '__main__': 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    KSXCX.get_xcx_date() 
			 |