抖音视频根据用户ID下载方法

您所在的位置:网站首页 抖音视频评论id怎么找不到 抖音视频根据用户ID下载方法

抖音视频根据用户ID下载方法

2024-04-03 09:11| 来源: 网络整理| 查看: 265

在这说一下我提取抖音视频的方法 1.首先是抖音视频我不是从APP上抓取的,因为对应用户视频列表抓取链接存在字段加密,无法获取我的视频信息获取步骤如下: 1)通过访问登录新抖微信小程序,采用fiddler对其进行抓包,获取到根据用户名搜索的API, post请求https://xd.newrank.cn/xdnphb/nr/cloud/douyin/mini/detail/accountInfoAll {"uid":"uname"} 2)通过搜索获取到用户对应的UID,以及点击进入用户信息界面抓取对应的用户最近视频信息列表API, post请求: https://xd.newrank.cn/xdnphb/nr/cloud/douyin/mini/detail/aweme {\"uid\":\""+uid+"\",\"sort\":\"create_time\"} 3)根据视频列表API获取到对应的视频ID,通过API就可以获得对应的视频信息及下载地址 "https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids="+awemeid 4)我在这里视频下载使用的是aria2-1.35.0-win-64bit-build,aria2c进行下载的。 用户信息获取

```python import codecs

import requests import json import time import re mcn_url = "https://xd.newrank.cn/xdnphb/nr/cloud/douyin/accountSearch?xyz=5b656c1bfdad2f2b81ee1c7b7ee8d7a1&nonce=93756e082" headers = {             "cookie": "tt_token=true; token=B84BC70398524281A23B32907A923FA3; Hm_lvt_a19fd7224d30e3c8a6558dcb38c4beed=1600998811; UM_distinctid=174c2f7269d8e-018b82af719c7a-5d462912-144000-174c2f7269e2c0; __root_domain_v=.newrank.cn; _qddaz=QD.5qt4ff.423qqb.kfhld1hh; Hm_lvt_e20c9ff085f402c8cfc53a441378ca86=1601003995; Hm_lpvt_e20c9ff085f402c8cfc53a441378ca86=1601003995; _uab_collina=160100400201237841270221; Hm_lpvt_a19fd7224d30e3c8a6558dcb38c4beed=1601176471; tt_token=true",             "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36",         }

def create_mcn_body():     """构建mcn机构请求体"""     data = {"input": {"keyword": "Mr_nuannan", "type": ""}, "xd_tags": [], "type": "", "nr_range_list": [], "verify": "",             "contact": "", "mcn": "", "with_fusion_shop_entry": "", "is_live": "",             "account_info": {"province": "", "city": "", "gender": "",                              "constellation_name": "", "age_range": ""},             "data_performance": {"favorited_range_list": [], "follower_range_list": []},             "relate_goods": {"goods_name": "", "goods_cate1": "", "goods_cate2": "", "price_range": "",                              "goods_sales_range": "", "visitor_count_range": "", "goods_source": "",                              "price": {"gte": "", "lt": ""}},             "fans_info": {"province": "", "city": "", "gender": "", "age_range": "", "constellation_name": ""},             "sort": "", "size": 20, "start": 1}     return data

def get_response(url, headers, body):     time.sleep(5)     """获取响应"""     ret = requests.post(url,                         headers=headers,                         json=body                         )     return ret.text

def get_mcn( page):         """获取机构信息"""         data = create_mcn_body(page)         result = get_response(mcn_url, headers, data)         response = json.loads(result)         data = response.get('data')         mcn_list = data.get('list')         return mcn_list

def get_video(uid,page):     data = create_mcn_body(page)     result = get_response(mcn_url, headers, data)     response = json.loads(result)

def parse_mcn(mcn_element):         """解析mcn机构"""         mcn_item =dict()         mcn_item['uid'] = mcn_element.get('uid')         mcn_item['account'] = mcn_element.get('account')         mcn_item['nickname'] = re.sub("]*>", "", mcn_element.get('nickname'))         mcn_item['signature'] = mcn_element.get('signature').replace('\n', '').replace('\r', '')         mcn_item['follower_count'] = mcn_element.get('follower_count')         mcn_item['aweme_count'] = mcn_element.get('aweme_count')         return mcn_item

def userMsg():         mcn_list = get_mcn(1)         print(mcn_list)         # 当前页机构 list         user_list=[]         for mcn in mcn_list:             mcn_item = parse_mcn(mcn)             user_list.append(mcn_item)         return user_list

def videoMsg():     video_list=get_video()

if __name__ == '__main__':     f = codecs.open('./dy/userMsg.txt', "a", 'utf-8')     user_list=userMsg()     for user in user_list:         print(user)         f.write(user.get("uid") + "|"+ user.get("account") + "|"+user.get("nickname") + "|"+user.get("signature") + "|"+user.get("follower_count") + "|"+user.get("aweme_count") + "|" +'\r\n')

``` 视频信息获取

