树洞剪藏#剪藏#树洞剪藏

【开源】别让小鸡吃灰 - TG机器人,下载Youtube、X等网站视频转存到115\阿里云盘等网盘

2024 年 12 月 2 日1 分钟
分享Twitter / XTelegram微博

同步来源:树洞剪藏 源站剪藏 ID:155 原文地址:https://www.nodeseek.com/post-132752-10

打开原文 · 打开源站剪藏快照


【开源】别让小鸡吃灰 - TG机器人,下载Youtube、X等网站视频转存到115\阿里云盘等网盘

NodeSeek beta 日常 技术 情报 测评 交易 拼车 推广

【开源】别让小鸡吃灰 - TG机器人,下载Youtube、X等网站视频转存到115\阿里云盘等网盘

brains Lv 5 楼主 141days ago edited 122days ago in 技术 #0

不知道为啥Github账号404了 直接上传到网盘了 有需要自取

https://gofile.io/d/KAKat9

最近X总是封号,一封号点赞的小视频就找不到了,正好618买了115网盘的8年会员,于是想用telegram的机器人把Youtube、X、tiktok视频下载到VPS上并转存到网盘里,翻了一圈没有能满足我需求的,于是花了点时间手撸了一个,实现很简单,理论上yt-dlp支持的网站这个脚本都支持

求鸡腿

预览图:

项目地址: https://github.com/Srainc/TBot-DSSC

项目说明:

TBot-DSSC

简介:

通过给Telegram机器发送URL,让服务器下载对应的视频并同步到网盘中

该脚本通过Telegram机器人接收、创建、反馈任务,通过yt-dlp下载视频,通过CloudDrive2添加网盘,通过Rclone对本地数据与网盘进行数据同步

环境需求:

Python >= 3.9

Rclone

CloudDrive2

ffmpeg

环境部署:

Python组件安装

pip install python-telegram-bot tqdm yt-dlp

ffmprg安装

apt install ffmpeg

Rclone安装

curl https://rclone.org/install.sh | sudo bash

CloudDrive2安装

curl -fsSL "https://raw.githubusercontent.com/lonelylose/clouddrive2/main/cd2.sh" | bash -s install

使用说明:

1、使用CloudDrive2添加对应网盘

2、使用Rclone添加CloudDrive2对应的WebDav服务

3、申请Telegram机器人

4、修改Python脚本中的API_TOKEN、DOWNLOAD_DIR、ALLOWED_USER_ID、MOUNT_PATH、RCLONE_NAME字段为对应的值

5、启动脚本

其他信息:

1、API_TOKEN字段需要通过官方机器人 https://t.me/BotFather 申请API后获得

2、ALLOWED_USER_ID字段可以通过 https://t.me/userinfobot 获得

3、可以使用nohup命令或者screen工具进行Python脚本的持久化运行

4、在debian11下正常运行,其它系统请自测

5、CloudDrive2、Rclone的使用方法请自行互联网搜索

免责声明:

1、使用该脚本则默认同意该声明

2、该脚本为个人测试用途,数据无价,请谨慎使用,使用该脚本导致的一切后果开发者不承担责任

16 0 121 引用 回复

1 .. 6 7 8 9 10

brains 楼主 73days ago edited 73days ago #91

保存为 xxx.py

import os import shlex import subprocess import logging from tqdm import tqdm from telegram import Update from telegram.ext import ApplicationBuilder, CommandHandler, MessageHandler, CallbackContext from telegram.ext.filters import TEXT from urllib.parse import urlparse from datetime import datetime

替换为你的 Telegram 机器人 API Token

API_TOKEN = '1234567890:beTK1P4NtjnVnLs-gtLHgCQJXyoI0gWgRWg'

下载目录

DOWNLOAD_DIR = '/Down'

允许使用的用户 ID

ALLOWED_USER_ID = 1234567890 # 替换为你想允许的用户 ID

网盘挂载路径

MOUNT_PATH = '/115/Server'

Rclone 配置的项目名称 rclone config 可以查看

RCLONE_NAME = '115'

确保下载目录存在

os.makedirs(DOWNLOAD_DIR, exist_ok=True)

配置日志记录

LOGGING_ENABLED = os.getenv('LOGGING_ENABLED', 'true').lower() == 'true' if LOGGING_ENABLED: logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s') else: logging.basicConfig(level=logging.CRITICAL) # 只记录严重错误

logger = logging.getLogger(name)

/start 命令的处理函数

async def start(update: Update, context: CallbackContext): if update.message.from_user.id != ALLOWED_USER_ID: await update.message.reply_text('您无权使用此机器人。') return await update.message.reply_text('你好!向我发送视频 URL,我将为您下载该视频。')

