这个 Telegram Bot 基于 python-aria-mirror-bot,经过了重大修改,旨在有效地将文件从 Internet 镜像或获取到各种目的地,包括 Google Drive、Telegram 或任何 rclone 支持的云。它是使用 Python 异步编程构建的。
root
或 TeamDrive ID,文件夹 ID 将以非递归方法列出)。基于 Sreeraj searchX-bot。 (任务选项)ZIP、RAR、TAR、7z、ISO、WIM、CAB、GZIP、BZIP2、APM、ARJ、CHM、CPIO、CramFS、DEB、DMG、FAT、HFS、LZH、LZMA、LZMA2、MBR、MSI、MSLZ、NSIS、 NTFS、RPM、SquashFS、UDF、VHD、XAR、Z、TAR.XZ、CBZ
amd64, arm64/v8, arm/v7
UPSTREAM_REPO
重新启动命令mediafire(文件/文件夹)、hxfile.co(需要带有名称的 cookies txt)[hxfile.txt]、streamtape.com、streamb.net、streamhub.ink、streamvid.net、doodstream.com、feurl.com、upload.ee 、pixeldrain.com、racaty.net、1fichier.com、1drv.ms(仅适用于文件,不适用于文件夹或企业帐户)、filelions.com、 Streamwish.com、send.cm(文件/文件夹)、solidfiles.com、linkbox.to(文件/文件夹)、shrdsk.me (sharedisk.io)、akmfiles.com、wetransfer.com、pcloud.link、gofile.io (文件/文件夹)、easyupload.io、mdisk.me(带有 ytdl)、tmpsend.com、qiwi.gg、berkasdrive.com、 mp4upload.com、terabox.com(仅限视频文件/文件夹)。
git clone https://github.com/anasty17/mirror-leech-telegram-bot mirrorbot/ && cd mirrorbot
sudo apt install python3 python3-pip
按照 Docker 官方文档安装 Docker
sudo pacman -S docker python
pip3 install -r requirements-cli.txt
cp config_sample.env config.env
_____REMOVE_THIS_LINE_____=True
填写其余字段。下面讨论每个字段的含义。注意:所有值都必须填写在引号之间,即使它是Int
、 Bool
或List
。
1. 必填字段
BOT_TOKEN
:您从 @BotFather 获得的 Telegram 机器人令牌。 Str
OWNER_ID
:机器人所有者的 Telegram 用户 ID(不是用户名)。 Int
TELEGRAM_API
:这是为了验证您的 Telegram 帐户以下载 Telegram 文件。您可以从 https://my.telegram.org 获取此信息。 Int
TELEGRAM_HASH
:这是为了验证您的 Telegram 帐户以下载 Telegram 文件。您可以从 https://my.telegram.org 获取此信息。 Str
2. 可选字段
USER_SESSION_STRING
:如果用户是PREMIUM
则从您的 telegram 帐户下载/上传并发送 rss。要生成会话字符串,请在安装 repo 文件夹后使用此命令python3 generate_string_session.py
。 Str
。 *注意*:您不能使用带有私人消息的机器人。与 superGroup 一起使用。DATABASE_URL
:您的 Mongo 数据库 URL(连接字符串)。按照Generate Database 生成数据库。数据将保存在数据库中:机器人设置、用户设置、RSS 数据和未完成的任务。注意:您始终可以从官方网站 ->(浏览集合)编辑保存在数据库中的所有设置。 Str
DOWNLOAD_DIR
:下载的 vps 本地文件夹的路径。 Str
CMD_SUFFIX
:命令索引号。该数字将添加在所有命令的末尾。 Str
| Int
AUTHORIZED_CHATS
:填写您要授权的群组/用户的 user_id 和 chat_id 。要仅对特定主题进行身份验证,请按以下格式编写: chat_id|thread_id
Ex:-100XXXXXXXXXXXX|10 或 Ex:-100XXXXXXXXXXX|10|12。用空格将它们分开。 Int
SUDO_USERS
:填写您想要授予 sudo 权限的用户的 user_id。用空格将它们分开。 Int
DEFAULT_UPLOAD
:是rc
上传到RCLONE_PATH
还是gd
上传到GDRIVE_ID
。默认为rc
。在这里阅读更多内容。 Str
STATUS_UPDATE_INTERVAL
:以秒为单位的时间,之后将更新进度/状态消息。建议至少10
秒。 Int
STATUS_LIMIT
:限制数量。带有按钮的状态消息中显示的任务。默认值为10
。注意:建议限制为4
任务。 Int
EXTENSION_FILTER
:不会上传/克隆的文件扩展名。用空格将它们分开。 Str
INCOMPLETE_TASK_NOTIFIER
:重启后获取不完整的任务消息。需要数据库和superGroup。默认为False
。 Bool
FILELION_API
:镜像 Filelion 链接的 Filelion api 密钥。从 Filelion 获取。 str
STREAMWISH_API
:用于镜像 Streamwish 链接的 Streamwish api 密钥。从 Streamwish 获取。 str
YT_DLP_OPTIONS
:默认 yt-dlp 选项。在此处检查所有可能的选项或使用此脚本将 cli 参数转换为 api 选项。格式:键:值|键:值|键:值。在整数或浮点数前添加^
,有些数字必须是数字,有些必须是字符串。 str
USE_SERVICE_ACCOUNTS
:是否使用 google-api-python-client 的服务帐户。为此,请参阅下面的“使用服务帐户”部分。默认为False
。 Bool
FFMPEG_CMDS
:ffmpeg 命令列表列表。您可以在上传之前为所有文件设置多个 ffmpeg 命令。不要一开始就写ffmpeg,直接从参数开始。 list
-del
添加到您希望机器人在命令运行完成后删除原始文件的列表!-del
将在 cmd 完整运行后删除原始媒体。NAME_SUBSTITUTE
:添加单词/字母/字符/句子/模式以删除或替换为区分大小写或不区分大小写的其他单词。注意事项:BACKSLASH
,这些字符是: ^$.|?*+()[]{}-
3.GDrive工具
GDRIVE_ID
:这是您要使用 google-api-python-client 将所有镜像上传到的 Google Drive 或root
的文件夹/TeamDrive ID。 Str
IS_TEAM_DRIVE
:如果使用 google-api-python-client 上传到 TeamDrive,则设置为True
。默认为False
。 Bool
INDEX_URL
:请参阅 https://gitlab.com/ParveenBhadooOfficial/Google-Drive-Index。 Str
STOP_DUPLICATE
:机器人将检查云端硬盘中的文件/文件夹名称,以防上传到GDRIVE_ID
。如果它存在于云端硬盘中,则下载或克隆将停止。 (注意:项目将使用名称而不是哈希值进行检查,因此此功能尚不完善)。默认为False
。 Bool
4. 克隆
RCLONE_PATH
:要使用 rclone 将所有文件/文件夹上传到的默认 rclone 路径。 Str
RCLONE_FLAGS
:键:值|键|键|键:值。在这里检查所有 RcloneFlags。 Str
RCLONE_SERVE_URL
:部署机器人以使用 rclone 服务的有效 URL。 URL 的格式应为http://myip
,其中myip
是您的机器人的 IP/域(公共),或者如果您选择了80
以外的端口,则以这种格式编写http://myip:port
( http
而不是https
)。 Str
RCLONE_SERVE_PORT
:这是RCLONE_SERVE_URL端口。默认值为8080
。 Int
RCLONE_SERVE_USER
:rclone 服务身份验证的用户名。 Str
RCLONE_SERVE_PASS
:rclone 服务身份验证的密码。 Str
5. 更新
UPSTREAM_REPO
:您的 github 存储库链接,如果您的存储库是私有的,请添加https://username:{githubtoken}@github.com/{username}/{reponame}
格式。从 Github 设置中获取令牌。因此,您可以在每次重新启动时从已填充的存储库中更新您的机器人。 Str
。UPSTREAM_BRANCH
:用于更新的上游分支。默认为master
。 Str
6.水蛭
LEECH_SPLIT_SIZE
:分割大小(以字节为单位)。默认为2GB
。如果您的帐户是高级帐户,则默认值为4GB
。 Int
AS_DOCUMENT
:Telegram 文件上传的默认类型。默认为False
表示作为媒体。 Bool
EQUAL_SPLITS
:将大于LEECH_SPLIT_SIZE的文件拆分为大小相等的部分(不适用于 zip cmd)。默认为False
。 Bool
MEDIA_GROUP
:查看媒体组中上传的分割文件部分。默认为False
。 Bool
。USER_TRANSMISSION
:由用户会话上传/下载。仅在 superChat 中。默认为False
。 Bool
MIXED_LEECH
:由用户和机器人会话根据文件大小上传。仅在 superChat 中。默认为False
。 Bool
LEECH_FILENAME_PREFIX
:将自定义单词添加到窃取的文件名中。 Str
LEECH_DUMP_CHAT
:文件上传位置的 ID 或用户名或 PM(私人消息)。 Int
| Str
。在频道/超级组 ID 前添加-100
。THUMBNAIL_LAYOUT
:缩略图布局(宽度x高度、2x2、3x3、2x4、4x4...),为缩略图排列了多少张照片。 Str
7.qBittorrent/Aria2c/Sabnzbd
TORRENT_TIMEOUT
:使用 qBittorrent 和 Aria2c 下载死种子的超时时间(以秒为单位)。 Int
BASE_URL
:部署机器人以使用 torrent/nzb Web 文件选择的有效基本 URL。 URL 的格式应为http://myip
,其中myip
是您的机器人的 IP/域(公共),或者如果您选择了80
以外的端口,则以这种格式编写http://myip:port
( http
而不是https
)。 Str
BASE_URL_PORT
:这是BASE_URL端口。默认值为80
。 Int
WEB_PINCODE
:在从网络中的 torrent 中选择文件之前是否要求输入密码。默认为False
。 Bool
。MaxConnections
限制,减少AsyncIOThreadsCount
,将DiskWriteCacheSize
设置为32
并减少MemoryWorkingSetLimit
。8.JDownloader
JD_EMAIL
: 在 JDownloader 上注册 jdownloader 电子邮件JD_PASS
: jdownloader密码9. 南非国家银行
USENET_SERVERS
:字典列表,您可以添加任意数量,并且 sabnzbd 设置中有一个服务器按钮可以编辑当前服务器和添加新服务器。
[{'名称':'主','主机':'','端口':563,'超时':60,'用户名':'','密码':'','连接':8,' ssl':1,'ssl_verify':2,'ssl_ciphers':'','启用':1, “必需”:0,“可选”:0,“保留”:0,“发送组”:0,“优先级”:0}]
阅读本文以获取更多信息
在您的 vps 中打开端口 8070,以便从任何设备访问完整的 Web 界面。像 http://ip:8070/sabnzbd/ 一样使用它。用户名:mltb,密码:mltbmltb
10.RSS
RSS_DELAY
:RSS 刷新间隔时间(以秒为单位)。建议至少600
秒。默认值为600
(秒)。 Int
RSS_CHAT
:将发送 rss 链接的聊天ID or USERNAME or ID|TOPIC_ID or USERNAME|TOPIC_ID
。如果您希望将消息发送到频道,请添加频道 ID。在频道 ID 前添加-100
。 Int
| Str
RSS_CHAT
是必需的,否则监视器将无法工作。您必须使用USER_STRING_SESSION
--OR-- CHANNEL 。如果使用频道,则应将机器人添加到频道和组(链接到频道)中,并且RSS_CHAT
是频道 ID,因此机器人发送到频道的消息将被转发到组。否则,使用USER_STRING_SESSION
添加RSS_CHAT
的组 ID。如果未添加DATABASE_URL
,您将在机器人离线时错过提要。11. 排队系统
QUEUE_ALL
:下载和上传的并行任务数。例如,如果添加了 20 个任务,且QUEUE_ALL
为8
,则上传和下载任务的总和为 8,其余任务在队列中。 Int
。注意:如果要填充QUEUE_DOWNLOAD
或QUEUE_UPLOAD
,则QUEUE_ALL
值必须大于或等于最大的值,并且小于或等于QUEUE_UPLOAD
和QUEUE_DOWNLOAD
的总和。QUEUE_DOWNLOAD
:所有并行下载任务的数量。 Int
QUEUE_UPLOAD
:所有并行上传任务的数量。 Int
12. 种子搜索
SEARCH_API_LINK
:搜索 api 应用链接。通过部署此存储库获取您的 api。 Str
1337x、Piratebay、Nyaasi、Torlock、Torrent Galaxy、Zooqle、Kickass、Bitsearch、MagnetDL、Libgen、YTS、Limetorrent、TorrentFunk、Glodls、TorrentProject 和 YourBittorrent
SEARCH_LIMIT
:搜索 api 的搜索限制、每个站点的限制,而不是总体结果限制。默认值为零(每个站点的默认 API 限制)。 Int
SEARCH_PLUGINS
:qBittorrent 搜索插件列表(github 原始链接)。我添加了一些插件,您可以根据需要删除/添加插件。主要来源:qBittorrent 搜索插件(官方/非官方)。 List
确保您仍然挂载应用程序文件夹并从官方文档安装 docker。
sudo dockerd
sudo docker build . -t mltb
sudo docker run -p 80:80 -p 8080:8080 mltb
sudo docker ps
sudo docker stop id
注意:如果您想分别使用 80 和 8080 以外的端口进行 torrent 文件选择和 rclone 服务,请也在 docker-compose.yml 中进行更改。
sudo apt install docker-compose-plugin
sudo docker compose up
sudo docker compose up --build
sudo docker compose stop
sudo docker compose start
sudo docker compose logs --follow
重要提示:
将BASE_URL_PORT
和RCLONE_SERVE_PORT
变量设置为您要使用的任何端口。默认值分别为80
和8080
。
使用nproc
cmd检查您机器的处理单元数量并将其乘以4,然后编辑qBittorrent.conf中的AsyncIOThreadsCount
。
mirror - or /m Mirror
qbmirror - or /qm Mirror torrent using qBittorrent
jdmirror - or /jm Mirror using jdownloader
nzbmirror - or /nm Mirror using sabnzbd
ytdl - or /y Mirror yt-dlp supported links
leech - or /l Upload to telegram
qbleech - or /ql Leech torrent using qBittorrent
jdleech - or /jl Leech using jdownloader
nzbleech - or /nl Leech using sabnzbd
ytdlleech - or /yl Leech yt-dlp supported links
clone - Copy file/folder to Drive
count - Count file/folder from GDrive
usetting - or /us User settings
bsetting - or /bs Bot settings
status - Get Mirror Status message
sel - Select files from torrent
rss - Rss menu
list - Search files in Drive
search - Search for torrents with API
cancel - or /c Cancel a task
cancelall - Cancel all tasks
forcestart - or /fs to start task from queue
del - Delete file/folder from GDrive
log - Get the Bot Log
shell - Run commands in Shell
aexec - Execute async function
exec - Execute sync function
restart - Restart the Bot
stats - Bot Usage Stats
ping - Ping the Bot
help - All cmds with description
笔记
Termux
。generate_drive_token.py
生成的链接。 pip3 install google-api-python-client google-auth-httplib2 google-auth-oauthlib
python3 generate_drive_token.py
rclone config
命令创建新的远程。RCLONE_PATH
就像GDRIVE_ID
一样,是镜像的默认路径。除了这些变量DEFAULT_UPLOAD
之外,还可以选择默认工具,无论是 rclone 还是 google-api-python-client。DEFAULT_UPLOAD
= 'rc',则必须使用路径作为默认路径填充RCLONE_PATH
,或者使用rcl
来选择每个新任务的目标路径。DEFAULT_UPLOAD
= 'gd',则必须使用文件夹/TD id 填充GDRIVE_ID
。rclone/{user_id}.conf
中,则RCLONE_PATH
必须以mrcc:
开头。mrcc:
。UPSTREAM_REPO
变量可用于编辑/添加存储库中的任何文件。UPSTREAM_REPO
私有文件,以防您想获取包括私有文件在内的所有文件。UPSTREAM_REPO
和您的私有文件,那么您的私有文件将从此存储库中覆盖。此外,如果您将数据库用于私有文件,则数据库中的所有文件都将覆盖部署之前添加的私有文件或来自私有UPSTREAM_REPO
的私有文件。UPSTREAM_REPO
,请小心,以防requirements.txt 中发生任何更改,您的机器人在重新启动后将无法启动。在这种情况下,您需要使用更新的代码再次部署以安装新要求,或者只需将UPSTREAM_REPO
更改为包含旧更新的分支链接。UPSTREAM_REPO
,如果您从官方存储库获取提交,也要小心。UPSTREAM_REPO
中的更改仅在重新启动后才会生效。 -d
参数将导致使用 aria2c 或 qbittorrent 的全局选项。GlobalMaxRatio
和GlobalMaxSeedingMinutes
, -1
表示不限制,但可以手动取消。MaxRatioAction
。--seed-ratio
(0 表示无限制)和--seed-time
(0 表示无种子)。 为了使服务帐户正常工作,您必须在配置文件或环境变量中设置
USE_SERVICE_ACCOUNTS
= "True"。注意:仅建议在上传到团队云端硬盘时使用服务帐户。
让我们只创建我们需要的服务帐户。
警告:滥用此功能不是该项目的目的,我们不建议您制作很多项目,只有一个项目和 100 个 SA 可以让您充分使用,过度滥用也可能导致您的项目被禁止谷歌。
注意:如果您过去通过此脚本创建过 SA,您也可以通过运行以下命令重新下载密钥:
python3 gen_sa_accounts.py --download-keys $PROJECTID
注意: 1 个服务帐户每天可以上传/复制约 750 GB,1 个项目可以创建 100 个服务帐户,因此您每天可以上传 75 TB。
注意:所有人都可以从每个文件创建者(上传者帐户)复制
2TB/DAY
,因此,如果您收到错误userRateLimitExceeded
这并不意味着您超出了限制,但已超出文件创建者限制,即2TB/DAY
。
选择以下方法之一
python3 gen_sa_accounts.py --list-projects
python3 gen_sa_accounts.py --enable-services $PROJECTID
python3 gen_sa_accounts.py --create-sas $PROJECTID
python3 gen_sa_accounts.py --download-keys $PROJECTID
python3 gen_sa_accounts.py --quick-setup 1 --new-only
将创建一个名为 accounts 的文件夹,其中包含服务帐户的密钥。
选择以下方法之一
cd accounts
For Windows using PowerShell
$emails = Get-ChildItem .**.json |Get-Content -Raw |ConvertFrom-Json |Select -ExpandProperty client_email >>emails.txt
For Linux
grep -oPh '"client_email": "K[^"]+' *.json > emails.txt
cd ..
然后将 emails.txt 中的电子邮件添加到 Google 网上论坛,然后将此 Google 网上论坛添加到您的共享云端硬盘并将其提升为管理员,并从帐户文件夹中删除 email.txt 文件
python3 add_to_team_drive.py -d SharedTeamDriveSrcID
https://mongodb.com/
并注册。Deployment
标题下的Database
,您创建的集群将在那里。Allow Access From Anywhere
,然后按Add IP Address
而不编辑 IP,然后创建用户。Choose a connection
,然后按Connect your application
。选择Driver
* python * 和version
3.12 或更高版本。connection string
并将
替换为您的用户密码,然后按关闭。 使用多个 TD/文件夹中的列表。在终端中运行driveid.py并按照它操作。它将生成list_drives.txt文件,或者您可以简单地在工作目录中创建list_drives.txt
文件并填充它,检查以下格式:
DriveName folderID/tdID or `root` IndexLink(if available)
DriveName folderID/tdID or `root` IndexLink(if available)
例子:
TD1 root https://example.dev
TD2 0AO1JDB1t3i5jUk9PVA https://example.dev
要在 yt-dlp 中使用您的高级帐户或受保护的索引链接,请根据以下格式创建 .netrc 文件:
注意:创建 .netrc 而不是 netrc,该文件将被隐藏,因此创建后查看隐藏文件进行编辑。
格式:
machine host login username password my_password
例子:
machine instagram login anas.tayyar password mypassword
Instagram 注意:即使您想下载公共帖子,也必须登录,并且在第一次尝试后,您必须确认这是您从不同的 IP 登录的(您可以通过手机应用程序确认)。
YouTube 注意:对于youtube
身份验证,请使用 cookies.txt 文件。
使用 Aria2c,您还可以在有或没有用户名的情况下使用机器人的内置功能。这里是没有用户名的索引链接的示例。
machine example.workers.dev password index_password
其中 host 是提取器的名称(例如 instagram、Twitch)。可以添加不同主机的多个帐户,每个帐户之间用新行分隔。
如果你想表达你对这个项目的欣赏,那么请我喝杯咖啡怎么样?
币安ID:
52187862
泰达币地址:
TEzjjfkxLKQqndpsdpkA7jgiX7QQCL5p4f
网络:
TRC20
交易地址:
TEzjjfkxLKQqndpsdpkA7jgiX7QQCL5p4f
网络:
TRC20
比特币地址:
17dkvxjqdc3yiaTs6dpjUB1TjV3tD7ScWe
以太币地址:
0xf798a8a1c72d593e16d8f3bb619ebd1a093c7309