Telegram Bot 开发初体验,抖音去水印下载机器人实践

前言

原本是打算用钉钉实现该功能的,一看要做企业认证就放弃的。不得不说这种所谓的认证就拒绝了相当多的独立开发者,这一点绝对是受诟病的。

前端时间研究下Telegram相关的开发,总体来说实现了想要得所有功能,但是在测试的过程中发现很多问题。主要是因为早期Tg的开放接口被滥用的问题导致的,从而想要实现一些功能是受限的以免接口滥用。

Telegram Bot 和绝大多数的IM通讯软件中的机器人是一样的,

快速入门

注册一个机器人,获取token

直接在Tg中与@BotFather对话即可创建bot,比较有趣的是在Tg很多的交互式体验都是通过类似对话的方式。

测试token

将下面的链接的{TOKEN}替换成所获取的token然后浏览器访问

1
https://api.telegram.org/bot{TOKEN}/getUpdates

返回数据,此时与机器人对话的内容均会在此显示出来

1
2
3
4
{
ok: true,
result: [ ... ]
}

三方sdk集成

为了方便开发,已经有很成熟的三方sdk了。这里推荐 TelegramBots

实战案例

趁此机会和大家介绍一下我做的机器人,其主要功能就是通过抖音的分享链接下载其不带水印版本的视频。

机器人体验地址 https://t.me/fast_dl_bot

抖音去水印原理

选择想要下载的视频,获取分享链接如下
1
今天是国际篮球日,你能#接住姚明的传球  吗?  https://v.douyin.com/JbUn9qr/ 复制此链接,打开抖音搜索,直接观看视频!
访问链接,解析出视频源地址,如下
1
2
3
4
5
6
7
8
9
https://v.douyin.com/JbUn9qr/ 

跳转 ->

https://www.iesdouyin.com/share/video/6908508376079109390/?region=CN&mid=6908508442169133832&u_code=11ijh199a&titleType=title&did=68226817704&iid=668150976480124&utm_source=copy_link&utm_campaign=client_share&utm_medium=android&app=aweme

获取视频源地址 ->

https://aweme.snssdk.com/aweme/v1/playwm/?video_id=v0300f010000bvfv7l99jbbabl28o260&ratio=720p&line=0
修改视频源地址,去掉视频源地址中的wm即可得到不带水印的地址源。

并通 agent 为手机客户端访问改地址,即可获取到不带水印的视频。
然后下载视频即可得到不带水印的视频

1
https://aweme.snssdk.com/aweme/v1/play/?video_id=v0300f010000bvfv7l99jbbabl28o260&ratio=720p&line=0

Telegram Bot 实现

采用 TelegramBots 实现,涉及三方软件可能会有争议,既不提供代码实现,本文仅分析原理。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
public class MyAmazingBot extends TelegramLongPollingBot {

@Override
public void onUpdateReceived(Update update) {

//1.基础数据获取与处理
String username = update.getMessage().getChat().getUserName();
String text = update.getMessage().getText();

//2.通过正则判断text是否包含url等等其它验证
//3.通过url获取不带水印的下载链接
//4.通过下载链接获取输入流
//以上2,3,4涉及三方软件可能会有争议,既不提供代码实现,本文仅分析原理。

//4.将输入流直接返回给发送者
InputFile inputFile = new InputFile(inputStream,System.currentTimeMillis()+".mp4");
SendVideo video = new SendVideo();
video.setVideo(inputFile);
video.setChatId(update.getMessage().getChatId().toString());
execute(video);

}

@Override
public String getBotUsername() {
return "fast_dl_bot";
}

@Override
public String getBotToken() {
return "1434***IaQ4w5iJTGCRDtMSUVY";
}
}

Fred范方青 wechat
项目合作请联系我私人微信: fredtv23
0%