处理收到的 URL

async def handle_message(update: Update, context: CallbackContext): if update.message.from_user.id != ALLOWED_USER_ID: await update.message.reply_text('您无权使用此机器人。') return

url = update.message.text chat_id = update.message.chat_id

解析 URL 中的域名

domain = urlparse(url).netloc domain_dir = os.path.join(DOWNLOAD_DIR, domain)

确保域名对应的目录存在

os.makedirs(domain_dir, exist_ok=True) current_date = datetime.now().strftime('%Y-%m-%d')

download_command = f'yt-dlp -o {shlex.quote(domain_dir + "/%(title).30s_" + current_date + ".%(ext)s")} {shlex.quote(url)}'

发送下载开始消息

await update.message.reply_text(f'开始下载:{url}')

try:

运行 yt-dlp 命令并捕获输出

process = subprocess.Popen(shlex.split(download_command), stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True, encoding='utf-8')

progress_message = await update.message.reply_text('下载进度:0%') last_progress = 0

while True: output = process.stdout.readline() if output == '' and process.poll() is not None: break if output: logger.info(output.strip())

解析进度信息

if '[download]' in output and '%' in output: progress = output.split('%')[0].split()[-1].strip() try: progress = float(progress) if progress >= last_progress + 10: last_progress = progress await progress_message.edit_text(f'下载进度:{progress}%') except ValueError: pass

捕获下载过程中的错误信息

stderr_output = process.stderr.read() if process.returncode == 0: await update.message.reply_text('下载完成!') logger.info(f'Download complete for {url}')

同步文件到115:/115/Server

sync_command = f'rclone move {shlex.quote(DOWNLOAD_DIR)} {RCLONE_NAME}:{shlex.quote(MOUNT_PATH)}' sync_process = subprocess.run(shlex.split(sync_command), capture_output=True, text=True)

if sync_process.returncode == 0: await update.message.reply_text('文件同步完成!') logger.info('File sync complete') else: await update.message.reply_text(f'文件同步错误:{sync_process.stderr.strip()}') logger.error(f'File sync error: {sync_process.stderr.strip()}')

else: await update.message.reply_text(f'Error: {stderr_output.strip()}') logger.error(f'Error: {stderr_output.strip()}') except Exception as e: await update.message.reply_text(f'Error: {str(e)}') logger.error(f'Exception occurred: {str(e)}')

def main(): application = ApplicationBuilder().token(API_TOKEN).build() application.add_handler(CommandHandler("start", start)) application.add_handler(MessageHandler(TEXT, handle_message)) # 更正后的过滤器

运行机器人

application.run_polling()

if name == 'main': main()

0 0 引用 回复

亚历山大锤 141days ago #1

支持

无欲无求,清心寡欲!收想收的小鸡鸡,玩好玩的小鸡鸡!

0 0 引用 回复

miaowmint 141days ago #2

点个star

TG联系 @miaowmint

0 0 引用 回复

sunpma 141days ago #3

bd

博客 · 导航 · 探针 · 电报 · 中文博客RSS频道

0 0 引用 回复

wu 141days ago #4

不错👍

0 0 引用 回复

dilidili 141days ago #5

绑定

✈️ TG联系我 |✉️ 站内PM |❤️ 免费图床

长期出小红卡余额,谷歌汇率多0.1

0 0 引用 回复

tian866 141days ago #6

bd

0 0 引用 回复

xy Dev 141days ago #7

前排支持

✈️ TG机器人 || ✉️ PM站内 || ⛱️ 阿里欧克之针 || ⚛️ IP质量体检脚本 || ✅ 改版解锁检测脚本

0 0 引用 回复

Tionmon 141days ago #8

bd

0 0 引用 回复

dayvs 141days ago #9

支持

| ✉️站内私信 |

0 0 引用 回复

hide3110 141days ago #10

给大佬点赞👍

0 0 引用 回复

小鲁班 141days ago #11

帮顶

TG

MrHokusai1337 141days ago #12

鸡脚给你

正在播放《 安和桥 》 ━━━━━━●─────── 2:40

⇆ ㅤㅤㅤ◁ ㅤㅤ❚❚ ㅤㅤ▷ ㅤㅤㅤ↻ ​​​

bakker 141days ago #13

好贴帮顶

#️⃣注册 OpenBayes,双方各获得 60 分钟 RTX 4090 使用时长

byte 141days ago #14

这个支持下载不允许转发不允许下载的视频么?

菲镜 141days ago #15

不错不错

