123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- # -*- coding: utf-8 -*-
- # @Author: wangkun
- # @Time: 2022/9/1
- import json
- import os
- import sys
- import time
- # import atomacos
- from appium import webdriver
- from selenium.webdriver.common.by import By
- sys.path.append(os.getcwd())
- # from crawler_shipinhao.main.common import Common
- # from crawler_shipinhao.main.feishu_lib import Feishu
- from main.feishu_lib import Feishu
- from main.common import Common
- class GetUrl:
- @classmethod
- def click_video(cls, log_type, video_title):
- Common.logger(log_type).info('启动"微信"')
- desired_caps = {'app': r"C:\Program Files (x86)\Tencent\WeChat\WeChat.exe"}
- driver = webdriver.Remote(
- command_executor='http://127.0.0.1:4723',
- desired_capabilities=desired_caps)
- driver.implicitly_wait(10)
- Common.logger(log_type).info('点击"聊天窗口"')
- print('点击"聊天窗口"')
- driver.find_element(By.NAME, '聊天').click()
- Common.logger(log_type).info('点击"爬虫群"')
- print('点击"爬虫群"')
- driver.find_element(By.NAME, '爬虫群').click()
- Common.logger(log_type).info('点击视频:{}', video_title)
- print(f'点击视频{video_title}')
- driver.find_element(By.ID, '42.852020.3.1017').click()
- # driver.find_element(By.NAME, video_title[:10]).click()
- # els = driver.find_elements(By.TAG_NAME, '按钮')
- # print(len(els))
- time.sleep(5)
- print('退出')
- driver.quit()
- @classmethod
- def get_url(cls, log_type):
- try:
- # charles 抓包文件保存目录
- # charles_file_dir = r"./crawler_kanyikan_recommend/chlsfiles/"
- charles_file_dir = r"./chlsfiles/"
- if int(len(os.listdir(charles_file_dir))) == 1:
- Common.logger(log_type).info("未找到chlsfile文件,等待60s")
- time.sleep(60)
- 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
- return video_url, cover_url, head_url
- else:
- Common.logger(log_type).info("未找到 url,10s后重新获取")
- time.sleep(10)
- cls.get_url(log_type)
- except Exception as e:
- Common.logger(log_type).exception("get_url异常:{}", e)
- return None
- @classmethod
- def write_url(cls, log_type):
- while True:
- if Feishu.get_values_batch(log_type, 'shipinhao', 'FSDlBy')[1][11] is None:
- # Common.logger(log_type).info('开始点击分享的视频')
- print(f"开始点击分享的视频:{Feishu.get_values_batch(log_type, 'shipinhao', 'FSDlBy')[1][2]}")
- cls.click_video(log_type, Feishu.get_values_batch(log_type, 'shipinhao', 'FSDlBy')[1][2])
- time.sleep(60)
- Common.logger(log_type).info('获取视频头像/封面/播放地址')
- print('获取视频头像/封面/播放地址')
- urls = cls.get_url(log_type)
- Feishu.update_values(log_type, 'shipinhao', '', 'J2:L2', [[urls[2], urls[1], urls[0]]])
- Common.logger(log_type).info('视频地址信息写入飞书成功\n')
- break
- else:
- break
- if __name__ == '__main__':
- GetUrl.write_url('recommend')
|