11
11
import os
12
12
import re
13
13
import time
14
- from urllib import parse
15
14
16
15
import requests
17
- import requests_html
18
16
19
17
from downloader import Downloader
20
18
@@ -132,6 +130,7 @@ def get_data(self, api_post_url, max_cursor):
132
130
Downloader .print_ui ('[ 用户 ]:' + str (self .nickname ) + '\r ' )
133
131
max_cursor = html ['max_cursor' ]
134
132
result = html ['aweme_list' ]
133
+ self .count = len (result )
135
134
Downloader .print_ui ('----抓获数据成功----\r ' )
136
135
137
136
# 处理第一页视频信息
@@ -150,7 +149,8 @@ def next_data(self, max_cursor):
150
149
return
151
150
user_url = self .user
152
151
# 获取用户sec_uid
153
- key = re .findall ('/user/(.*?)\?' , str (user_url ))[0 ]
152
+ # key = re.findall('/user/(.*?)\?', str(user_url))[0]
153
+ key = re .findall ('/user/(.*?)$' , str (user_url ))[0 ]
154
154
if not key :
155
155
key = user_url [28 :83 ]
156
156
@@ -165,20 +165,22 @@ def next_data(self, max_cursor):
165
165
self .end = True
166
166
return
167
167
index += 1
168
- Downloader .print_ui ('----正在对' + max_cursor + '页进行第 %d 次尝试----\r ' % index )
168
+ # Downloader.print_ui('----正在对' + max_cursor + '页进行第 %d 次尝试----\r' % index)
169
+ Downloader .print_ui ('----正在对{}页进行第 {} 次尝试----\r ' .format (max_cursor , index ))
169
170
time .sleep (0.3 )
170
171
response = requests .get (url = api_naxt_post_url , headers = self .headers )
171
172
html = json .loads (response .content .decode ())
172
173
if self .end == False :
173
174
# 下一页值
174
175
max_cursor = html ['max_cursor' ]
175
176
result = html ['aweme_list' ]
176
- Downloader .print_ui ('----' + max_cursor + '页抓获数据成功----\r ' )
177
+ self .count = len (result )
178
+ Downloader .print_ui ('----{}页抓获数据成功----\r ' .format (max_cursor ))
177
179
# 处理下一页视频信息
178
180
self .video_info (result , max_cursor )
179
181
else :
180
- self .end == True
181
- Downloader .print_ui ('----' + max_cursor + ' 页抓获数据失败----\r ' )
182
+ self .end = True
183
+ Downloader .print_ui ('----{} 页抓获数据失败----\r ' . format ( max_cursor ) )
182
184
# sys.exit()
183
185
184
186
# 处理视频信息
@@ -224,40 +226,47 @@ def videos_download(self, count, author_list, video_list, aweme_id, nickname, ma
224
226
except :
225
227
pass
226
228
Downloader .add_downloading_count ()
227
- try :
228
- jx_url = f'https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids={ aweme_id [i ]} ' # 官方接口
229
- js = json .loads (requests .get (url = jx_url , headers = self .headers ).text )
230
- music_url = str (js ['item_list' ][0 ]['music' ]['play_url' ]['url_list' ][0 ])
231
- music_title = str (js ['item_list' ][0 ]['music' ]['author' ])
232
- if self .musicarg == "yes" : # 保留音频
233
- music = requests .get (music_url ) # 保存音频
234
- start = time .time () # 下载开始时间
235
- size = 0 # 初始化已下载大小
236
- chunk_size = 1024 # 每次下载的数据大小
237
- content_size = int (music .headers ['content-length' ]) # 下载文件总大小
238
- if music .status_code == 200 : # 判断是否响应成功
239
- Downloader .print_ui ('[ 音频 ]:' + author_list [i ] + '[文件 大小]:{size:.2f} MB' .format (
240
- size = content_size / chunk_size / 1024 )) # 开始下载,显示下载文件大小
241
- # m_url = pre_save + music_title + '-[' + author_list[i] + '].mp3'
242
- m_url = os .path .join (pre_save ,
243
- nickname [i ] + "-" + music_title + '-[' + author_list [i ] + '].mp3' )
244
- Downloader .print_ui ("路径:" + m_url )
245
- with open (m_url , 'wb' ) as file : # 显示进度条
246
- for data in music .iter_content (chunk_size = chunk_size ):
247
- file .write (data )
248
- size += len (data )
249
- Downloader .print_ui ('\r ' + music_title + '\n [下载进度]:%s%.2f%%' % (
250
- '>' * int (size * 50 / content_size ), float (size / content_size * 100 )))
251
- end = time .time () # 下载结束时间
252
- Downloader .print_ui ('\n ' + music_title + '\n [下载完成]:耗时: %.2f秒\n ' % (end - start )) # 输出下载用时时间
253
- Downloader .add_success_count ()
254
- except Exception as error :
255
- # Downloader.print_ui2(error)
256
- Downloader .print_ui ('该页音频没有' + str (self .count ) + '个,已为您跳过 \r ' )
257
- Downloader .add_failed_count ()
258
- break
229
+ # try:
230
+ # jx_url = f'https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids={aweme_id[i]}' # 官方接口
231
+ # js = json.loads(requests.get(url=jx_url, headers=self.headers).text)
232
+ # music_url = str(js['item_list'][0]['music']['play_url']['url_list'][0])
233
+ # music_title = str(js['item_list'][0]['music']['author'])
234
+ # if self.musicarg == "yes": # 保留音频
235
+ # music = requests.get(music_url) # 保存音频
236
+ # start = time.time() # 下载开始时间
237
+ # size = 0 # 初始化已下载大小
238
+ # chunk_size = 1024 # 每次下载的数据大小
239
+ # content_size = int(music.headers['content-length']) # 下载文件总大小
240
+ # if music.status_code == 200: # 判断是否响应成功
241
+ # Downloader.print_ui('[ 音频 ]:' + author_list[i] + '[文件 大小]:{size:.2f} MB'.format(
242
+ # size=content_size / chunk_size / 1024)) # 开始下载,显示下载文件大小
243
+ # # m_url = pre_save + music_title + '-[' + author_list[i] + '].mp3'
244
+ # m_url = os.path.join(pre_save,
245
+ # nickname[i] + "-" + music_title + '-[' + author_list[i] + '].mp3')
246
+ # Downloader.print_ui("路径:" + m_url)
247
+ # with open(m_url, 'wb') as file: # 显示进度条
248
+ # for data in music.iter_content(chunk_size=chunk_size):
249
+ # file.write(data)
250
+ # size += len(data)
251
+ # Downloader.print_ui('\r' + music_title + '\n[下载进度]:%s%.2f%%' % (
252
+ # '>' * int(size * 50 / content_size), float(size / content_size * 100)))
253
+ # end = time.time() # 下载结束时间
254
+ # Downloader.print_ui('\n' + music_title + '\n[下载完成]:耗时: %.2f秒\n' % (end - start)) # 输出下载用时时间
255
+ # Downloader.add_success_count()
256
+ # except Exception as error:
257
+ # # Downloader.print_ui2(error)
258
+ # Downloader.print_ui('该页音频没有' + str(self.count) + '个\r')
259
+ # # Downloader.add_failed_count()
260
+ # # break
259
261
260
262
try :
263
+ v_url = os .path .join (pre_save , nickname [i ] + "-" + '[' + author_list [i ] + '].mp4' )
264
+ # 如果本地已经有了就跳过
265
+ if os .path .exists (v_url ):
266
+ Downloader .print_ui ('{}-已存在!' .format (v_url ))
267
+ Downloader .add_success_count ()
268
+ continue
269
+
261
270
video = requests .get (video_list [i ], headers = self .headers ) # 保存视频
262
271
start = time .time () # 下载开始时间
263
272
size = 0 # 初始化已下载大小
@@ -267,7 +276,7 @@ def videos_download(self, count, author_list, video_list, aweme_id, nickname, ma
267
276
Downloader .print_ui (
268
277
'[ 视频 ]:' + nickname [i ] + '-' + author_list [i ] + '[文件 大小]:{size:.2f} MB' .format (
269
278
size = content_size / 1024 / 1024 )) # 开始下载,显示下载文件大小
270
- v_url = os .path .join (pre_save , nickname [i ] + "-" + '[' + author_list [i ] + '].mp4' )
279
+ # v_url = os.path.join(pre_save, nickname[i] + "-" + '[' + author_list[i] + '].mp4')
271
280
# v_url = pre_save + '[' + author_list[i] + '].mp4'
272
281
Downloader .print_ui ("路径:" + v_url )
273
282
with open (v_url , 'wb' ) as file : # 显示进度条
0 commit comments