半天吃不了一个瓜 / 一天喝不了一瓶奶 / 一周睡不了几个觉

daye 141days ago #16

bd

| ✉️站内 PM | ✈联系 TGbot | ⚡探 针 |

Doon 140days ago #17

支持

鸡蛋灌饼 140days ago #18

star

联系✈️TG

BlankSpace 140days ago #19

MARK

站内私信

柴啊柴 140days ago #20

强!

TG联系

Yirasumi 140days ago #21

你说得对但是我选择打包成docker放容器云,小鸡继续吃灰

论坛私聊 | 探针 | EDU与8连后缀Tron地址出售: 地摊

楼主 140days ago #22

Nice pussy

TG联系

satrimg 140days ago #23

好办法支持

cheat0916 140days ago #24

大佬点赞

cabbage 140days ago #25

建议docker一键

✉️ 站内PM | ✈️ 有白嫖通知一下 | ☠️ 陪跑大王 ☠️ | ☃️ TG翻译机器人 | ❤️ 日志随记 | ❤️ DMIT好用的VPS

brains 楼主 140days ago #26

@byte #14 不支持哦 大伙要是需求比较强烈可以研究一下 不过TG下载自己服务器上的内容好像有大小限制

brains 楼主 140days ago #27

@cabbage #25 docker版我有空弄一个

xingxing666 140days ago #28

点赞

BlueSkyXN 博主 Dev 140days ago #29

策略上如果网盘支持rclone,就没必要用cd2

✨ 图床 |✅ 博客+1 |⛄️ 针+1 |⚡ 频道+1 |⭐️ Patreon订阅 |⛵ Github |✴️ NNR提速

RoyalAtom 140days ago #30

支持

brains 楼主 140days ago #31

@BlueSkyXN #29 rclone原生不支持国内的一些网盘 另外用改版的rclone或者alist速度也会有问题

nideseek 140days ago #32

帮顶

Pepsi 管理 140days ago #33

帮顶 感谢分享

✉️ 站内私信 |✅ 真●论坛一眼探针 | ♻️AWS自动化防止反薅 | ☀️谷歌云GCP开启IPv6

id 140days ago #34

能下载tg的视频吗

QQ会员 140days ago #35

正在播放《体面》 ━━━━━━●─────── 00:24 / 04:23

⇆ ㅤㅤㅤ◁ ㅤㅤ❚❚ ㅤㅤ▷ ㅤㅤㅤ↻ ​​​

rong6 140days ago #36

绑定

我的博客 欢迎光临 | TG | PasteBin

groot 140days ago #37

挂机 | TG | 中转 | 小鸡

hifinilook 140days ago #38

很好

qwert 140days ago #39

@brains #27 支持弄一个docker版

一根华子 140days ago #40

@brains #0 很需要

TG私信我 ▎2024新年快乐

RiceMoon 140days ago #41

点赞

鸡蛋灌饼 140days ago #42

联系✈️TG

月与徘徊 140days ago #43

这个看起来不错,插个眼,以后能用上

弄清影 140days ago #44

支持大佬

Ray680 139days ago #45

这不是一般的强,是超强!

个人展示网页

naga 139days ago #46

大佬牛逼

naga 139days ago #47

已经点亮了

byte 139days ago edited 139days ago #48

@brains #26 那如果是 TG 下载的话,可以使用这个方案:

https://github.com/tangyoha/telegram_media_downloader

可以直接下载限制分享或下载的视频,自带 rclone 支持。

CycleStudies 临时禁言 139days ago #49 🚫

brains 楼主 139days ago #50

@byte #48 这项目之前研究过 下载存储在TG上的视频 需要高级API 申请不能说麻烦 但也不简单 另外有下载大小限制 除非另外开个项目把这两个分开

pony8 139days ago #51

好东西鸡腿送上

bacon159 139days ago #52

提个建议大佬,支持转发tg视频,支持转存到onedrive

TG | 探针 | 白嫖推送 | domainkeeper | TrafficCop | 哪吒命令修复

一根华子 139days ago #53

@brains #0 教程能不能再详细点,老实说我用不来

TG私信我 ▎2024新年快乐

byte 139days ago #54

@brains #50 API 申请我到没注意,我拿一个新的号来登录的,似乎也没有很麻烦?

另外说的下载大小限制是什么呢?我看我用这个下载的最大的 TG 视频是 3.8GB

Samling 139days ago #55

能保存pikpak吗

来聊天 ~ 一眼顶针

GiffGaff卡需要的来 ~

阿迪达斯 139days ago #56

bd

✡️以针会友

xtfj1989 136days ago #57

@brains #0

mark

