這是一個用 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"。注意:僅建議在上傳到團隊雲端硬碟時使用服務帳戶。
讓我們只建立我們需要的服務帳戶。
Warning : Abuse of this feature is not the aim of this project and we do NOT recommend that you make a lot of projects, just one project and 100 SAs allow you plenty of use, its also possible that over abuse might get your projects banned by Google.
注意:如果您過去曾透過此腳本建立 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