```python import codecs import http

import requests import json import time import re detail_url="https://xd.newrank.cn/xdnphb/nr/cloud/douyin/mini/detail/aweme"

headers2 = {             "cookie": "vtoken=1;token=890CBCEEF50E43D7AB241F0BE3E892F7",             "user-agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36 MicroMessenger/7.0.9.501 NetType/WIFI MiniProgramEnv/Windows WindowsWechat",         }

def create_aweme_body():     data={"uid":"110563717491","sort":"create_time"}     return data

def get_aweme_response(detailurl, headers, body):     time.sleep(5)     """获取响应"""     ret = requests.post(detailurl,                         headers=headers,                         json=body                         )     return ret.text

def get_aweme( ):         """获取视频信息"""         data = create_aweme_body()         result = get_aweme_response(detail_url, headers2, data)         response = json.loads(result)         print(response)         data = response.get('data')         mcn_list = data.get('list')         return mcn_list

def parse_mcn(mcn_element):         """解析mcn机构"""         mcn_item =dict()         mcn_item['uid'] = mcn_element.get('uid')         mcn_item['account'] = mcn_element.get('account')         mcn_item['nickname'] = re.sub("]*>", "", mcn_element.get('nickname'))         mcn_item['signature'] = mcn_element.get('signature').replace('\n', '').replace('\r', '')         mcn_item['follower_count'] = mcn_element.get('follower_count')         mcn_item['aweme_count'] = mcn_element.get('aweme_count')         return mcn_item

def parse_aweme(aweme_element):     """解析mcn机构"""     aweme_item = dict()     aweme_item['aweme_id'] = aweme_element.get('aweme_id')     aweme_item['aweme_desc'] = aweme_element.get('aweme_desc')     aweme_item['comment_count'] = re.sub("]*>", "", aweme_element.get('comment_count'))     aweme_item['digg_count'] = aweme_element.get('digg_count').replace('\n', '').replace('\r', '')     aweme_item['create_time'] = aweme_element.get('create_time')     aweme_item['share_url'] = aweme_element.get('share_url')     return aweme_item

def parse_detail(aweme_element):         """解析mcn机构"""         detail_item = dict()         detail_item['aweme_id'] = aweme_element.get('aweme_id')         detail_item['play_addr'] = aweme_element.get('video').get('play_addr').get('url_list')[0]         detail_item['desc'] =aweme_element.get('desc')         detail_item['author_user_id'] = aweme_element.get('author_user_id')         return detail_item

def awemeListMsg():         aweme_list = get_aweme(1)         # print(aweme_list)         # 当前页机构 list         user_list=[]         for aweme in aweme_list:             aweme_item = parse_aweme(aweme)             user_list.append(aweme_item)         return user_list

# 发送给aria2开始下载 def SendDownloadInfo(id, url, referer, savePath,vname):     jsonreq = json.dumps({"jsonrpc": "2.0", "id": id, "method": "aria2.addUri",                           "params": [[url], {"referer": referer, "dir": savePath,"out":vname}]})     resp = requests.post("http://localhost:6800/jsonrpc", data=jsonreq)     print(jsonreq)     if resp.status_code == 200:         return True     return False

if __name__ == '__main__':

    f = codecs.open('./dy/awemeMsg.txt', "a", 'utf-8')     aweme_list=awemeListMsg()     for aweme in aweme_list:         url="https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids="+aweme.get("aweme_id")         response = requests.get(url=url)         detailmsg= dict()         if response.status_code >= 200 and response.status_code < 300:             data = response.json()             print(data)             detail_list = data['item_list']             for detail in detail_list:                 detailmsg=parse_detail(detail)                 print(detailmsg.get("play_addr"))                 SendDownloadInfo(detailmsg.get("aweme_id"), detailmsg.get("play_addr"), 'https://www.iesdouyin.com', './dy',detailmsg.get("aweme_id")+'.mp4')         f.write(aweme.get("aweme_id") + "|"+ aweme.get("aweme_desc") + "|"+aweme.get("comment_count") + "|"+aweme.get("digg_count") + "|"+aweme.get("create_time") + "|"+aweme.get("share_url") + "|" +'\r\n')

``` 其中代码在使用的aria2c的使用方法为(采用RPC下载) 使用rpc调用aria2c.exe进行视频下载 aria2c.exe --conf-path=./aria2.conf(在对应的目录下进入命令界面运行该命令) 其中aria2c.exe下载地址如下: http://file.mail.10086.cn/share2/fileexpress/filedownload.htm?sendid=45870705559957161213222811320431

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3