MCPcopy
hub / github.com/Jack-Cherish/python-spider / DouYin

Class DouYin

douyin_pro.py:8–154  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

6from bs4 import BeautifulSoup
7
8class DouYin(object):
9 def __init__(self, width = 500, height = 300):
10 """
11 抖音App视频下载
12 """
13 # 无头浏览器
14 chrome_options = Options()
15 chrome_options.add_argument('user-agent="Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"')
16 self.driver = Browser(driver_name='chrome', executable_path='D:/chromedriver', options=chrome_options, headless=True)
17
18 def get_video_urls(self, user_id):
19 """
20 获得视频播放地址
21 Parameters:
22 user_id:查询的用户ID
23 Returns:
24 video_names: 视频名字列表
25 video_urls: 视频链接列表
26 nickname: 用户昵称
27 """
28 video_names = []
29 video_urls = []
30 unique_id = ''
31 while unique_id != user_id:
32 search_url = 'https://api.amemv.com/aweme/v1/discover/search/?cursor=0&keyword=%s&count=10&type=1&retry_type=no_retry&iid=17900846586&device_id=34692364855&ac=wifi&channel=xiaomi&aid=1128&app_name=aweme&version_code=162&version_name=1.6.2&device_platform=android&ssmix=a&device_type=MI+5&device_brand=Xiaomi&os_api=24&os_version=7.0&uuid=861945034132187&openudid=dc451556fc0eeadb&manifest_version_code=162&resolution=1080*1920&dpi=480&update_version_code=1622' % user_id
33 req = requests.get(url = search_url, verify = False)
34 html = json.loads(req.text)
35 aweme_count = html['user_list'][0]['user_info']['aweme_count']
36 uid = html['user_list'][0]['user_info']['uid']
37 nickname = html['user_list'][0]['user_info']['nickname']
38 unique_id = html['user_list'][0]['user_info']['unique_id']
39 user_url = 'https://www.douyin.com/aweme/v1/aweme/post/?user_id=%s&max_cursor=0&count=%s' % (uid, aweme_count)
40 req = requests.get(url = user_url, verify = False)
41 html = json.loads(req.text)
42 i = 1
43 for each in html['aweme_list']:
44 share_desc = each['share_info']['share_desc']
45 if '抖音-原创音乐短视频社区' == share_desc:
46 video_names.append(str(i) + '.mp4')
47 i += 1
48 else:
49 video_names.append(share_desc + '.mp4')
50 video_urls.append(each['share_info']['share_url'])
51
52 return video_names, video_urls, nickname
53
54 def get_download_url(self, video_url):
55 """
56 获得带水印的视频播放地址
57 Parameters:
58 video_url:带水印的视频播放地址
59 Returns:
60 download_url: 带水印的视频下载地址
61 """
62 req = requests.get(url = video_url, verify = False)
63 bf = BeautifulSoup(req.text, 'lxml')
64 script = bf.find_all('script')[-1]
65 video_url_js = re.findall('var data = \[(.+)\];', str(script))[0]

Callers 1

douyin_pro.pyFile · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected