mirror of
https://github.com/imgyh/tiktok.git
synced 2025-05-30 05:09:17 +08:00
feat(tiktok): 增加下载前n个作品功能
This commit is contained in:
parent
7cb1c4be5c
commit
4efeb62701
52
TikTok.py
52
TikTok.py
@ -136,10 +136,14 @@ class TikTok(object):
|
||||
|
||||
# 传入 url 支持 https://www.iesdouyin.com 与 https://v.douyin.com
|
||||
# mode : post | like 模式选择 like为用户点赞 post为用户发布
|
||||
def getUserInfo(self, sec_uid, mode="post", count=35):
|
||||
def getUserInfo(self, sec_uid, mode="post", count=35, number=0):
|
||||
print('[ 提示 ]:正在请求的用户 id = %s\r\n' % sec_uid)
|
||||
if sec_uid is None:
|
||||
return None
|
||||
if number <= 0:
|
||||
numflag = False
|
||||
else:
|
||||
numflag = True
|
||||
|
||||
max_cursor = 0
|
||||
awemeList = []
|
||||
@ -178,6 +182,13 @@ class TikTok(object):
|
||||
# 深拷贝 dict 不然list里面全是同样的数据
|
||||
datanew, dataraw = self.getAwemeInfo(aweme_id)
|
||||
awemeList.append(copy.deepcopy(datanew))
|
||||
if numflag:
|
||||
number-=1
|
||||
if number==0:
|
||||
break
|
||||
if numflag and number==0:
|
||||
print("\r\n[ 提示 ]: [主页] 下指定数量作品数据获取完成...\r\n")
|
||||
break
|
||||
|
||||
# 更新 max_cursor
|
||||
max_cursor = datadict["max_cursor"]
|
||||
@ -266,10 +277,14 @@ class TikTok(object):
|
||||
print('[ 📺 ]:复制链接使用下载工具下载')
|
||||
return self.result.liveDict
|
||||
|
||||
def getMixInfo(self, mix_id: str, count=35):
|
||||
def getMixInfo(self, mix_id: str, count=35, number=0):
|
||||
print('[ 提示 ]:正在请求的合集 id = %s\r\n' % mix_id)
|
||||
if mix_id is None:
|
||||
return None
|
||||
if number <= 0:
|
||||
numflag = False
|
||||
else:
|
||||
numflag = True
|
||||
|
||||
cursor = 0
|
||||
awemeList = []
|
||||
@ -302,6 +317,13 @@ class TikTok(object):
|
||||
# 深拷贝 dict 不然list里面全是同样的数据
|
||||
datanew, dataraw = self.getAwemeInfo(aweme_id)
|
||||
awemeList.append(copy.deepcopy(datanew))
|
||||
if numflag:
|
||||
number -= 1
|
||||
if number == 0:
|
||||
break
|
||||
if numflag and number == 0:
|
||||
print("\r\n[ 提示 ]:[合集] 下指定数量作品数据获取完成...\r\n")
|
||||
break
|
||||
|
||||
# 更新 max_cursor
|
||||
cursor = datadict["cursor"]
|
||||
@ -315,10 +337,14 @@ class TikTok(object):
|
||||
|
||||
return awemeList
|
||||
|
||||
def getUserAllMixInfo(self, sec_uid, count=35):
|
||||
def getUserAllMixInfo(self, sec_uid, count=35, number=0):
|
||||
print('[ 提示 ]:正在请求的用户 id = %s\r\n' % sec_uid)
|
||||
if sec_uid is None:
|
||||
return None
|
||||
if number <= 0:
|
||||
numflag = False
|
||||
else:
|
||||
numflag = True
|
||||
|
||||
cursor = 0
|
||||
mixIdNameDict = {}
|
||||
@ -347,6 +373,13 @@ class TikTok(object):
|
||||
|
||||
for mix in datadict["mix_infos"]:
|
||||
mixIdNameDict[mix["mix_id"]] = mix["mix_name"]
|
||||
if numflag:
|
||||
number -= 1
|
||||
if number == 0:
|
||||
break
|
||||
if numflag and number == 0:
|
||||
print("\r\n[ 提示 ]:[合集列表] 下指定数量合集数据获取完成...\r\n")
|
||||
break
|
||||
|
||||
# 更新 max_cursor
|
||||
cursor = datadict["cursor"]
|
||||
@ -360,10 +393,14 @@ class TikTok(object):
|
||||
|
||||
return mixIdNameDict
|
||||
|
||||
def getMusicInfo(self, music_id: str, count=35):
|
||||
def getMusicInfo(self, music_id: str, count=35, number=0):
|
||||
print('[ 提示 ]:正在请求的音乐集合 id = %s\r\n' % music_id)
|
||||
if music_id is None:
|
||||
return None
|
||||
if number <= 0:
|
||||
numflag = False
|
||||
else:
|
||||
numflag = True
|
||||
|
||||
cursor = 0
|
||||
awemeList = []
|
||||
@ -396,6 +433,13 @@ class TikTok(object):
|
||||
# 深拷贝 dict 不然list里面全是同样的数据
|
||||
datanew, dataraw = self.getAwemeInfo(aweme_id)
|
||||
awemeList.append(copy.deepcopy(datanew))
|
||||
if numflag:
|
||||
number -= 1
|
||||
if number == 0:
|
||||
break
|
||||
if numflag and number == 0:
|
||||
print("\r\n[ 提示 ]:[音乐集合] 下指定数量作品数据获取完成...\r\n")
|
||||
break
|
||||
|
||||
# 更新 cursor
|
||||
cursor = datadict["cursor"]
|
||||
|
@ -23,7 +23,7 @@ from TikTokUtils import Utils
|
||||
def argument():
|
||||
parser = argparse.ArgumentParser(description='抖音批量下载工具 使用帮助')
|
||||
parser.add_argument("--link", "-l",
|
||||
help="1.作品(视频或图集)、合集、个人主页抖音分享链接(删除文案, 保证只有URL, https://v.douyin.com/kcvMpuN/)\r\n"
|
||||
help="1.作品(视频或图集)、合集、音乐集合、个人主页抖音分享链接(删除文案, 保证只有URL, https://v.douyin.com/kcvMpuN/)\r\n" +
|
||||
"2.解析直播网页版网址(https://live.douyin.com/802939216127)",
|
||||
type=str, required=True)
|
||||
parser.add_argument("--path", "-p", help="下载保存位置",
|
||||
@ -36,6 +36,10 @@ def argument():
|
||||
type=Utils().str2bool, required=False, default=True)
|
||||
parser.add_argument("--mode", "-M", help="link是个人主页时, 设置下载发布的作品(post)或喜欢的作品(like)或者用户所有合集(mix), 默认为post",
|
||||
type=str, required=False, default="post")
|
||||
parser.add_argument("--number", "-n",
|
||||
help="1.当下载单个合集、音乐集合、主页作品(post模式)和喜欢(like模式)时, 可设置下载前n个作品, 默认为0全部下载\r\n" +
|
||||
"2.当下载主页下所有合集(mix模式)时, 设置下载前n个合集下所有作品, 默认为0全部下载",
|
||||
type=int, required=False, default=0)
|
||||
args = parser.parse_args()
|
||||
|
||||
return args
|
||||
@ -50,13 +54,13 @@ def main():
|
||||
if key is None or key_type is None:
|
||||
return
|
||||
elif key_type == "user" and args.mode != 'mix':
|
||||
datalist = tk.getUserInfo(key, args.mode, 35)
|
||||
datalist = tk.getUserInfo(key, args.mode, 35, args.number)
|
||||
tk.userDownload(awemeList=datalist, music=args.music, cover=args.cover, avatar=args.avatar,
|
||||
savePath=args.path)
|
||||
elif key_type == "user" and args.mode == 'mix':
|
||||
if not os.path.exists(args.path):
|
||||
os.mkdir(args.path)
|
||||
mixIdNameDict = tk.getUserAllMixInfo(key, 35)
|
||||
mixIdNameDict = tk.getUserAllMixInfo(key, 35, args.number)
|
||||
|
||||
for mix_id in mixIdNameDict:
|
||||
print(f'[ 提示 ]:正在下载合集 [{mixIdNameDict[mix_id]}] 中的作品\r\n')
|
||||
@ -66,11 +70,11 @@ def main():
|
||||
savePath=os.path.join(args.path, mix_file_name))
|
||||
print(f'[ 提示 ]:合集 [{mixIdNameDict[mix_id]}] 中的作品下载完成\r\n')
|
||||
elif key_type == "mix":
|
||||
datalist = tk.getMixInfo(key,35)
|
||||
datalist = tk.getMixInfo(key,35, args.number)
|
||||
tk.userDownload(awemeList=datalist, music=args.music, cover=args.cover, avatar=args.avatar,
|
||||
savePath=args.path)
|
||||
elif key_type == "music":
|
||||
datalist = tk.getMusicInfo(key,35)
|
||||
datalist = tk.getMusicInfo(key,35, args.number)
|
||||
tk.userDownload(awemeList=datalist, music=args.music, cover=args.cover, avatar=args.avatar,
|
||||
savePath=args.path)
|
||||
elif key_type == "aweme":
|
||||
|
Loading…
x
Reference in New Issue
Block a user