Yamahara 135days ago #58

bd

致靖 135days ago #59

有点意思

以针会友

neek 122days ago edited 122days ago #60

? 项目好像没了

...好像是连号都没了

✉️PM | ✈️TG

brains 楼主 122days ago #61

@neek #60 不知道为啥会显示404。。。

drfy 122days ago #62

@brains #0 cd2可以基于alist吗,如果能融合下115bot这个项目就完美了'只需要一个机器人了

✈️ TG | ❤️ 以针会友 | ☺️ ll.sd—流量商店

neek 122days ago #63

@brains #61 你自己看到的吗

✉️PM | ✈️TG

cheat0916 122days ago #64

这不得点个star

brains 楼主 122days ago #65

@neek #63 我自己看得到

maimaige 88days ago edited 88days ago #66

佬,网盘失踪了

brains 楼主 88days ago edited 88days ago #67

更新网盘: https://gofile.io/d/yK3meL

brains 楼主 88days ago #68

@maimaige #66 看帖子置顶 更新了个下载链接

bacon159 88days ago #69

老哥,这个机器人能不能支持下 下载阿里的视频转存到115呀

TG | 探针 | 白嫖推送 | domainkeeper | TrafficCop | 哪吒命令修复

tamdan 88days ago #70

谢谢分享,收藏先

brains 楼主 88days ago #71

@bacon159 #69 直接用CloudDrive2或者alist将阿里云盘的资源秒传到115

bacon159 88days ago #72

@brains #71 就是因为无法秒传 才需要vps手动搬的,,,能秒传就不需要这个机器人了

TG | 探针 | 白嫖推送 | domainkeeper | TrafficCop | 哪吒命令修复

brains 楼主 88days ago #73

@bacon159 #72 不应该啊 确定CloudDrive2无法秒传么

bacon159 88days ago #74

@brains #73 对 有些国漫资源秒传都是需要有人搬运的 可能过了一天都没人搬运这样 只能自己搬运

TG | 探针 | 白嫖推送 | domainkeeper | TrafficCop | 哪吒命令修复

brains 楼主 88days ago #75

@bacon159 #74 那阿里云盘没开第三方应用权益包的话 挂载CloudDrive2想下到本地也会限速吧 只能开了vip下载到本地再上传到115?

bacon159 88days ago edited 88days ago #76

@brains #75 限速400k每秒这样 下载了再上传到115如果在vps是没有感知的 肯定比等别人一天后才搬运要快哈哈

TG | 探针 | 白嫖推送 | domainkeeper | TrafficCop | 哪吒命令修复

brains 楼主 88days ago #77

@bacon159 #76 那用chatgpt写个搬运脚本啊 两个网盘都挂载到CloudDrive2上 然后从阿里云盘直接用脚本复制到115

lsj2020n 88days ago #78

牛批

telnetnode 88days ago #79

好东西

菲镜 88days ago #80

感谢分享,等一个docker

半天吃不了一个瓜 / 一天喝不了一瓶奶 / 一周睡不了几个觉

czm180 87days ago #81

这玩意不错,谢谢楼主了

Gabriel-Hawkins 87days ago #82

马克

✈️TG | ✉️站内PM

目前站内成功交易次数:11次 持续更新中 | 好听

saerlanse 87days ago #83

BD

doctorwisewater 87days ago #84

谢谢分享

ljm 84days ago #85

可以直接把tg视频转发给他,让他下载吗

TG:@galili1

季伯常 临时禁言 84days ago #86

bd

nu11 84days ago #87

好东西

Tg @nu11ppbot

PeakView 84days ago #88

强!

真诚永远是最好的必杀技

联系我在TG~

rgb5099888 78days ago #89

支持

poliste 73days ago #90

链接好像失效了

brains 楼主 73days ago edited 73days ago #91

保存为 xxx.py

import os import shlex import subprocess import logging from tqdm import tqdm from telegram import Update from telegram.ext import ApplicationBuilder, CommandHandler, MessageHandler, CallbackContext from telegram.ext.filters import TEXT from urllib.parse import urlparse from datetime import datetime

替换为你的 Telegram 机器人 API Token

API_TOKEN = '1234567890:beTK1P4NtjnVnLs-gtLHgCQJXyoI0gWgRWg'

下载目录

DOWNLOAD_DIR = '/Down'

允许使用的用户 ID

ALLOWED_USER_ID = 1234567890 # 替换为你想允许的用户 ID

网盘挂载路径

MOUNT_PATH = '/115/Server'

Rclone 配置的项目名称 rclone config 可以查看

RCLONE_NAME = '115'

确保下载目录存在

