Este é um Telegram Bot escrito em Python para espelhar arquivos da Internet para o seu Google Drive ou Telegram. Baseado em python-aria-mirror-bot
Em cada arquivo há uma grande mudança no código base, é quase totalmente diferente. Aqui estão alguns dos recursos e correções que me lembro.
root
ou ID do TeamDrive, os IDs das pastas serão listados com método não recursivo)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, letupload.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 (funciona apenas para arquivo, não para pasta ou conta comercial), uptobox.com e solidfiles.com
git clone https://github.com/arshsisodiya/helios-mirror mirrorbot/ && cd mirrorbot
sudo apt install python3 python3-pip
Instale o Docker seguindo a documentação oficial do Docker
sudo pacman -S docker python
pip3 install -r requirements-cli.txt
cp config_sample.env config.env
_____REMOVE_THIS_LINE_____=True
Preencha o restante dos campos. O significado de cada campo é discutido abaixo:
1. Campos obrigatórios
BOT_TOKEN
: O Telegram Bot Token que você recebeu de @BotFather. Str
GDRIVE_FOLDER_ID
: este é o ID da pasta/TeamDrive da pasta ou root
do Google Drive para a qual você deseja fazer upload de todos os espelhos. Str
OWNER_ID
: O ID do usuário do Telegram (não o nome de usuário) do proprietário do bot. Int
DOWNLOAD_DIR
: O caminho para a pasta local onde os downloads devem ser baixados. Str
DOWNLOAD_STATUS_UPDATE_INTERVAL
: Tempo em segundos após o qual a mensagem de progresso/status será atualizada. Recomendado 10
segundos pelo menos. Int
AUTO_DELETE_MESSAGE_DURATION
: Intervalo de tempo (em segundos), após o qual o bot exclui sua mensagem e mensagem de comando que deve ser visualizada instantaneamente. NOTA : Defina como -1
para desativar a exclusão automática de mensagens. Int
AUTO_DELETE_UPLOAD_MESSAGE_DURATION
: Intervalo de tempo (em segundos), após o qual o bot exclui sua mensagem e mensagem de comando que deve ser visualizada instantaneamente. NOTA : Defina como -1
para desativar a exclusão automática de mensagens de upload. Int
TELEGRAM_API
: Serve para autenticar sua conta do Telegram para baixar arquivos do Telegram. Você pode obter isso em https://my.telegram.org. Int
TELEGRAM_HASH
: Serve para autenticar sua conta do Telegram para baixar arquivos do Telegram. Você pode obter isso em https://my.telegram.org. Str
2. Campos Opcionais
BOT_PM
: - defina como True
se você deseja enviar links de espelho e arquivos sugados no PM do usuário, o padrão é False
.FORCE_BOT_PM
: - defina como True
se True todos os links espelhados e arquivos sugados serão enviados diretamente no PM, os links espelhados não serão enviados no bate-papo atual e a mensagem de origem será excluída imediatamente após a conclusão do espelho/leech, AUTO_DELETE_UPLOAD_MESSAGE_DURATION não se aplicará a ele .IS_TEAM_DRIVE
: Defina True
se estiver fazendo upload para o TeamDrive. O padrão é False
. Bool
DATABASE_URL
: URL do seu banco de dados SQL. Siga este Gerar banco de dados para gerar banco de dados. Os dados serão salvos no banco de dados: usuários auth e sudo, configurações de sanguessuga incluindo miniaturas para cada usuário, dados rss e tarefas incompletas. NOTA : Se estiver implantando no heroku e usando o heroku postgresql, exclua esta variável do arquivo config.env . DATABASE_URL será obtido das variáveis do heroku. Str
AUTHORIZED_CHATS
: Preencha user_id e chat_id dos grupos/usuários que deseja autorizar. Separe-os por espaço. Str
SUDO_USERS
: Preencha o user_id dos usuários aos quais você deseja dar permissão ao sudo. Separe-os por espaço. Str
IGNORE_PENDING_REQUESTS
: ignora solicitações pendentes após reiniciar. O padrão é False
. Bool
USE_SERVICE_ACCOUNTS
: se deve usar contas de serviço ou não. Para que isso funcione, consulte a seção Usando contas de serviço abaixo. O padrão é False
. Bool
INDEX_URL
: Consulte https://gitlab.com/ParveenBhadooOfficial/Google-Drive-Index. Str
STATUS_LIMIT
: Limite o não. de tarefas mostradas na mensagem de status com botões. NOTA : O limite recomendado é 4
tarefas. Str
STOP_DUPLICATE
: O bot verificará o arquivo no Drive, se estiver presente no Drive, o download ou a clonagem serão interrompidos. ( NOTA : O arquivo será verificado usando o nome do arquivo e não o hash do arquivo, portanto, esse recurso ainda não é perfeito). O padrão é False
. Bool
CMD_INDEX
: número do índice do comando. Este número será adicionado no final de todos os comandos. Str
TORRENT_TIMEOUT
: Tempo limite de download de torrents mortos com qBittorrent e Aria2c em segundos. Str
EXTENSION_FILTER
: extensões de arquivo que não podem ser carregadas/clonadas. Separe-os por espaço. Str
INCOMPLETE_TASK_NOTIFIER
: Obtenha mensagens de tarefas incompletas após reiniciar. Requer banco de dados e (supergrupo ou canal). O padrão é False
. Bool
UPTOBOX_TOKEN
: token Uptobox para espelhar links uptobox. Obtenha-o na conta Uptobox Premium.UPSTREAM_REPO
: o link do seu repositório github, se o seu repositório for privado, adicione o formato https://username:{githubtoken}@github.com/{username}/{reponame}
. Obtenha o token nas configurações do Github. Assim, você pode atualizar seu bot a partir do repositório preenchido em cada reinicialização. Str
.UPSTREAM_BRANCH
: ramificação upstream para atualização. O padrão é master
. Str
MIRROR_LOGS
: - ID de bate-papo de canais/grupos onde você deseja armazenar logs de espelho, NOTA Adicione bot no canal/grupo de logs de espelho como Admin.LEECH_LOG
: - ID de chat do canal/grupo onde os arquivos leeched serão carregados, NOTA: coloque apenas 1 id de canal/grupo começa com -100xxxxxxxxx, NOTA adicione bot nesse canal/grupo como Admin, se você deixar este bot vazio será enviado sanguessuga arquivos no bate-papo atual.LEECH_SPLIT_SIZE
: Tamanho da divisão em bytes. O padrão é 2GB
. O padrão é 4GB
se sua conta for premium. Str
AS_DOCUMENT
: Tipo padrão de upload de arquivo do Telegram. O padrão é False
significa como mídia. Bool
EQUAL_SPLITS
: Divida arquivos maiores que LEECH_SPLIT_SIZE em partes iguais (não funciona com zip cmd). O padrão é False
. Bool
CUSTOM_FILENAME
: Adicione uma palavra personalizada ao nome do arquivo sugado. Str
USER_SESSION_STRING
: Para fazer download/upload de sua conta de telegrama. Se você possui uma conta premium. Para gerar uma string de sessão, use este comando python3 generate_string_session.py
após montar a pasta repo com certeza. Str
NOTA : Você não pode usar bot com mensagem privada. Use-o com supergrupo ou canal.TITLE_NAME
: Nome do título para páginas do Telegraph (ao usar o comando /list)AUTHOR_NAME
: = Nome do autor das páginas do TelegraphAUTHOR_URL
: = URL do autor da página do TelegraphCRYPT
: Cookie para gerador de link gdtot do Google Drive. Siga estas etapas.APPDRIVE_EMAIL
: - E-mail da sua conta AppdriveAPPDRIVE_PASS
: - A senha da sua conta AppdriveTORRENT_DIRECT_LIMIT
: Para limitar o tamanho do espelho Torrent/Direct. Não adicione unidade. A unidade padrão é GB
.ZIP_UNZIP_LIMIT
: Para limitar o tamanho dos comandos zip e unzip. Não adicione unidade. A unidade padrão é GB
.CLONE_LIMIT
: para limitar o tamanho da pasta/arquivo do Google Drive que você pode clonar. Não adicione unidade. A unidade padrão é GB
.MEGA_LIMIT
: Para limitar o tamanho do Mega download. Não adicione unidade. A unidade padrão é GB
.STORAGE_THRESHOLD
: Para deixar um armazenamento específico livre e qualquer download levará a deixar um armazenamento livre menor que esse valor será cancelado. Não adicione unidade. A unidade padrão é GB
.BASE_URL_OF_BOT
: URL BASE válido onde o bot é implantado para usar a seleção da web qbittorrent. O formato da URL deve ser http://myip
, onde myip
é o IP/Domínio (público) do seu bot ou se você escolheu uma porta diferente de 80
então escreva neste formato http://myip:port
( http
e não https
). Este Var é opcional no VPS e necessário para o Heroku especialmente para evitar a suspensão/inatividade do aplicativo. Para Heroku preencha https://yourappname.herokuapp.com
. Ainda está ocioso? Você pode usar http://cron-job.org para executar ping em seu aplicativo Heroku. Str
SERVER_PORT
: Somente para VPS, que é a porta BASE_URL_OF_BOT . Str
WEB_PINCODE
: Se vazio ou False
significa que não é necessário mais código PIN durante a seleção da web qbit. Bool
MaxConnecs
, diminua AsyncIOThreadsCount
na configuração do qbittorrent e defina o limite de DiskWriteCacheSize
para 32
.RSS_DELAY
: Tempo em segundos para intervalo de atualização de RSS. Recomendado 900
segundos pelo menos. O padrão é 900
em segundos. Str
RSS_COMMAND
: Escolha o comando para a ação desejada. Str
RSS_CHAT_ID
: ID do chat para onde os links RSS serão enviados. Se estiver usando o canal, adicione o ID do canal. Str
RSS_USER_SESSION_STRING
: Para enviar links RSS da sua conta de telegrama. Em vez de adicionar o bot ao canal, vincule o canal ao grupo para obter o link rss, pois o bot não lerá o comando de si mesmo ou de outro bot. Para gerar uma string de sessão, use este comando python3 generate_string_session.py
após montar a pasta repo com certeza. Str
NOTA : Não use a mesma string de sessão de USER_SESSION_STRING
.DATABASE_URL
e RSS_CHAT_ID
são necessários, caso contrário, todos os comandos rss não funcionarão. Você deve usar o bot no grupo. Você pode adicionar o bot a um canal e vincular este canal ao grupo para que as mensagens enviadas pelo bot ao canal sejam encaminhadas para o grupo sem usar RSS_USER_STRING_SESSION
.ACCOUNTS_ZIP_URL
: somente se você quiser carregar sua conta de serviço externamente a partir de um link de índice ou por qualquer link de download direto, NÃO link de página da web. Arquive a pasta de contas em um arquivo ZIP. Preencha isso com o link de download direto do arquivo zip. Str
Se o índice precisar de autenticação, adicione download direto conforme mostrado abaixo:https://username:[email protected]/...
TOKEN_PICKLE_URL
: somente se você quiser carregar seu token.pickle externamente a partir de um link de índice. Preencha com o link direto desse arquivo. Str
MULTI_SEARCH_URL
: Verifique a configuração drive_folder
aqui. Escreva o arquivo drive_folder aqui. Abra o arquivo bruto dessa essência, seu URL será a variável necessária. Deve estar neste formato após a remoção do ID de commit: https://gist.githubusercontent.com/username/gist-id/raw/drive_folder. Str
YT_COOKIES_URL
: Cookies de autenticação do YouTube. Verifique a configuração aqui. Use o link bruto do Gist e remova o ID de commit do link, para que você possa editá-lo apenas a partir do Gists. Str
NETRC_URL
: Para criar o arquivo .netrc contém autenticação para aria2c e yt-dlp. Use o link bruto do Gist e remova o ID de commit do link, para que você possa editá-lo apenas a partir do Gists. NOTA : Após editar .nterc você precisa reiniciar o docker ou se estiver implantado no heroku, então reinicie o dyno caso suas edições estejam relacionadas à autenticação aria2c. Str
MEGA_API_KEY
: chave de API Mega.nz para espelhar links mega.nz. Obtenha-o na página Mega SDK. Str
MEGA_EMAIL_ID
: ID de e-mail usado para se inscrever no mega.nz para usar a conta premium. Str
MEGA_PASSWORD
: Senha da conta mega.nz. Str
VIEW_LINK
: botão Visualizar link para abrir o link do índice do arquivo no navegador em vez do link de download direto, você pode descobrir se é compatível com o código do seu índice ou não, abrir qualquer vídeo do seu índice e verificar se o URL termina com ?a=view
. Compatível com o código BhadooIndex. O padrão é False
. Bool
SOURCE_LINK
: - defina como True
se desejar obter o link de origem do arquivo espelhado/clonado, o padrão é False
.SEARCH_API_LINK
: link do aplicativo API de pesquisa. Obtenha sua API ao implantar este repositório. Str
1337x, Piratebay, Nyaasi, Torlock, Torrent Galaxy, Zooqle, Kickass, Bitsearch, MagnetDL, Libgen, YTS, Limetorrent, TorrentFunk, Glodls, TorrentProject e YourBittorrent
SEARCH_LIMIT
: limite de pesquisa para API de pesquisa, limite para cada site e não limite geral de resultados. O padrão é zero (limite de API padrão para cada site). Str
SEARCH_PLUGINS
: Lista de plug-ins de pesquisa qBittorrent (links brutos do github). Eu adicionei alguns plugins, você pode remover/adicionar plugins como quiser. Fonte principal: Plug-ins de pesquisa qBittorrent (oficiais/não oficiais). Str
NOTAS
generate_drive_token.py
no navegador local. pip3 install google-api-python-client google-auth-httplib2 google-auth-oauthlib
python3 generate_drive_token.py
NOTAS IMPORTANTES :
SERVER_PORT
como 80
ou qualquer outra porta que queira usar. sudo docker container prune
sudo docker image prune -a
nproc
cmd e multiplique por 4, depois edite AsyncIOThreadsCount
em qBittorrent.conf.CONFIG_FILE_URL
usando docker e docker-compose, pesquise no Google. sudo dockerd
sudo docker build . -t mirror-bot
sudo docker run -p 80:80 mirror-bot
sudo docker ps
sudo docker stop id
NOTA : Se você quiser usar uma porta diferente de 80, altere-a também em 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
pode ser usada para editar/adicionar qualquer arquivo no repositório.UPSTREAM_REPO
private caso queira capturar todos os arquivos, incluindo arquivos privados.UPSTREAM_REPO
privado e seus arquivos privados neste repositório privado, seus arquivos privados serão substituídos neste repositório. Além disso, se você estiver usando variáveis de URL como TOKEN_PICKLE_URL
, todos os arquivos dessas variáveis substituirão os arquivos privados adicionados antes da implantação ou de UPSTREAM_REPO
privado.UPSTREAM_REPO
com o link do repositório oficial, tome cuidado, caso qualquer alteração no requirements.txt seu bot não será iniciado após a reinicialização. Nesse caso, você precisa implantar novamente com o código atualizado para instalar os novos requisitos ou simplesmente alterando o UPSTREAM_REPO
para seu link de fork com as atualizações antigas.UPSTREAM_REPO
com seu link de fork, tome cuidado também se você buscou os commits do repositório oficial.UPSTREAM_REPO
terão efeito somente após a reinicialização.UPSTREAM_BRANCH
nunca preencha heroku aqui. d:ratio:time
perfix junto com sanguessuga ou espelho cmd.d
perfix sozinho levará ao uso de opções globais para aria2c ou qbittorrent.MaxRatio
e GlobalMaxSeedingMinutes
em qbittorrent.conf, -1
significa sem limite, mas você pode cancelar manualmente.MaxRatioAction
.--seed-ratio
(0 significa sem limite) e --seed-time
(0 significa sem seed) em aria.sh. Para que a conta de serviço funcione, você deve definir
USE_SERVICE_ACCOUNTS
= "True" no arquivo de configuração ou nas variáveis de ambiente. NOTA : O uso de contas de serviço só é recomendado durante o upload para um Drive de equipe.
Vamos criar apenas as contas de serviço de que precisamos.
Aviso : O abuso deste recurso não é o objetivo deste projeto e NÃO recomendamos que você faça muitos projetos, apenas um projeto e 100 SAs permitem bastante uso, também é possível que o abuso excessivo possa fazer com que seus projetos sejam banidos por Google.
NOTA : Se você já criou SAs a partir deste script, também pode simplesmente baixar novamente as chaves executando:
python3 gen_sa_accounts.py --download-keys $PROJECTID
NOTA: 1 conta de serviço pode fazer upload/copiar cerca de 750 GB por dia, 1 projeto pode criar 100 contas de serviço para que você possa fazer upload de 75 TB por dia ou clonar 2 TB de cada criador de arquivo (e-mail do uploader).
Escolha um destes métodos
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
Será criada uma pasta chamada contas que conterá chaves para as contas de serviço.
Escolha um destes métodos
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 ..
Em seguida, adicione e-mails de emails.txt ao Grupo do Google, depois adicione este Grupo do Google ao seu Drive Compartilhado e promova-o para gerente e exclua o arquivo email.txt da pasta de contas
python3 add_to_team_drive.py -d SharedTeamDriveSrcID
1. Usando ferrovia
Provision PostgreSQL
PostgresSQL
Connect
Postgres Connection URL
e preencha a variável DATABASE_URL
com ele2. Usando Heroku PostgreSQL
3. Usando ElephantSQL
Create New Instance
Select Region
Review
de acertosCreate instance
DATABASE_URL
com ele Para usar a lista de multi TD/pasta. Execute driveid.py em seu terminal e siga-o. Ele irá gerar o arquivo drive_folder ou você pode simplesmente criar o arquivo drive_folder
no diretório de trabalho e preenchê-lo, verifique o formato abaixo:
DriveName folderID/tdID or `root` IndexLink(if available)
DriveName folderID/tdID or `root` IndexLink(if available)
Para usar suas contas premium em yt-dlp ou para links de índice protegidos, crie um arquivo .netrc de acordo com o seguinte formato:
Nota : Crie .netrc e não netrc, este arquivo ficará oculto, então visualize os arquivos ocultos para editá-los após a criação.
Formatar:
machine host login username password my_password
Exemplo:
machine instagram login anas.tayyar password mypassword
Nota do Instagram : Você deve fazer o login mesmo se quiser baixar postagens públicas e após a primeira tentativa você deve confirmar se você fez login com um IP diferente (você pode confirmar no aplicativo do telefone).
Nota do Youtube : Para autenticação youtube
use o arquivo cookies.txt.
Usando Aria2c você também pode usar recursos integrados do bot com ou sem nome de usuário. Aqui está um exemplo de link de índice sem nome de usuário.
machine example.workers.dev password index_password
Onde host é o nome do extrator (por exemplo, instagram, Twitch). Várias contas de hosts diferentes podem ser adicionadas, cada uma separada por uma nova linha.
Crédito base do repositório: Anasty