吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 7697|回复: 48
收起左侧

[Python 原创] 批量下载抖音单用户所有无水印视频-官方已关闭接口,程序失效

  [复制链接]
micfy 发表于 2022-10-22 18:41
本帖最后由 micfy 于 2023-7-17 09:11 编辑

本代码参考了Quincy_007的帖子
https://www.52pojie.cn/thread-1431173-1-1.html
原代码正常运行,但是下载一个月的视频最多只有36个,猜测是抖音的返回包限制了数量,因此改进了,以一天为粒度下载

代码

timepool=list(pd.date_range(start='2022-10-22 00:00:00', end='2022-10-23 00:00:00', freq='D'))
的start 和end就是起止时间,用的时候记得改一下
应粉丝要求:打包成exe可执行文件,请去下载

链接:https://pan.baidu.com/s/1vujVg-tylaVIjeFzu3BZ5Q
提取码:52pj
[Python] 纯文本查看 复制代码
import requests[/size]
import json
import os
import time
import re
import pandas as pd

"""
1.根据用户页面分享的字符串提取短url
2.根据短url加上302获取location,提取sec_id
3.拼接视频列表请求url
params = {
    'sec_uid' : 'MS4wLjABAAAAbtSlJK_BfUcuqyy8ypNouqEH7outUXePTYEcAIpY9rk',
    'count' : '200',
    'min_cursor' : '1612108800000',
    'max_cursor' : '1619251716404',
    'aid' : '1128',
    '_signature' : 'PtCNCgAAXljWCq93QOKsFT7QjR'
}
"""
def delete_boring_characters(sentence):
    return re.sub('[0-9’!"#$%&\'()*+,-./:;<=>?@,。?★、…【】《》?“”‘’![\\]^_`{|}~\s]+', "", sentence)

headers = {
"user-agent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Mobile Safari/537.36"
}
#string  = 'https://v.douyin.com/ekkTsYw/' 
string = input('粘贴分享链接:')
 
shroturl = re.findall('[a-z]+://[\S]+', string, re.I|re.M)[0]
print(shroturl)
startpage = requests.get(url=shroturl, headers=headers, allow_redirects=False)
location = startpage.headers['location']
sec_uid = re.findall('(?<=sec_uid=)[a-z,A-Z,0-9, _, -]+', location, re.M|re.I)[0]
getname = requests.get(url='https://www.iesdouyin.com/web/api/v2/user/info/?sec_uid={}'.format(sec_uid), headers=headers).text
userinfo = json.loads(getname)
name = userinfo['user_info']['nickname']
print(userinfo['user_info']['nickname'])
Path = name
if os.path.exists(path=Path) == False:
    os.mkdir(path=Path)
else:
    print('directory exist')
os.chdir(path=Path)
 
"""new function"""
timepool=list(pd.date_range(start='2022-10-22 00:00:00', end='2022-10-23 00:00:00', freq='D'))
timepool=list(map(str,timepool))
#print(timepool)
k = len(timepool)
for i in range(k-1) :
    
    print('begintime='+timepool[i])
    print('endtime='+timepool[i+1])
    numstr=timepool[i][0:8]
    beginarray = time.strptime(timepool[i], "%Y-%m-%d %H:%M:%S")
    endarray = time.strptime(timepool[i+1], "%Y-%m-%d %H:%M:%S")
    t1 = int(time.mktime(beginarray) * 1000)
    t2 = int(time.mktime(endarray) * 1000)
    #print(t1,t2)
 
    params = {
        'sec_uid' : sec_uid,
        'count' : 200,
        'min_cursor' : t1,
        'max_cursor' : t2,
        'aid' : 1128,
        '_signature' : 'PtCNCgAAXljWCq93QOKsFT7QjR'
    }
    
    awemeurl = 'https://www.iesdouyin.com/web/api/v2/aweme/post/?'
    awemehtml = requests.get(url=awemeurl, params=params, headers=headers).text
    data = json.loads(awemehtml)
    #print(data)
        # print(type(data))
    awemenum = len(data['aweme_list'])
    print(awemenum)
    for j in range(awemenum):
        print(j)
        videotitle = data['aweme_list'][j]['desc'].replace("?", "").replace("\"","").replace(":","")
        videoid = data['aweme_list'][j]['aweme_id']
        videourl = data['aweme_list'][j]['video']['play_addr']['url_list'][0]
        start = time.time()
        print('{} ===>downloading'.format(videotitle))
            
        print(videoid)
        with open(videoid+'-'+delete_boring_characters(videotitle)+'.mp4', 'wb') as v:
            try:
                v.write(requests.get(url=videourl, headers=headers).content)
                end = time.time()
                cost = end - start
                print('{} ===>downloaded ===>cost {}s'.format(videotitle, cost))
            except Exception as e:
                print('download error')
    

免费评分

参与人数 7吾爱币 +13 热心值 +7 收起 理由
Rosenn + 1 + 1 谢谢@Thanks!
xuxiaofei0205 + 1 + 1 谢谢@Thanks!
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
kexue8 + 1 + 1 谢谢@Thanks!
Kaicer + 1 + 1 谢谢@Thanks!
metaxman + 1 + 1 谢谢@Thanks!
kakamimi + 1 + 1 小白想要成品

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

onedayday-wb 发表于 2022-10-22 23:07
小图 发表于 2022-10-22 21:32
这个能编译么   @onedayday-wb

不行呐,它现在报错了,
[Python] 纯文本查看 复制代码
requests.exceptions.ConnectionError: ('Connection aborted.', TimeoutError(10060, '由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。', None, 10060, None))


该错误是因为如下:
1、http的连接数超过最大限制;
2、ip被封,或者网络不好;
3、程序请求速度过快。

等其他大佬吧

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
小图 + 1 + 1 用心讨论,共获提升!

查看全部评分

cbkxh 发表于 2022-10-22 18:52
雾都孤尔 发表于 2022-10-22 19:05
shroer 发表于 2022-10-22 19:05
楼主给个成品啊
wkdxz 发表于 2022-10-22 19:09
9.41 zTy:/ 复制打开抖音,看看【王东的作品】钓鱼这件事情到底还要不要继续?# 钓鱼 # 钓鱼人 # ... https://v.douyin.com/MaXJQx4/


这个运行到34行报错,楼主可否一下解析步骤
红蓝黄 发表于 2022-10-22 19:29
我想要成品
吖力锅 发表于 2022-10-22 19:37
研究个快手的
zhu086 发表于 2022-10-22 19:52
看的好认真,居然没成品
小图 发表于 2022-10-22 20:26
小白想要成品
a398877 发表于 2022-10-22 20:27
小白想要成品
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-23 19:08

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表