标签搜索

Telegram机器人:实现抖音视频无水印下载

勿埋我心
2022-09-13 / 0 评论 / 1,929 阅读 / 正在检测是否收录...

引言

无事如有事时堤防,可以弭意外之变;有事如无事时镇定,可以销局中之危。 ——勿埋我心

  看到不错的抖音视频想要保存下载,用什么呢?xp框架吗,还是解析网站?既然这样不妨试试自己搞一个解析服务。

  解析脚本来源:https://qq.cool/post/48.html

  有了最核心的部分,下面要做的事情就简单了,我选择将其与Telegram机器人结合起来,因为TG机器人还是比较方便好用的。

成品源码

  Github:Qiantigers/TelegramBot_douyin: Telegram机器人实现抖音视频去水印下载 (github.com)

如何使用?

  一、获取你自己的BOT API(如果不知道可以自行搜索,这很简单)

  二、打开源码中config.py,将你的bot_api填入其中

  三、启动main文件,然后可以向机器人发送指令,指令为/douyin_qu_shui_yin {video link}

测试实际效果

已经搭建好的机器人 @Complex_1ove_bot

image-20220913225047236

对代码进行一些优化

  优化部分的代码我没有写入源码中,因为我认为成品尽量写的简单点,这样部署起来会比较顺手,有需要可以参考下面的介绍进行添加。

如果多个人解析同一个视频

  想想,假如某个视频很火,有10个人都要解析这个视频,那服务器岂不是要进行10次的重复工作,不仅添加服务器的负担,而且效率也低。

  所以,我们可以把已解析过视频以及其结果,存入数据库之中。(table:id, from_url, to_url)

  在解析之前,看看数据库中有没有,如果没有,服务器再调用接口生成无水印视频链接。

  数据库可以使用Sqlite3,这个比较轻量

看代码:

def get_douyin(url):
    if re.match(r'http[s]?://v.douyin.com/\S+', url):
        conn = myConn.MyConn() # 自己封装的数据库操作
        url_kaywords = re.findall(r"v.douyin.com/([A-Za-z0-9]+)", url)[0].replace('/', '')
        s_res = conn.execute_sql(f"select * from douyin where from_url like '%{url_kaywords}%';").fetchall()
        if s_res == []:
            dy = Douyin(url)
            try:
                url_judged = dy.run()
            except:
                url_judged = "仅支持解析视频,像图文类的就不支持。"
            creat_time = time.strftime("%Y-%m-%d %H:%M:%S")
            sql = "insert into douyin (from_url, to_url, time) values (?,?,?)"
            conn.execute_sql_2(sql, (url, url_judged, creat_time))
        else:
            url_judged = s_res[0][2]
        return url_judged
    else:
        return '请检查你输入的链接是否正确,例如:https://v.douyin.com/6kAoWvc/'

结语

  有编程基础的同学,可以在源码上进行二次优化,将它变成你喜欢的样子。

  如果觉得不错,给个Star。欢迎有疑惑在勿埋我心评论区留言。

10

评论 (0)

取消