|
@@ -8,35 +8,34 @@ import time
|
|
|
import psutil as psutil
|
|
|
from appium import webdriver
|
|
|
from selenium.webdriver.common.by import By
|
|
|
-
|
|
|
-from common.common import Common
|
|
|
-
|
|
|
sys.path.append(os.getcwd())
|
|
|
+from common.common import Common
|
|
|
|
|
|
|
|
|
-class ShipinhaoWindows:
|
|
|
- @classmethod
|
|
|
- def kill_pid(cls, log_type):
|
|
|
- try:
|
|
|
- os.system('chcp 65001') # 将cmd的显示字符编码从默认的GBK改为UTF-8
|
|
|
- list_process = list()
|
|
|
- pid_list = psutil.pids()
|
|
|
- for sub_pid in pid_list:
|
|
|
- try:
|
|
|
- process_info = psutil.Process(sub_pid)
|
|
|
- if process_info.name() == 'WechatBrowser.exe' or process_info.name() == 'WeChatPlayer.exe':
|
|
|
- list_process.append(sub_pid)
|
|
|
- except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess):
|
|
|
- pass
|
|
|
- for pid in list_process:
|
|
|
- os.system('taskkill /f /pid ' + str(pid))
|
|
|
- except Exception as e:
|
|
|
- Common.logger(log_type).error('kill_pid异常:{}', e)
|
|
|
+class Searchkey:
|
|
|
+ # @classmethod
|
|
|
+ # def kill_pid(cls, log_type):
|
|
|
+ # try:
|
|
|
+ # os.system('chcp 65001') # 将cmd的显示字符编码从默认的GBK改为UTF-8
|
|
|
+ # list_process = list()
|
|
|
+ # pid_list = psutil.pids()
|
|
|
+ # for sub_pid in pid_list:
|
|
|
+ # try:
|
|
|
+ # process_info = psutil.Process(sub_pid)
|
|
|
+ # if process_info.name() == 'WechatBrowser.exe' or process_info.name() == 'WeChatPlayer.exe':
|
|
|
+ # list_process.append(sub_pid)
|
|
|
+ # except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess):
|
|
|
+ # pass
|
|
|
+ # for pid in list_process:
|
|
|
+ # os.system('taskkill /f /pid ' + str(pid))
|
|
|
+ # except Exception as e:
|
|
|
+ # Common.logger(log_type).error('kill_pid异常:{}', e)
|
|
|
|
|
|
@classmethod
|
|
|
- def click_video(cls, log_type, crawler):
|
|
|
+ def start_wechat(cls, log_type, crawler):
|
|
|
try:
|
|
|
- Common.logger(log_type, crawler).info('启动"微信"')
|
|
|
+ # Common.logger(log_type, crawler).info('启动"微信"')
|
|
|
+ print('启动"微信"')
|
|
|
desired_caps = {'app': r"C:\Program Files (x86)\Tencent\WeChat\WeChat.exe"}
|
|
|
driver = webdriver.Remote(
|
|
|
command_executor='http://127.0.0.1:4723',
|
|
@@ -49,121 +48,124 @@ class ShipinhaoWindows:
|
|
|
# Common.logger(log_type).info('点击"爬虫群"')
|
|
|
# driver.find_elements(By.NAME, '爬虫群')[0].click()
|
|
|
|
|
|
- Common.logger(log_type, crawler).info('点击微信指数')
|
|
|
+ # Common.logger(log_type, crawler).info('点击微信指数')
|
|
|
+ print('点击微信指数')
|
|
|
driver.find_elements(By.NAME, '消息')[-1].click()
|
|
|
|
|
|
- Common.logger(log_type, crawler).info('休眠 10 秒,退出微信指数')
|
|
|
- time.sleep(10)
|
|
|
- cls.kill_pid(log_type)
|
|
|
-
|
|
|
- Common.logger(log_type, crawler).info('退出微信')
|
|
|
+ # Common.logger(log_type, crawler).info('休眠 10 秒,退出微信指数')
|
|
|
+ # time.sleep(10)
|
|
|
+ # cls.kill_pid(log_type)
|
|
|
+ print("3秒后退出微信")
|
|
|
+ time.sleep(3)
|
|
|
+ # Common.logger(log_type, crawler).info('退出微信')
|
|
|
driver.quit()
|
|
|
except Exception as e:
|
|
|
Common.logger(log_type, crawler).error('click_video异常:{}', e)
|
|
|
|
|
|
- @classmethod
|
|
|
- def get_url(cls, log_type):
|
|
|
- try:
|
|
|
- # charles 抓包文件保存目录
|
|
|
- charles_file_dir = r"./chlsfiles/"
|
|
|
-
|
|
|
- if len(os.listdir(charles_file_dir)) == 0:
|
|
|
- Common.logger(log_type).info("未找到chlsfile文件,等待2s")
|
|
|
- time.sleep(2)
|
|
|
- else:
|
|
|
- # 目标文件夹下所有文件
|
|
|
- all_file = sorted(os.listdir(charles_file_dir))
|
|
|
-
|
|
|
- # 获取到目标文件
|
|
|
- old_file = all_file[-1]
|
|
|
-
|
|
|
- # 分离文件名与扩展名
|
|
|
- new_file = os.path.splitext(old_file)
|
|
|
-
|
|
|
- # 重命名文件后缀
|
|
|
- os.rename(os.path.join(charles_file_dir, old_file),
|
|
|
- os.path.join(charles_file_dir, new_file[0] + ".txt"))
|
|
|
-
|
|
|
- with open(charles_file_dir + new_file[0] + ".txt", encoding='utf-8-sig', errors='ignore') as f:
|
|
|
- contents = json.load(f, strict=False)
|
|
|
-
|
|
|
- video_url_list = []
|
|
|
- cover_url_list = []
|
|
|
-
|
|
|
- if "finder.video.qq.com" in [text['host'] for text in contents]:
|
|
|
- for text in contents:
|
|
|
- if text["host"] == "finder.video.qq.com" and text["path"] == "/251/20302/stodownload":
|
|
|
- video_url_list.append(text)
|
|
|
- elif text["host"] == "finder.video.qq.com" and text["path"] == "/251/20304/stodownload":
|
|
|
- cover_url_list.append(text)
|
|
|
-
|
|
|
- video_url = video_url_list[0]['host']+video_url_list[0]['path']+'?'+video_url_list[0]['query']
|
|
|
- cover_url = cover_url_list[0]['host']+cover_url_list[0]['path']+'?'+cover_url_list[0]['query']
|
|
|
- head_url = cover_url
|
|
|
-
|
|
|
- # print(f'video_url:{video_url}')
|
|
|
- # print(f'cover_url:{cover_url}')
|
|
|
- # print(f'head_url:{head_url}')
|
|
|
-
|
|
|
- return video_url, cover_url, head_url
|
|
|
- else:
|
|
|
- Common.logger(log_type).info("未找到url")
|
|
|
- return '未找到url'
|
|
|
-
|
|
|
- except Exception as e:
|
|
|
- Common.logger(log_type).exception("get_url异常:{}\n", e)
|
|
|
- return None
|
|
|
-
|
|
|
- @classmethod
|
|
|
- def write_url(cls, log_type):
|
|
|
- try:
|
|
|
- while True:
|
|
|
- if Feishu.get_values_batch(log_type, 'shipinhao', 'FSDlBy')[1][11] is None:
|
|
|
- Common.del_charles_files('recommend')
|
|
|
- cls.click_video(log_type)
|
|
|
- Common.logger(log_type).info('等待 2s')
|
|
|
- time.sleep(2)
|
|
|
- Common.logger(log_type).info('获取视频头像/封面/播放地址')
|
|
|
- urls = cls.get_url(log_type)
|
|
|
- if urls == '未找到url':
|
|
|
- time.sleep(1)
|
|
|
- cls.write_url(log_type)
|
|
|
- elif urls is None:
|
|
|
- time.sleep(1)
|
|
|
- cls.write_url(log_type)
|
|
|
- else:
|
|
|
- Feishu.update_values(log_type, 'shipinhao', 'FSDlBy', 'J2:L2',
|
|
|
- [['https://'+urls[2], 'https://'+urls[1], 'https://'+urls[0]]])
|
|
|
- Common.logger(log_type).info('视频地址信息写入飞书成功\n')
|
|
|
- Common.del_charles_files('recommend')
|
|
|
- break
|
|
|
- else:
|
|
|
- Common.logger(log_type).info('视频已有地址信息,休眠 10s')
|
|
|
- time.sleep(10)
|
|
|
- break
|
|
|
- except Exception as e:
|
|
|
- # Feishu.dimension_range(log_type, 'shipinhao', 'FSDlBy', 'ROWS', 2, 2)
|
|
|
- Common.logger(log_type).error('write_url异常:{}\n', e)
|
|
|
-
|
|
|
- @classmethod
|
|
|
- def run_get_url(cls, log_type):
|
|
|
- try:
|
|
|
- while True:
|
|
|
- if len(Feishu.get_values_batch(log_type, 'shipinhao', 'FSDlBy')) == 1:
|
|
|
- Common.logger(log_type).info('暂无需要获取地址的视频信息')
|
|
|
- time.sleep(30)
|
|
|
- break
|
|
|
- else:
|
|
|
- cls.write_url(log_type)
|
|
|
-
|
|
|
- except Exception as e:
|
|
|
- Common.logger(log_type).error('run_get_url异常:{}\n', e)
|
|
|
+ # @classmethod
|
|
|
+ # def get_url(cls, log_type):
|
|
|
+ # try:
|
|
|
+ # # charles 抓包文件保存目录
|
|
|
+ # charles_file_dir = r"./chlsfiles/"
|
|
|
+ #
|
|
|
+ # if len(os.listdir(charles_file_dir)) == 0:
|
|
|
+ # Common.logger(log_type).info("未找到chlsfile文件,等待2s")
|
|
|
+ # time.sleep(2)
|
|
|
+ # else:
|
|
|
+ # # 目标文件夹下所有文件
|
|
|
+ # all_file = sorted(os.listdir(charles_file_dir))
|
|
|
+ #
|
|
|
+ # # 获取到目标文件
|
|
|
+ # old_file = all_file[-1]
|
|
|
+ #
|
|
|
+ # # 分离文件名与扩展名
|
|
|
+ # new_file = os.path.splitext(old_file)
|
|
|
+ #
|
|
|
+ # # 重命名文件后缀
|
|
|
+ # os.rename(os.path.join(charles_file_dir, old_file),
|
|
|
+ # os.path.join(charles_file_dir, new_file[0] + ".txt"))
|
|
|
+ #
|
|
|
+ # with open(charles_file_dir + new_file[0] + ".txt", encoding='utf-8-sig', errors='ignore') as f:
|
|
|
+ # contents = json.load(f, strict=False)
|
|
|
+ #
|
|
|
+ # video_url_list = []
|
|
|
+ # cover_url_list = []
|
|
|
+ #
|
|
|
+ # if "finder.video.qq.com" in [text['host'] for text in contents]:
|
|
|
+ # for text in contents:
|
|
|
+ # if text["host"] == "finder.video.qq.com" and text["path"] == "/251/20302/stodownload":
|
|
|
+ # video_url_list.append(text)
|
|
|
+ # elif text["host"] == "finder.video.qq.com" and text["path"] == "/251/20304/stodownload":
|
|
|
+ # cover_url_list.append(text)
|
|
|
+ #
|
|
|
+ # video_url = video_url_list[0]['host']+video_url_list[0]['path']+'?'+video_url_list[0]['query']
|
|
|
+ # cover_url = cover_url_list[0]['host']+cover_url_list[0]['path']+'?'+cover_url_list[0]['query']
|
|
|
+ # head_url = cover_url
|
|
|
+ #
|
|
|
+ # # print(f'video_url:{video_url}')
|
|
|
+ # # print(f'cover_url:{cover_url}')
|
|
|
+ # # print(f'head_url:{head_url}')
|
|
|
+ #
|
|
|
+ # return video_url, cover_url, head_url
|
|
|
+ # else:
|
|
|
+ # Common.logger(log_type).info("未找到url")
|
|
|
+ # return '未找到url'
|
|
|
+ #
|
|
|
+ # except Exception as e:
|
|
|
+ # Common.logger(log_type).exception("get_url异常:{}\n", e)
|
|
|
+ # return None
|
|
|
+
|
|
|
+ # @classmethod
|
|
|
+ # def write_url(cls, log_type):
|
|
|
+ # try:
|
|
|
+ # while True:
|
|
|
+ # if Feishu.get_values_batch(log_type, 'shipinhao', 'FSDlBy')[1][11] is None:
|
|
|
+ # Common.del_charles_files('recommend')
|
|
|
+ # cls.start_wechat(log_type)
|
|
|
+ # Common.logger(log_type).info('等待 2s')
|
|
|
+ # time.sleep(2)
|
|
|
+ # Common.logger(log_type).info('获取视频头像/封面/播放地址')
|
|
|
+ # urls = cls.get_url(log_type)
|
|
|
+ # if urls == '未找到url':
|
|
|
+ # time.sleep(1)
|
|
|
+ # cls.write_url(log_type)
|
|
|
+ # elif urls is None:
|
|
|
+ # time.sleep(1)
|
|
|
+ # cls.write_url(log_type)
|
|
|
+ # else:
|
|
|
+ # Feishu.update_values(log_type, 'shipinhao', 'FSDlBy', 'J2:L2',
|
|
|
+ # [['https://'+urls[2], 'https://'+urls[1], 'https://'+urls[0]]])
|
|
|
+ # Common.logger(log_type).info('视频地址信息写入飞书成功\n')
|
|
|
+ # Common.del_charles_files('recommend')
|
|
|
+ # break
|
|
|
+ # else:
|
|
|
+ # Common.logger(log_type).info('视频已有地址信息,休眠 10s')
|
|
|
+ # time.sleep(10)
|
|
|
+ # break
|
|
|
+ # except Exception as e:
|
|
|
+ # # Feishu.dimension_range(log_type, 'shipinhao', 'FSDlBy', 'ROWS', 2, 2)
|
|
|
+ # Common.logger(log_type).error('write_url异常:{}\n', e)
|
|
|
+
|
|
|
+ # @classmethod
|
|
|
+ # def run_get_url(cls, log_type):
|
|
|
+ # try:
|
|
|
+ # while True:
|
|
|
+ # if len(Feishu.get_values_batch(log_type, 'shipinhao', 'FSDlBy')) == 1:
|
|
|
+ # Common.logger(log_type).info('暂无需要获取地址的视频信息')
|
|
|
+ # time.sleep(30)
|
|
|
+ # break
|
|
|
+ # else:
|
|
|
+ # cls.write_url(log_type)
|
|
|
+ #
|
|
|
+ # except Exception as e:
|
|
|
+ # Common.logger(log_type).error('run_get_url异常:{}\n', e)
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
- while True:
|
|
|
- ShipinhaoWindows.run_get_url('recommend')
|
|
|
- Common.del_logs('recommend')
|
|
|
- time.sleep(1)
|
|
|
+ Searchkey.start_wechat('weixin', 'weixinzhishu')
|
|
|
+ # while True:
|
|
|
+ # ShipinhaoWindows.run_get_url('recommend')
|
|
|
+ # Common.del_logs('recommend')
|
|
|
+ # time.sleep(1)
|
|
|
|
|
|
pass
|