Android初学 抖音短视频无水印下载APP的实现
实现效果:
- 在抖音复制分享链接
- 粘贴分享链接到App, 点击解析
- 点击 去下载 进入浏览器下载
获取无水印视频链接
首先我们使用浏览器打开分享的链接
8.97 teO:/ 一起玩水吧 在这炽热的夏天%%蓝色治愈系 %%夏天 %%游泳 https://v.douyin.com/Y5SpHKD/ 复制此链接,打开Dou音搜索,直接观看视频!
然后打开控制台找到对应的视频, 右键检查可以找到视频的链接
https://www.douyin.com/aweme/v1/play/?video_id=v0200fg10000ca08sgbc77udtm7m06p0
然后在浏览器中打开此链接发现是没有水印的视频, 稍后下载的视频使用的是此链接.
通过测试其他分享的视频发现不同视频对应的video_id不同, 于是需要找到获取video_id的请求.
https://www.douyin.com/aweme/v1/play/?video_id=xxx
通过控制台将设备改成移动端设备, 点击分享的链接https://v.douyin.com/Y5SpHKD/
, 这时有一条请求进入我们的视线:
https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids=7097830584419962125
该请求的响应有我们需要的video_id
该请求有一个参数item_ids
, 此参数正是点击分享链接后重定向链接的一部分
因此我们只需要解析该链接就可以拿到item_ids
至此, 就得到了下载无水印视频的全过程。
- 根据
https://v.douyin.com/Y5SpHKD/
的重定向地址https://www.iesdouyin.com/share/video/7097830584419962125
获取item_ids=7097830584419962125 - 根据
https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids=7097830584419962125
的响应拿到vid - 根据
www.douyin.com/aweme/v1/play/?video_id=v0200fg10000ca08sgbc77udtm7m06p0
下载视频
实现
model层
通过传入的分享链接, 获取无水印视频链接
public class DouyinDownloadModel {private final OkHttpClient mOkHttpClient = new OkHttpClient();public void download(InputBean inputBean, DownloadListener downloadListener) {Request.Builder builder = new Request.Builder().get().url(inputBean.getShareUrl());requestInit(builder);Request request = builder.build();mOkHttpClient.newBuilder().followRedirects(false).build().newCall(request).enqueue(new Callback() {@Overridepublic void onFailure(@NotNull Call call, @NotNull IOException e) {downloadListener.fail();}@Overridepublic void onResponse(@NotNull Call call, @NotNull Response response) {if (response.code() == 302) {String location = response.header("location");if (location != null) {System.out.println(location);String itemIds = parseItemIds(location);if (!TextUtils.isEmpty(itemIds)) {getVidByItemIds(itemIds, new GetVidRequestListener() {@Overridepublic void success(JsonRootBean bean) {Item_list item_list = bean.getItem_list().get(0);String vid = item_list.getVideo().getVid();String url = "https://www.douyin.com/aweme/v1/play/?video_id="+ vid;DownLoadResult downLoadResult = new DownLoadResult();downLoadResult.setVideoUrl(url).setNickName(item_list.getAuthor().getNickname()).setVideoDesc(item_list.getDesc());downloadListener.success(downLoadResult);}@Overridepublic void fail() {downloadListener.fail();}});} else {downloadListener.fail();}}}}});}public void getVidByItemIds(String itemIds, GetVidRequestListener getVidRequestListener) {String url = "https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids=" + itemIds;System.out.println(url);Request.Builder builder = new Request.Builder().get().url(url);requestInit(builder);Request request = builder.build();mOkHttpClient.newCall(request).enqueue(new Callback() {@Overridepublic void onFailure(@NotNull Call call, @NotNull IOException e) {getVidRequestListener.fail();}@Overridepublic void onResponse(@NotNull Call call, @NotNull Response response)throws IOException {if (response.code() == 200) {response.body();String jsonString = response.body().string();Gson gson = new Gson();System.out.println(jsonString);JsonRootBean jsonRootBean = gson.fromJson(jsonString, JsonRootBean.class);System.out.println(jsonRootBean.getItem_list().get(0).getVideo().getVid());getVidRequestListener.success(jsonRootBean);}}});}public interface DownloadListener {void success(DownLoadResult downLoadResult);void fail();void onProgress(int progress);}interface GetVidRequestListener {void success(JsonRootBean bean);void fail();}public void requestInit(Request.Builder builder) {builder.addHeader("user-agent","Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 "+ "(KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/101.0.4951.41");}public String parseItemIds(String text) {String regex = "\\d{19}";Pattern p = Pattern.compile(regex);Matcher m = p.matcher(text);if (m.find()) {return m.group();}return null;}
}
Presenter层
略
View层
略
源代码 + Apk
参考
- 重定向的链接在谷歌F12中看不到
- 认识Android中的MVP设计模式
Android初学 抖音短视频无水印下载APP的实现相关推荐
- 某音短视频无水印下载APP的Android端实现
近日对于某音的短视频下载有个需求,借鉴网上大神的相关经验,写了个简单的无水印下载视频的APP. 抖音视频无水印下载的Android端APP实现 操作步骤 1. 点击抖音视频的分享按钮,在下面的菜单栏中 ...
- 抖音短视频无水印下载的方法
说有一个朋友,暂且叫他小明,问我能不能帮他下载一个抖音短视频,要求去除水印,里面有他非常喜欢的小姐姐. 话说,我这么善良的一个人,怎么会拒绝他的请求,主要是我也想看看这个小姐姐怎么样. 一顿操作猛如虎 ...
- 【福利】Python抖音小视频无水印下载工具助手exe
本渣渣的一个老哥要的抖音小视频无水印下载,我觉得他是一个LSP,因为抖音上的小姐姐实在是太多,太好看了! 可是他就是不发好看的小姐姐抖音号给我... 难道我的肾没有他强?! 不可能啊,本渣渣经常吃韭菜 ...
- 利用python爬虫实现:抖音短视频无水印视频下载
各位小伙伴,之前一段时间迷上了抖音小姐姐视频,但是下载的视频都有水印,于是自己用Python 写了个爬取小姐姐视频的工具,大家可以直接拷贝到自己编译器上运行.经过半天的琢磨,自己用python搞出来一 ...
- java开发抖音短视频无水印下载工具
思路分析 首先在抖音APP段选择你喜欢的视频进行分享,一般分享链接都是这样的:"http://v.douyin.com/111113/",这并不是真的下载地址,在浏览器中输入上述地 ...
- 安卓网apk安装器_短视频无水印下载,apk提取,带壳截图 iOS Android极客必备的三款软件,你全都用上了吗?...
短视频无水印下载,apk提取,带壳截图 iOS Android 极客必备的三款软件,你全都用上了吗? 7SIZE丨插图内容来自于网络侵权删 给大家介绍 Android,iOS 上三款在生活中必备的三款 ...
- 抖音短视频批量采集下载软件哪些好?如何下载?轻松搬运视频,快速批量处理水印去除LOGO!...
抖音短视频批量采集下载软件哪些好?如何下载? 抖音短视频去重消重去水印软件哪些好?如何下载? 腾讯视频批量采集下载软件哪些好?怎么下载? 腾讯视频去重消重去水印软件哪些好?如何下载? 轻松搬运视频,快 ...
- 怎么让抖音视频当做铃声android,把抖音短视频做成手机铃声,原来这么简单!...
原标题:把抖音短视频做成手机铃声,原来这么简单! "一日不抖,如隔三秋" 相信十个人里面 有九个都中了抖音的毒 刷起来完全控制不住自己 最近大火的抖音短视频炒火了不少民谣音乐人及一 ...
- python视频解析库_python某音短视频无水印解析
[Python] 纯文本查看 复制代码import requests import re import tkinter as tk #用户名: (.*?) #简介: (.*?) #封面:cover: ...
最新文章
- 使用ThinkPHP实现生成/校验验证码功能
- 英特尔九州云99Cloud OpenStack行业应用研讨会
- 安卓Android科大讯飞语音识别代码使用详解
- python学习环境安装_python学习系列----环境的安装
- Android安全教程(2)---Fiddler简易使用教程之使用
- LRU算法四种实现方式介绍
- 图像处理技术(三)白平衡
- 他是奥运会银牌获得者,还是世界知名数学家,他的家族让世界为之倾倒
- HBase性能优化方法总结 (转)
- c语言输入学生成绩q退出,C语言-学生成绩管理系统实验报告13页
- 微服务调用链追踪中心搭建
- uni-app 启动页控制
- 英雄连的制作公司THQ历史
- 债券价格和到期收益率的关系_债券价格与到期收益率之间的关系.PPT
- 爱情刚刚开始是最美好的
- 微信域名防封系统-微信域名预拦截预防封
- 论文的参考文献格式怎么弄呢?
- ClickOnce 通过URL传递参数
- 微信小程序多个倒计时
- python的pandas库的pd.read_excel()常用解析
热门文章
- 个人总结的一个VMP脱壳步骤.
- 用matlab绘制翼型,机翼翼型的Matlab编程
- VS exe独立程序打包—Enigma Virtual Box
- html点击图标出现日历,日历图标的纯CSS实现
- goip设备的特点_架设通讯网络设备为境外诈骗集团服务 3男子被田东警方抓获...
- linux驱动开发:触摸屏的认识(FT5x06 IC的分析)
- Ubuntu 使用 du 查看某个文件夹大小
- vue2.0创建项目步骤
- 大家都应该了解的“客户备付金”
- centos7只更新安全补丁