问答

抖音分享链接(v.douyin.com)怎么转成视频 ID 和视频数据?

简短回答

把链接作为 url 传给 okdata 的抖音视频详情接口,v.douyin.com 短链会自动解析,返回里有数字视频 ID(aweme_id),以及文案、点赞、评论、分享、收藏和作者,每个链接 $0.002。500 个链接共 $1.00。

大家分享抖音视频时发的是一段口令:“7.12 复制打开抖音,看看【某某的作品】… https://v.douyin.com/iAbCdEf/ …”。博主交稿表、客服工单、竞品案例库里全是这种东西。想拿它做点什么,比如看评论、看数据、持续跟踪,首先得有数字视频 ID,也就是 19 位的 aweme_id。短链要跳转一次才能解析,有的工具直接拒收分享口令,有的工具认 /video/ 链接,碰到 ?modal_id= 或图文作品的 /note/ 链接就失败。把链接传给视频详情接口调一次,ID 和视频数据就都回来了。

一个链接一次调用

抖音视频详情接受 url 或 id。支持的链接有:

  • https://v.douyin.com/... 短链,由我们这边解析;
  • douyin.com/video/<id> 和 douyin.com/note/<id>(图文作品);
  • 带 ?modal_id=<id> 的 douyin.com 页面,比如在搜索页或主页里点开视频时的地址;
  • iesdouyin.com 分享页。

返回里有 id(即 aweme_id)、url、文案、发布时间、点赞、评论、分享、收藏、话题标签;加 view=full 时 ext 里还有背景音乐和时长;另外有作者的 sec_uid 和昵称。

费用

链接数 调用次数 费用
1 1 $0.002
500 500 $1.00
500 个链接,每条再取 2 页评论 1,500 {{cost:douyin.videos.get500+douyin.videos.comments.list1000}}

从分享口令到 ID

import os, re, requests

share = "7.12 复制打开抖音,看看【某某的作品】露营必带清单 https://v.douyin.com/iAbCdEf/ Kjc:/ 08/15"
link = re.search(r"https?://v\.douyin\.com/[\w-]+/?", share).group(0)

item = requests.get(
    "https://api.okdata.online/v1/douyin/videos/get",
    headers={"Authorization": f"Bearer {os.environ['OKDATA_API_KEY']}"},
    params={"url": link, "fields": "id,text,metrics,author.id,author.name"},
    timeout=60,
).json()["data"]["item"]
print(item["id"])

把 ID 存下来。取评论要用它,以后刷新数据也可以直接按 id 调。

注意事项

  • 接口要的是链接,不是整段分享口令,先像上面那样把链接提取出来。
  • 指向账号而不是视频的短链,请交给抖音账号信息,它也接受 v.douyin.com 链接。
  • 已删除或私密的视频返回 not_found,不扣费。
  • metrics.views 通常为 null:抖音不公开别人视频的播放量。

自己动手的话

解析短链本身只是一次跳转:请求时不跟随重定向,从 Location 响应头里读出那串数字就行。几个链接这样做完全够用,不需要任何服务。只是之后要取视频数据时,签名和 Cookie 的问题又会回来。需要长期跟踪大量视频,可以看竞品监测方案。

更新于