os.makedirs(DOWNLOAD_DIR, exist_ok=True)

配置日志记录

LOGGING_ENABLED = os.getenv('LOGGING_ENABLED', 'true').lower() == 'true' if LOGGING_ENABLED: logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s') else: logging.basicConfig(level=logging.CRITICAL) # 只记录严重错误

logger = logging.getLogger(name)

/start 命令的处理函数

async def start(update: Update, context: CallbackContext): if update.message.from_user.id != ALLOWED_USER_ID: await update.message.reply_text('您无权使用此机器人。') return await update.message.reply_text('你好!向我发送视频 URL,我将为您下载该视频。')

处理收到的 URL

async def handle_message(update: Update, context: CallbackContext): if update.message.from_user.id != ALLOWED_USER_ID: await update.message.reply_text('您无权使用此机器人。') return

url = update.message.text chat_id = update.message.chat_id

解析 URL 中的域名

domain = urlparse(url).netloc domain_dir = os.path.join(DOWNLOAD_DIR, domain)

确保域名对应的目录存在

os.makedirs(domain_dir, exist_ok=True) current_date = datetime.now().strftime('%Y-%m-%d')

download_command = f'yt-dlp -o {shlex.quote(domain_dir + "/%(title).30s_" + current_date + ".%(ext)s")} {shlex.quote(url)}'

发送下载开始消息

await update.message.reply_text(f'开始下载:{url}')

try:

运行 yt-dlp 命令并捕获输出

process = subprocess.Popen(shlex.split(download_command), stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True, encoding='utf-8')

progress_message = await update.message.reply_text('下载进度:0%') last_progress = 0

while True: output = process.stdout.readline() if output == '' and process.poll() is not None: break if output: logger.info(output.strip())

解析进度信息

if '[download]' in output and '%' in output: progress = output.split('%')[0].split()[-1].strip() try: progress = float(progress) if progress >= last_progress + 10: last_progress = progress await progress_message.edit_text(f'下载进度:{progress}%') except ValueError: pass

捕获下载过程中的错误信息

stderr_output = process.stderr.read() if process.returncode == 0: await update.message.reply_text('下载完成!') logger.info(f'Download complete for {url}')

同步文件到115:/115/Server

sync_command = f'rclone move {shlex.quote(DOWNLOAD_DIR)} {RCLONE_NAME}:{shlex.quote(MOUNT_PATH)}' sync_process = subprocess.run(shlex.split(sync_command), capture_output=True, text=True)

if sync_process.returncode == 0: await update.message.reply_text('文件同步完成!') logger.info('File sync complete') else: await update.message.reply_text(f'文件同步错误:{sync_process.stderr.strip()}') logger.error(f'File sync error: {sync_process.stderr.strip()}')

else: await update.message.reply_text(f'Error: {stderr_output.strip()}') logger.error(f'Error: {stderr_output.strip()}') except Exception as e: await update.message.reply_text(f'Error: {str(e)}') logger.error(f'Exception occurred: {str(e)}')

def main(): application = ApplicationBuilder().token(API_TOKEN).build() application.add_handler(CommandHandler("start", start)) application.add_handler(MessageHandler(TEXT, handle_message)) # 更正后的过滤器

运行机器人

application.run_polling()

if name == 'main': main()

brains 楼主 73days ago #92

@poliste #90 直接把代码发到帖子里了 看置顶

YOUKOVO 73days ago #93

bd

1 .. 6 7 8 9 10

内容 预览 对照

支持 markdown语法

鼓励友善发言,禁止人身攻击

xxxxxxxxxx

1

1 ​

AC娘

洋葱头

小黄鸡

发布评论

88

等级 Lv 4 鸡腿 1959 关注 0 回复 0 我 0

主题帖 11 评论数 294 粉丝 2 收藏 192 私信 0 发帖

快捷功能区 推荐阅读 管理记录 幸运抽奖 邀请好友 合作商家 友站链接

所有版块 日常 技术 情报 测评 交易 曝光 拼车 生活 贴图 推广 内版 Dev 无意义 沙盒

📈用户数目📈

目前论坛共有23058位seeker

🎉欢迎新用户🎉

Earful8638

sweetdog

jimmyhe

注册一个玩玩

xxs2023

saberashura

fijckf

suua

相关网站 LowEndTalk LowEndSpirit HostLoc ServerHunter

站内导航 关于本站 隐私协议 RSS订阅 sitemap

商业推广 商家申请规则 Premium Provider 合作商家展示

其他平台 电报频道 电报群组

联系我们

Copyright © 2022 - 2024 All rights Reserved

相关文章