这是一个用 Python 编写的 Telegram Bot,用于将互联网上的文件镜像到您的 Google Drive 或 Telegram。基于 python-aria-mirror-bot
在每个文件中,基本代码都有重大变化,几乎完全不同。这是我记得的一些功能和修复。
root
或 TeamDrive ID,文件夹 ID 将以非递归方法列出)amd64, arm64/v8, arm/v7, s390x
UPSTREAM_REPO
重新启动命令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
mediafire、letsupload.io、hxfile.co、anonfiles.com、bayfiles.com、antfiles、fembed.com、fembed.net、femax20.com、layarkacaxxi.icu、fcdn.stream、sbplay.org、naniplay.com、naniplay。 nanime.in、naniplay.nanime.biz、sbembed.com、streamtape.com、streamsb.net、 feurl.com、upload.ee、pixeldrain.com、racaty.net、1fichier.com、1drv.ms(仅适用于文件,不适用于文件夹或企业帐户)、uptobox.com 和 Solidfiles.com
git clone https://github.com/arshsisodiya/helios-mirror 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
填写其余字段。下面讨论每个字段的含义:
1. 必填字段
BOT_TOKEN
:您从 @BotFather 获得的 Telegram 机器人令牌。 Str
GDRIVE_FOLDER_ID
:这是您要将所有镜像上传到的 Google 云端硬盘文件夹或root
的文件夹/TeamDrive ID。 Str
OWNER_ID
:机器人所有者的 Telegram 用户 ID(不是用户名)。 Int
DOWNLOAD_DIR
:下载内容应下载到的本地文件夹的路径。 Str
DOWNLOAD_STATUS_UPDATE_INTERVAL
:更新进度/状态消息之前的时间(以秒为单位)。建议至少10
秒。 Int
AUTO_DELETE_MESSAGE_DURATION
:时间间隔(以秒为单位),之后机器人将删除其消息和命令消息,预计将立即查看。注意:设置为-1
可禁用自动消息删除。 Int
AUTO_DELETE_UPLOAD_MESSAGE_DURATION
:时间间隔(以秒为单位),之后机器人将删除其消息和命令消息,预计将立即查看。注意:设置为-1
可禁用自动上传消息删除。 Int
TELEGRAM_API
:这是为了验证您的 Telegram 帐户以下载 Telegram 文件。您可以从 https://my.telegram.org 获取此信息。 Int
TELEGRAM_HASH
:这是为了验证您的 Telegram 帐户以下载 Telegram 文件。您可以从 https://my.telegram.org 获取此信息。 Str
2. 可选字段
BOT_PM
: - 如果要在用户的 PM 中发送镜像链接和盗取文件,请设置为True
,默认为False
。FORCE_BOT_PM
: - 如果为True,则将其设置True
所有镜像链接和盗取文件将直接在PM中发送,镜像链接不会在当前聊天中发送,并且源消息将在镜像/盗取完成后立即删除,AUTO_DELETE_UPLOAD_MESSAGE_DURATION将不适用。IS_TEAM_DRIVE
:如果上传到 TeamDrive,则设置为True
。默认为False
。 Bool
DATABASE_URL
:您的 SQL 数据库 URL。按照Generate Database 生成数据库。数据将保存在数据库中:auth 和 sudo 用户、leech 设置(包括每个用户的缩略图)、rss 数据和不完整的任务。注意:如果在heroku上部署并使用heroku postgresql,请从config.env文件中删除此变量。 DATABASE_URL将从heroku变量中获取。 Str
AUTHORIZED_CHATS
:填写您要授权的群组/用户的 user_id 和 chat_id 。用空格将它们分开。 Str
SUDO_USERS
:填写您想要授予 sudo 权限的用户的 user_id。用空格将它们分开。 Str
IGNORE_PENDING_REQUESTS
:重启后忽略待处理的请求。默认为False
。 Bool
USE_SERVICE_ACCOUNTS
:是否使用服务帐户。为此,请参阅下面的“使用服务帐户”部分。默认为False
。 Bool
INDEX_URL
:请参阅 https://gitlab.com/ParveenBhadooOfficial/Google-Drive-Index。 Str
STATUS_LIMIT
:限制数量。带有按钮的状态消息中显示的任务。注意:建议限制为4
任务。 Str
STOP_DUPLICATE
:机器人将检查 Drive 中的文件,如果 Drive 中存在该文件,则下载或克隆将停止。 (注意:文件将使用文件名而不是文件哈希进行检查,因此此功能尚不完善)。默认为False
。 Bool
CMD_INDEX
:命令索引号。该数字将添加在所有命令的末尾。 Str
TORRENT_TIMEOUT
:使用 qBittorrent 和 Aria2c 下载死种子的超时时间(以秒为单位)。 Str
EXTENSION_FILTER
:不会上传/克隆的文件扩展名。用空格将它们分开。 Str
INCOMPLETE_TASK_NOTIFIER
:重启后获取不完整的任务消息。需要数据库和(超组或通道)。默认为False
。 Bool
UPTOBOX_TOKEN
:用于镜像 uptobox 链接的 Uptobox 令牌。从 Uptobox 高级帐户获取。UPSTREAM_REPO
:您的 github 存储库链接,如果您的存储库是私有的,请添加https://username:{githubtoken}@github.com/{username}/{reponame}
格式。从 Github 设置中获取令牌。因此,您可以在每次重新启动时从已填充的存储库中更新您的机器人。 Str
。UPSTREAM_BRANCH
:用于更新的上游分支。默认为master
。 Str
MIRROR_LOGS
: - 要存储镜像日志的频道/组的聊天 ID,注意以管理员身份在镜像日志频道/组中添加机器人。LEECH_LOG
: - 将上传被盗取文件的频道/组的聊天 ID,注意:仅放置 1 个以 -100xxxxxxxxx 开头的频道/组 ID,注意在该频道/组中添加机器人作为管理员,如果您保留此空机器人将发送盗取当前聊天中的文件。LEECH_SPLIT_SIZE
:分割大小(以字节为单位)。默认为2GB
。如果您的帐户是高级帐户,则默认值为4GB
。 Str
AS_DOCUMENT
:Telegram 文件上传的默认类型。默认为False
表示作为媒体。 Bool
EQUAL_SPLITS
:将大于LEECH_SPLIT_SIZE的文件拆分为大小相等的部分(不适用于 zip cmd)。默认为False
。 Bool
CUSTOM_FILENAME
:将自定义单词添加到窃取的文件名中。 Str
USER_SESSION_STRING
:从您的电报帐户下载/上传。如果您拥有高级帐户。要生成会话字符串,请在安装 repo 文件夹后使用此命令python3 generate_string_session.py
。 Str
。注意:您不能使用带有私人消息的机器人。将其与超级组或频道一起使用。TITLE_NAME
:电报页面的标题名称(使用 /list 命令时)AUTHOR_NAME
: = Telegraph 页面的作者姓名AUTHOR_URL
: = Telegraph 页面的作者 URLCRYPT
:gdtot google 驱动器链接生成器的 Cookie。请按照以下步骤操作。APPDRIVE_EMAIL
: - 您的 Appdrive 帐户电子邮件APPDRIVE_PASS
: - 您的 Appdrive 帐户密码TORRENT_DIRECT_LIMIT
:限制 Torrent/Direct 镜像大小。不要添加单位。默认单位是GB
。ZIP_UNZIP_LIMIT
:限制 zip 和 unzip 命令的大小。不要添加单位。默认单位是GB
。CLONE_LIMIT
:限制可以克隆的 Google Drive 文件夹/文件的大小。不要添加单位。默认单位是GB
。MEGA_LIMIT
:限制超级下载的大小。不要添加单位。默认单位是GB
。STORAGE_THRESHOLD
:保留特定存储空间,任何下载将导致保留的可用存储空间小于此值将被取消。不要添加单位。默认单位是GB
。BASE_URL_OF_BOT
:部署机器人以使用 qbittorrent Web 选择的有效基本 URL。 URL 的格式应为http://myip
,其中myip
是您的机器人的 IP/域(公共),或者如果您选择了80
以外的端口,则以这种格式编写http://myip:port
( http
而不是https
)。此 Var 在 VPS 上是可选的,并且是 Heroku 所必需的,特别是为了避免应用程序休眠/空闲。对于 Heroku,请填写https://yourappname.herokuapp.com
。还空转吗?您可以使用 http://cron-job.org 来 ping 您的 Heroku 应用程序。 Str
SERVER_PORT
:仅适用于 VPS,即BASE_URL_OF_BOT端口。 Str
WEB_PINCODE
:如果为空或False
表示在 qbit Web 选择时不再需要 pincode。 Bool
MaxConnecs
限制,减少 qbittorrent 配置中的AsyncIOThreadsCount
并将DiskWriteCacheSize
限制设置为32
。RSS_DELAY
:RSS 刷新间隔时间(以秒为单位)。建议至少900
秒。默认值为900
(秒)。 Str
RSS_COMMAND
:选择所需操作的命令。 Str
RSS_CHAT_ID
:将发送 rss 链接的聊天 ID。如果使用频道,则添加频道 ID。 Str
RSS_USER_SESSION_STRING
:从您的 telegram 帐户发送 rss 链接。不要将机器人添加到频道,然后将频道链接到组以获取 rss 链接,因为机器人不会从自身或其他机器人读取命令。要生成会话字符串,请在安装 repo 文件夹后使用此命令python3 generate_string_session.py
。 Str
。注意:不要使用与USER_SESSION_STRING
相同的会话字符串。DATABASE_URL
和RSS_CHAT_ID
是必需的,否则所有 rss 命令将不起作用。您必须在组中使用机器人。您可以将机器人添加到频道并将该频道链接到组,以便机器人发送到频道的消息将被转发到组,而无需使用RSS_USER_STRING_SESSION
。ACCOUNTS_ZIP_URL
:仅当您想从索引链接或任何直接下载链接而不是网页链接从外部加载您的服务帐户时。将帐户文件夹存档到 ZIP 文件。在此填写 zip 文件的直接下载链接。 Str
。如果索引需要认证则添加直接下载,如下所示:https://username:[email protected]/...
TOKEN_PICKLE_URL
:仅当您想从索引链接外部加载token.pickle时。使用该文件的直接链接填写此内容。 Str
MULTI_SEARCH_URL
:在此处检查drive_folder
设置。在此写入drive_folder文件。打开该要点的原始文件,它的 URL 将是您所需的变量。删除提交 ID 后应采用以下形式:https://gist.githubusercontent.com/username/gist-id/raw/drive_folder。 Str
YT_COOKIES_URL
:Youtube 身份验证 cookie。在此处检查设置。使用 gist 原始链接并从链接中删除提交 ID,以便您只能从 gists 进行编辑。 Str
NETRC_URL
:创建 .netrc 文件,其中包含 aria2c 和 yt-dlp 的身份验证。使用 gist 原始链接并从链接中删除提交 ID,以便您只能从 gists 进行编辑。注意:编辑 .nterc 后,您需要重新启动 docker,或者如果部署在 heroku 上,则重新启动 dyno,以防您的编辑与 aria2c 身份验证相关。 Str
MEGA_API_KEY
:用于镜像 mega.nz 链接的 Mega.nz API 密钥。从 Mega SDK 页面获取。 Str
MEGA_EMAIL_ID
:用于在 mega.nz 上注册以使用高级帐户的电子邮件 ID。 Str
MEGA_PASSWORD
:mega.nz 帐户的密码。 Str
VIEW_LINK
:查看链接按钮在浏览器中打开文件索引链接而不是直接下载链接,您可以确定它是否与您的索引代码兼容,打开您索引中的任何视频并检查其 URL 是否以?a=view
结尾。与 BhadooIndex 代码兼容。默认为False
。 Bool
SOURCE_LINK
: - 如果您想获取镜像/克隆文件的源链接,请将其设置为True
,默认为False
。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 限制)。 Str
SEARCH_PLUGINS
:qBittorrent 搜索插件列表(github 原始链接)。我添加了一些插件,您可以根据需要删除/添加插件。主要来源:qBittorrent 搜索插件(官方/非官方)。 Str
笔记
generate_drive_token.py
生成的链接。 pip3 install google-api-python-client google-auth-httplib2 google-auth-oauthlib
python3 generate_drive_token.py
重要提示:
SERVER_PORT
变量设置为80
或您想要使用的任何其他端口。 sudo docker container prune
sudo docker image prune -a
nproc
cmd检查您机器的处理单元数量并将其乘以4,然后编辑qBittorrent.conf中的AsyncIOThreadsCount
。CONFIG_FILE_URL
变量,谷歌一下。 sudo dockerd
sudo docker build . -t mirror-bot
sudo docker run -p 80:80 mirror-bot
sudo docker ps
sudo docker stop id
注意:如果您想使用 80 以外的端口,也请在 docker-compose.yml 中更改它。
sudo apt install docker-compose
sudo docker-compose up
sudo docker-compose up --build
sudo docker-compose stop
sudo docker-compose start
mirror -Mirror
zipmirror - Mirror and upload as zip
unzipmirror - Mirror and extract files
qbmirror - Mirror torrent using qBittorrent
qbzipmirror - Mirror torrent and upload as zip using qb
qbunzipmirror - Mirror torrent and extract files using qb
leech - Leech
zipleech - Leech and upload as zip
unzipleech - Leech and extract files
qbleech - Leech torrent using qBittorrent
qbzipleech - Leech torrent and upload as zip using qb
qbunzipleech - Leech torrent and extract using qb
clone - Copy file/folder to Drive
count - Count file/folder of Drive
ytdl - Mirror yt-dlp supported link
ytdlzip - Mirror yt-dlp supported link as zip
ytdlleech - Leech through yt-dlp supported link
ytdlzipleech - Leech yt-dlp support link as zip
leechset - Leech settings
setthumb - Set thumbnail
status - Get Mirror Status message
btsel - select files from torrent
rsslist - List all subscribed rss feed info
rssget - Get specific No. of links from specific rss feed
rsssub - Subscribe new rss feed
rssunsub - Unsubscribe rss feed by title
rssset - Rss Settings
list - Search files in Drive
search - Search for torrents with API
cancel - Cancel a task
cancelall - Cancel all tasks
del - Delete file/folder from Drive
log - Get the Bot Log
shell - Run commands in Shell
restart - Restart the Bot
stats - Bot Usage Stats
ping - Ping the Bot
help - All cmds with description
UPSTREAM_REPO
变量可用于编辑/添加存储库中的任何文件。UPSTREAM_REPO
私有文件,以防您想获取包括私有文件在内的所有文件。UPSTREAM_REPO
和您的私有文件,那么您的私有文件将从此存储库中覆盖。此外,如果您使用TOKEN_PICKLE_URL
等 URL 变量,那么这些变量中的所有文件都将覆盖在部署之前添加的私有文件或来自私有UPSTREAM_REPO
的私有文件。UPSTREAM_REPO
,请小心,以防requirements.txt 中发生任何更改,您的机器人在重新启动后将无法启动。在这种情况下,您需要使用更新的代码再次部署以安装新要求,或者只需将UPSTREAM_REPO
更改为包含旧更新的分支链接。UPSTREAM_REPO
,如果您从官方存储库获取提交,也要小心。UPSTREAM_REPO
中的更改仅在重新启动后才会生效。UPSTREAM_BRANCH
永远不要在这里填写heroku。 d:ratio:time
前缀以及 leech 或mirror cmd。d
perfix 将导致使用 aria2c 或 qbittorrent 的全局选项。MaxRatio
和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 或从每个文件创建者(上传者电子邮件)克隆 2 TB。
选择以下方法之一
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
1. 乘坐铁路
Provision PostgreSQL
PostgresSQL
Connect
列Postgres Connection URL
并用它填充DATABASE_URL
变量2. 使用 Heroku PostgreSQL
3.使用ElephantSQL
Create New Instance
Select Region
Review
Create instance
DATABASE_URL
变量使用多个 TD/文件夹中的列表。在终端中运行driveid.py并按照它操作。它将生成drive_folder文件,或者您可以简单地在工作目录中创建drive_folder
文件并填充它,检查以下格式:
DriveName folderID/tdID or `root` IndexLink(if available)
DriveName folderID/tdID or `root` IndexLink(if available)
要在 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)。可以添加不同主机的多个帐户,每个帐户之间用新行分隔。
基础回购信用:Anasty