Это Telegram-бот, написанный на Python, для зеркалирования файлов из Интернета на ваш Google Диск или Telegram. На основе python-aria-mirror-bot.
В каждом отдельном файле есть серьезные изменения по сравнению с базовым кодом, он почти полностью отличается. Вот некоторые из функций и исправлений, которые я помню.
root
идентификатором или идентификатором TeamDrive, идентификаторы папок будут перечислены нерекурсивным методом)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
: токен Telegram Bot, который вы получили от @BotFather. Str
GDRIVE_FOLDER_ID
: это идентификатор папки/TeamDrive папки или root
Google Диска, в который вы хотите загрузить все зеркала. Str
OWNER_ID
: идентификатор пользователя Telegram (не имя пользователя) владельца бота. 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
: — установите True
, если вы хотите отправлять зеркальные ссылки и полученные файлы в личку пользователя, по умолчанию — False
.FORCE_BOT_PM
: - установите True
, если True все зеркальные ссылки и похищенные файлы будут отправляться непосредственно в личку, зеркальные ссылки не будут отправляться в текущий чат, а исходное сообщение будет удалено сразу после завершения зеркалирования/пикания, AUTO_DELETE_UPLOAD_MESSAGE_DURATION к нему не будет применяться. .IS_TEAM_DRIVE
: установите True
при загрузке в TeamDrive. По умолчанию — False
. Bool
DATABASE_URL
: URL-адрес вашей базы данных SQL. Следуйте инструкциям по созданию базы данных, чтобы создать базу данных. Данные будут сохранены в базе данных: пользователи авторизации и sudo, настройки пиявки, включая миниатюры для каждого пользователя, данные RSS и незавершенные задачи. ПРИМЕЧАНИЕ . При развертывании на Heroku и использовании Heroku PostgreSQL удалите эту переменную из файла config.env . DATABASE_URL будет получен из переменных Heroku. Str
AUTHORIZED_CHATS
: заполните user_id иchat_id групп/пользователей, которых вы хотите авторизовать. Разделите их пробелом. Str
SUDO_USERS
: укажите user_id пользователей, которым вы хотите предоставить разрешение sudo. Разделите их пробелом. 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
: — Идентификатор чата каналов/групп, в которых вы хотите хранить журналы зеркала. ПРИМЕЧАНИЕ. Добавьте бота в канал/группу журналов зеркала в качестве администратора.LEECH_LOG
: - Идентификатор чата канала/группы, куда будут загружены похищенные файлы. ПРИМЕЧАНИЕ: укажите только 1 идентификатор канала/группы, начинающийся с -100xxxxxxxxx. ПРИМЕЧАНИЕ. Добавьте бота в этот канал/группу в качестве администратора. Если вы оставите этого пустого бота, он отправит пиявку. файлы в текущем чате.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
: = Имя автора страниц TelegraphAUTHOR_URL
: = URL-адрес автора страницы TelegraphCRYPT
: файл cookie для генератора ссылок на диск Google gdtot. Выполните следующие действия.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
: Действительный BASE URL-адрес, на котором бот развернут для использования веб-выбора qbittorrent. Формат URL-адреса должен быть http://myip
, где myip
— это IP/домен (общедоступный) вашего бота, или если вы выбрали порт, отличный от 80
, напишите его в этом формате http://myip:port
( http
а не https
). Этот параметр является необязательным для VPS и необходим для Heroku, чтобы избежать спящего режима/простаивания приложения. Для Heroku заполните https://yourappname.herokuapp.com
. Все еще работаете на холостом ходу? Вы можете использовать http://cron-job.org для проверки связи с вашим приложением Heroku. Str
SERVER_PORT
: только для VPS, который является портом BASE_URL_OF_BOT . Str
WEB_PINCODE
: Если пусто или имеет значение False
, это означает, что при выборе сети qbit больше не требуется пин-код. Bool
MaxConnecs
, уменьшите AsyncIOThreadsCount
в конфигурации qbittorrent и установите ограничение DiskWriteCacheSize
на 32
.RSS_DELAY
: время в секундах для интервала обновления RSS. Рекомендуется минимум 900
секунд. По умолчанию — 900
в сек. Str
RSS_COMMAND
: выберите команду для желаемого действия. Str
RSS_CHAT_ID
: идентификатор чата, куда будут отправляться RSS-ссылки. Если вы используете канал, добавьте идентификатор канала. Str
RSS_USER_SESSION_STRING
: для отправки RSS-ссылок из вашей учетной записи Telegram. Вместо добавления бота в канал, а затем привязки канала к группе для получения RSS-ссылки, поскольку бот не будет читать команду от себя или другого бота. Чтобы сгенерировать строку сеанса, используйте эту команду 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
здесь. Запишите сюда файл disk_folder . Откройте необработанный файл этого списка, его URL будет вашей необходимой переменной. Должно быть в такой форме после удаления идентификатора фиксации: https://gist.githubusercontent.com/username/gist-id/raw/drive_folder. Str
YT_COOKIES_URL
: файлы cookie аутентификации YouTube. Проверьте настройку здесь. Используйте необработанную ссылку gist и удалите идентификатор фиксации из ссылки, чтобы вы могли редактировать ее только из gists. Str
NETRC_URL
: для создания файла .netrc содержит аутентификацию для aria2c и yt-dlp. Используйте необработанную ссылку gist и удалите идентификатор фиксации из ссылки, чтобы вы могли редактировать его только из gists. ПРИМЕЧАНИЕ . После редактирования .nterc вам необходимо перезапустить докер или, если он развернут на Heroku, перезапустите Dyno, если ваши изменения связаны с аутентификацией aria2c. Str
MEGA_API_KEY
: ключ API Mega.nz для зеркалирования ссылок mega.nz. Получите его на странице Mega SDK. Str
MEGA_EMAIL_ID
: идентификатор электронной почты, используемый для регистрации на mega.nz для использования премиум-аккаунта. 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, затем отредактируйте AsyncIOThreadsCount
в qBittorrent.conf.CONFIG_FILE_URL
используя docker и docker-compose, погуглите. 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
и свои личные файлы в этот частный репозиторий, ваши личные файлы будут перезаписаны из этого репозитория. Кроме того, если вы используете переменные URL-адреса, такие как TOKEN_PICKLE_URL
, тогда все файлы из этих переменных будут переопределять частные файлы, добавленные перед развертыванием или из частного UPSTREAM_REPO
.UPSTREAM_REPO
ссылкой на официальный репозиторий, будьте осторожны: при любых изменениях в файле require.txt ваш бот не запустится после перезапуска. В этом случае вам необходимо выполнить повторное развертывание с обновленным кодом, чтобы установить новые требования, или просто изменив UPSTREAM_REPO
на разветвленную ссылку со старыми обновлениями.UPSTREAM_REPO
ссылкой на свой форк, будьте осторожны, если вы получили коммиты из официального репозитория.UPSTREAM_REPO
вступят в силу только после перезапуска.UPSTREAM_BRANCH
никогда не заполняйте здесь героку. d:ratio:time
вместе с пиявкой или зеркальным cmd.d
perfix приведет к использованию глобальных опций для aria2c или qbittorrent.MaxRatio
и GlobalMaxSeedingMinutes
в qbittorrent.conf, -1
означает отсутствие ограничений, но вы можете отменить их вручную.MaxRatioAction
.--seed-ratio
(0 означает отсутствие ограничений) и --seed-time
(0 означает отсутствие начальных значений) в aria.sh. Чтобы учетная запись службы работала, необходимо установить
USE_SERVICE_ACCOUNTS
= «True» в файле конфигурации или переменных среды. ПРИМЕЧАНИЕ . Использование сервисных учетных записей рекомендуется только при загрузке на общий диск.
Давайте создадим только те сервисные учетные записи, которые нам нужны.
Предупреждение : Злоупотребление этой функцией не является целью этого проекта, и мы НЕ рекомендуем вам создавать много проектов, только один проект и 100 SA позволяют вам широко использовать ее. Также возможно, что чрезмерное злоупотребление может привести к запрету ваших проектов Google.
ПРИМЕЧАНИЕ . Если вы ранее создавали SA с помощью этого сценария, вы также можете просто повторно загрузить ключи, выполнив:
python3 gen_sa_accounts.py --download-keys $PROJECTID
ПРИМЕЧАНИЕ. 1 учетная запись службы может загружать/копировать около 750 ГБ в день, 1 проект может создавать 100 учетных записей службы, поэтому вы можете загружать 75 ТБ в день или клонировать 2 ТБ от каждого создателя файла (электронная почта загрузчика).
Выберите один из этих методов
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
Будет создана папка с именем account, которая будет содержать ключи для учетных записей служб.
Выберите один из этих методов
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 в своем терминале и следуйте ему. Он сгенерирует файл disk_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
Где хост — имя экстрактора (например, Instagram, Twitch). Можно добавить несколько учетных записей разных хостов, каждая из которых будет разделена новой строкой.
Базовый кредит репо: Анасти