これは、インターネット上のファイルを Google ドライブまたは Telegram にミラーリングするために Python で書かれた Telegram ボットです。 python-aria-mirror-bot に基づく
それぞれの単一ファイルには基本コードからの大きな変更があり、ほぼ完全に異なります。ここでは私が覚えている機能と修正をいくつか紹介します。
root
または TeamDrive ID を使用した場合のみ、フォルダー ID は非再帰的方法でリストされます)amd64, arm64/v8, arm/v7, s390x
の Docker イメージのサポート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
の場合、すべてのミラーリングされたリンクとリーチされたファイルが PM で直接送信され、ミラーリングされたリンクは送信されません 現在のチャットとソース メッセージはミラー/リーチが完了した直後に削除され、AUTO_DELETE_UPLOAD_MESSAGE_DURATION は適用されません。IS_TEAM_DRIVE
: TeamDrive にアップロードする場合はTrue
に設定します。デフォルトはFalse
です。 Bool
DATABASE_URL
: SQL データベースの URL。この「データベースの生成」に従ってデータベースを生成します。データはデータベースに保存されます:認証ユーザーとsudoユーザー、各ユーザーのサムネイルを含むリーチ設定、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
: ボットはドライブ内のファイルをチェックします。ファイルがドライブに存在する場合、ダウンロードまたはクローン作成は停止されます。 (注: ファイルはファイル ハッシュではなくファイル名を使用してチェックされるため、この機能はまだ完全ではありません)。デフォルトは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、注: -100xxxxxxxxx で始まるチャネル/グループ ID を 1 つだけ入力してください、そのチャネル/グループにボットを管理者として追加してください、この空のボットをそのままにすると、リーチが送信されます現在のチャット内のファイル。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
: Telegram アカウントからダウンロード/アップロードします。プレミアムアカウントを所有している場合。セッション文字列を生成するには、リポジトリ フォルダーを確実にマウントした後、このコマンドpython3 generate_string_session.py
を使用します。 Str
.注:プライベートメッセージではボットを使用することはできません。スーパーグループまたはチャンネルで使用します。TITLE_NAME
: Telegraph ページのタイトル名 (/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 ドライブのフォルダー/ファイルのサイズを制限します。単位は追加しないでください。デフォルトの単位はGB
です。MEGA_LIMIT
: Mega ダウンロードのサイズを制限します。単位は追加しないでください。デフォルトの単位はGB
です。STORAGE_THRESHOLD
: 特定のストレージを空きのままにし、ダウンロードすると空きストレージがこの値未満になると、キャンセルされます。単位は追加しないでください。デフォルトの単位はGB
です。BASE_URL_OF_BOT
: qbittorrent Web 選択を使用するためにボットがデプロイされる有効な BASE URL。 URL の形式はhttp://myip
である必要があります。ここで、 myip
はボットの IP/ドメイン (パブリック) です。または80
以外のポートを選択した場合は、 http://myip:port
( http
ではなくhttps
)。この Var は VPS ではオプションですが、特に Heroku ではアプリのスリープ/アイドリングを避けるために必要です。 Heroku の場合は、 https://yourappname.herokuapp.com
を入力します。まだアイドリング中ですか? http://cron-job.org を使用して Heroku アプリに ping を送信できます。 Str
SERVER_PORT
: VPS のみ。BASE_URL_OF_BOTポートです。 Str
WEB_PINCODE
: 空またはFalse
の場合は、qbit Web の選択中にピンコードが必要ないことを意味します。 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 リンクを取得する代わりに。セッション文字列を生成するには、リポジトリ フォルダーを確実にマウントした後、このコマンドpython3 generate_string_session.py
を使用します。 Str
.注: USER_SESSION_STRING
と同じセッション文字列を使用しないでください。DATABASE_URL
とRSS_CHAT_ID
は必須です。そうでないと、すべての RSS コマンドが機能しません。ボットはグループ内で使用する必要があります。ボットをチャネルに追加し、このチャネルをグループにリンクすると、ボットからチャネルに送信されたメッセージがRSS_USER_STRING_SESSION
使用せずにグループに転送されます。ACCOUNTS_ZIP_URL
: サービス アカウントをインデックス リンクまたは Web ページ リンクではなく直接ダウンロード リンクから外部からロードする場合のみ。 accounts フォルダーを ZIP ファイルにアーカイブします。これに、zip ファイルの直接ダウンロード リンクを入力します。 Str
.インデックスに認証が必要な場合は、以下に示すように直接ダウンロードを追加します。https://username:[email protected]/...
TOKEN_PICKLE_URL
: token.pickle をインデックス リンクから外部にロードする場合のみ。これにそのファイルの直接リンクを入力します。 Str
MULTI_SEARCH_URL
: ここでdrive_folder
設定を確認してください。ここにdrive_folderファイルを書き込みます。その gist の生ファイルを開くと、その URL が必須の変数になります。コミット ID を削除した後は、次の形式になるはずです: https://gist.githubusercontent.com/username/gist-id/raw/drive_folder。 Str
YT_COOKIES_URL
: YouTube の認証 Cookie。ここで設定を確認してください。 gist raw リンクを使用し、リンクからコミット ID を削除して、gist からのみ編集できるようにします。 Str
NETRC_URL
: aria2c および yt-dlp の認証を含む .netrc ファイルを作成します。 gist raw リンクを使用し、リンクからコミット ID を削除して、gist からのみ編集できるようにします。注: .nterc を編集した後は、docker を再起動する必要があります。または、heroku にデプロイされている場合は、編集が aria2c 認証に関連する場合に備えて dyno を再起動する必要があります。 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、MagneDL、Libgen、YTS、Limetorrent、TorrentFunk、Glodls、TorrentProject、YourBittorrent
SEARCH_LIMIT
: 検索 API の検索制限。結果全体の制限ではなく、サイトごとの制限です。デフォルトはゼロです(各サイトのデフォルトの API 制限)。 Str
SEARCH_PLUGINS
: qBittorrent 検索プラグインのリスト (github raw リンク)。いくつかのプラグインを追加しました。必要に応じてプラグインを削除/追加できます。主なソース: 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
変数を追加できます。Google で調べてください。 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
perfix を leech または Mirror cmd とともに追加します。d
perfix を単独で使用すると、aria2c または qbittorrent のグローバル オプションを使用することになります。MaxRatio
およびGlobalMaxSeedingMinutes
、 -1
制限なしを意味しますが、手動でキャンセルできます。MaxRatioAction
は変更しないでください。--seed-ratio
(0 は制限なしを意味します) および--seed-time
(0 はシードなしを意味します)。 サービス アカウントが機能するには、構成ファイルまたは環境変数で
USE_SERVICE_ACCOUNTS
= "True" を設定する必要があります。注: サービス アカウントの使用は、チームドライブにアップロードする場合にのみ推奨されます。
必要なサービス アカウントのみを作成しましょう。
警告: この機能の悪用は、このプロジェクトの目的ではありません。多くのプロジェクトを作成することはお勧めしません。プロジェクトを 1 つだけと 100 SA で十分に使用できます。過度に乱用すると、プロジェクトが禁止される可能性もあります。グーグル。
注: 過去にこのスクリプトから SA を作成したことがある場合は、次のコマンドを実行してキーを再ダウンロードすることもできます。
python3 gen_sa_accounts.py --download-keys $PROJECTID
注: 1 つのサービス アカウントは 1 日に約 750 GB をアップロード/コピーでき、1 つのプロジェクトは 100 のサービス アカウントを作成できるため、1 日に 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 ..
次に、email.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
認証には、cookie.txt ファイルを使用します。
Aria2c を使用すると、ユーザー名の有無にかかわらず、ボットの組み込み機能を使用することもできます。ここでは、ユーザー名のないインデックス リンクの例を示します。
machine example.workers.dev password index_password
ここで、host は抽出者の名前です (例: instagram、Twitch)。異なるホストの複数のアカウントを新しい行で区切って追加できます。
ベース リポジトリのクレジット: Anasty