Este Telegram Bot, basado en python-aria-mirror-bot, ha sufrido modificaciones sustanciales y está diseñado para duplicar o descargar archivos de Internet de manera eficiente a varios destinos, incluidos Google Drive, Telegram o cualquier nube compatible con rclone. Está construido mediante programación asincrónica en Python.
root
o TeamDrive, los ID de carpeta se enumerarán con un método no recursivo). Basado en Sreeraj searchX-bot. (opción de tarea)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
amd64, arm64/v8, arm/v7
UPSTREAM_REPO
mediafire (archivo/carpetas), hxfile.co (necesita cookies txt con nombre) [hxfile.txt], streamtape.com, streamsb.net, streamhub.ink, streamvid.net, doodstream.com, feurl.com, upload.ee , pixeldrain.com, racaty.net, 1fichier.com, 1drv.ms (solo funciona para archivos, no para carpetas o cuentas comerciales), filelions.com, streamwish.com, send.cm (archivo/carpetas), solidfiles.com, linkbox .to (archivo/carpetas), shrdsk.me (sharedisk.io), akmfiles.com, wetransfer.com, pcloud.link, gofile.io (archivo/carpetas), easyupload.io, mdisk.me (con ytdl), tmpsend.com, qiwi.gg, berkasdrive.com, mp4upload.com, terabox.com (videos solo archivos/carpetas).
git clone https://github.com/anasty17/mirror-leech-telegram-bot mirrorbot/ && cd mirrorbot
sudo apt install python3 python3-pip
Instale Docker siguiendo los documentos oficiales de Docker
sudo pacman -S docker python
pip3 install -r requirements-cli.txt
cp config_sample.env config.env
_____REMOVE_THIS_LINE_____=True
Complete el resto de los campos. El significado de cada campo se analiza a continuación. NOTA : Todos los valores deben completarse entre comillas, incluso si son Int
, Bool
o List
.
1. Campos obligatorios
BOT_TOKEN
: El token de Bot de Telegram que obtuviste de @BotFather. Str
OWNER_ID
: el ID de usuario de Telegram (no el nombre de usuario) del propietario del bot. Int
TELEGRAM_API
: esto es para autenticar su cuenta de Telegram para descargar archivos de Telegram. Puede obtenerlo en https://my.telegram.org. Int
TELEGRAM_HASH
: esto es para autenticar su cuenta de Telegram para descargar archivos de Telegram. Puede obtenerlo en https://my.telegram.org. Str
2. Campos opcionales
USER_SESSION_STRING
: Para descargar/cargar desde su cuenta de Telegram si el usuario es PREMIUM
y enviar rss. Para generar una cadena de sesión, use este comando python3 generate_string_session.py
después de montar la carpeta del repositorio con seguridad. Str
. * NOTA *: No puedes usar bot con mensaje privado. Úselo con superGroup.DATABASE_URL
: URL de su base de datos Mongo (cadena de conexión). Siga esto Generar base de datos para generar una base de datos. Los datos se guardarán en la base de datos: configuración del bot, configuración de los usuarios, datos rss y tareas incompletas. NOTA : Siempre puede editar todas las configuraciones guardadas en la base de datos desde el sitio oficial -> (Buscar colecciones). Str
DOWNLOAD_DIR
: la ruta a la carpeta local de vps donde se deben descargar las descargas. Str
CMD_SUFFIX
: Número de índice de comandos. Este número se agregará al final de todos los comandos. Str
| Int
AUTHORIZED_CHATS
: Complete user_id y chat_id de los grupos/usuarios que desea autorizar. Para autenticar solo temas específicos, escríbalo en este formato chat_id|thread_id
Ex:-100XXXXXXXXXXX|10 o Ex:-100XXXXXXXXXXX|10|12. Sepárelos por espacio. Int
SUDO_USERS
: complete el ID de usuario de los usuarios a los que desea otorgar permiso Sudo. Sepárelos por espacio. Int
DEFAULT_UPLOAD
: Ya sea rc
para cargar en RCLONE_PATH
o gd
para cargar en GDRIVE_ID
. El valor predeterminado es gd
. Leer más AQUÍ. Str
STATUS_UPDATE_INTERVAL
: tiempo en segundos después del cual se actualizará el mensaje de progreso/estado. Recomendado 10
segundos como mínimo. Int
STATUS_LIMIT
: Limita el no. de tareas que se muestran en el mensaje de estado con botones. El valor predeterminado es 10
. NOTA : El límite recomendado es 4
tareas. Int
EXTENSION_FILTER
: Extensiones de archivo que no se cargan ni clonan. Sepárelos por espacio. Str
INCOMPLETE_TASK_NOTIFIER
: Recibe mensajes de tareas incompletas después del reinicio. Requiere base de datos y supergrupo. El valor predeterminado es False
. Bool
FILELION_API
: Clave API de Filelion para reflejar los enlaces de Filelion. Consíguelo en Filelion. str
STREAMWISH_API
: clave API de Streamwish para reflejar los enlaces de Streamwish. Consíguelo en Streamwish. str
YT_DLP_OPTIONS
: opciones predeterminadas de yt-dlp. Verifique todas las opciones posibles AQUÍ o use este script para convertir argumentos cli en opciones de API. Formato: clave:valor|clave: valor|clave:valor. Agregue ^
antes de un número entero o flotante, algunos números deben ser numéricos y algunos de cadena. str
USE_SERVICE_ACCOUNTS
: si se deben utilizar cuentas de servicio o no, con google-api-python-client. Para que esto funcione, consulte la sección Uso de cuentas de servicio a continuación. El valor predeterminado es False
. Bool
NAME_SUBSTITUTE
: agregue palabra/letra/carácter/frase/patrón para eliminar o reemplazar con otras palabras con o sin mayúsculas sensibles. Notas :BACKSLASH
, esos son los caracteres: ^$.|?*+()[]{}-
3. Herramientas GDrive
GDRIVE_ID
: esta es la ID de carpeta/TeamDrive de Google Drive O root
a la que desea cargar todos los espejos utilizando google-api-python-client. Str
IS_TEAM_DRIVE
: Establezca en True
si carga en TeamDrive usando google-api-python-client. El valor predeterminado es False
. Bool
INDEX_URL
: consulte https://gitlab.com/ParveenBhadooOfficial/Google-Drive-Index. Str
STOP_DUPLICATE
: el bot verificará el nombre del archivo/carpeta en Drive en caso de que lo cargue en GDRIVE_ID
. Si está presente en Drive, se detendrá la descarga o la clonación. ( NOTA : el elemento se verificará usando el nombre y no el hash, por lo que esta característica aún no es perfecta). El valor predeterminado es False
. Bool
4. clonar
RCLONE_PATH
: ruta de rclone predeterminada a la que desea cargar todos los archivos/carpetas usando rclone. Str
RCLONE_FLAGS
: clave:valor|clave|clave|clave:valor. Consulta aquí todos los RcloneFlags. Str
RCLONE_SERVE_URL
: URL válida donde se implementa el bot para usar rcloneserve. El formato de la URL debe ser http://myip
, donde myip
es la IP/Dominio (público) de su bot o si ha elegido un puerto distinto al 80
, escríbalo en este formato http://myip:port
( http
y no https
). Str
RCLONE_SERVE_PORT
: Que es el puerto RCLONE_SERVE_URL . El valor predeterminado es 8080
. Int
RCLONE_SERVE_USER
: nombre de usuario para la autenticación de servicio rclone. Str
RCLONE_SERVE_PASS
: Contraseña para la autenticación de servicio rclone. Str
5. Actualización
UPSTREAM_REPO
: el enlace de su repositorio de github; si su repositorio es privado, agregue el formato https://username:{githubtoken}@github.com/{username}/{reponame}
. Obtenga token de la configuración de Github. Para que pueda actualizar su bot desde el repositorio lleno en cada reinicio. Str
.UPSTREAM_BRANCH
: rama ascendente para actualización. El valor predeterminado es master
. Str
6. sanguijuela
LEECH_SPLIT_SIZE
: Tamaño de división en bytes. El valor predeterminado es 2GB
. El valor predeterminado es 4GB
si su cuenta es premium. Int
AS_DOCUMENT
: tipo predeterminado de carga de archivos de Telegram. El valor predeterminado es False
medio como medio. Bool
EQUAL_SPLITS
: divide archivos más grandes que LEECH_SPLIT_SIZE en partes iguales (no funciona con zip cmd). El valor predeterminado es False
. Bool
MEDIA_GROUP
: Ver partes del archivo dividido cargado en el grupo de medios. El valor predeterminado es False
. Bool
.USER_TRANSMISSION
: Carga/Descarga por sesión de usuario. Sólo en superChat. El valor predeterminado es False
. Bool
MIXED_LEECH
: Carga por usuario y sesión de bot con respecto al tamaño del archivo. Sólo en superChat. El valor predeterminado es False
. Bool
LEECH_FILENAME_PREFIX
: agrega una palabra personalizada al nombre del archivo filtrado. Str
LEECH_DUMP_CHAT
: ID o NOMBRE DE USUARIO o MP (mensaje privado) al lugar donde se cargarían los archivos. Int
| Str
. Agregue -100
antes de la identificación del canal/supergrupo.THUMBNAIL_LAYOUT
: Diseño de miniaturas (ancho x alto, 2x2, 3x3, 2x4, 4x4, ...) de cuántas fotos están dispuestas para la miniatura. Str
7. qBittorrent/Aria2c/Sabnzbd
TORRENT_TIMEOUT
: Tiempo de espera de descarga de torrents inactivos con qBittorrent y Aria2c en segundos. Int
BASE_URL
: URL BASE válida donde se implementa el bot para utilizar la selección de archivos web torrent/nzb. El formato de la URL debe ser http://myip
, donde myip
es la IP/Dominio (público) de su bot o si ha elegido un puerto distinto al 80
, escríbalo en este formato http://myip:port
( http
y no https
). Str
BASE_URL_PORT
: Que es el puerto BASE_URL . El valor predeterminado es 80
. Int
WEB_PINCODE
: si se debe solicitar el código PIN antes de seleccionar archivos de torrent en la web o no. El valor predeterminado es False
. Bool
.MaxConnections
, disminuya AsyncIOThreadsCount
, establezca el límite de DiskWriteCacheSize
en 32
y disminuya MemoryWorkingSetLimit
desde qbittorrent.conf o el comando bsetting.8. Descargador J
JD_EMAIL
: registro de correo electrónico de jdownlaoder en JDownloaderJD_PASS
: contraseña de jdownlaoder/root/Downloads
.9. Sabnzbd
USENET_SERVERS
: lista de diccionarios, puede agregar tantos como desee y hay un botón para servidores en la configuración de sabnzbd para editar los servidores actuales y agregar nuevos servidores.
[{'nombre': 'principal', 'host': '', 'puerto': 563, 'tiempo de espera': 60, 'nombre de usuario': '', 'contraseña': '', 'conexiones': 8, ' ssl': 1, 'ssl_verify': 2, 'ssl_ciphers': '', 'enable': 1, 'requerido': 0, 'opcional': 0, 'retención': 0, 'send_group': 0, 'prioridad' ': 0}]
LEA ESTO PARA MÁS INFORMACIÓN
Abra el puerto 8070 en su vps para acceder a la interfaz web completa desde cualquier dispositivo. Úselo como http://ip:8070/sabnzbd/.
10. RSS
RSS_DELAY
: tiempo en segundos para el intervalo de actualización de rss. Recomendado 600
segundos al menos. El valor predeterminado es 600
en segundos. Int
RSS_CHAT
: ID or USERNAME or ID|TOPIC_ID or USERNAME|TOPIC_ID
donde se enviarán los enlaces rss. Si desea que el mensaje se envíe al canal, agregue la identificación del canal. Agregue -100
antes de la identificación del canal. Int
| Str
RSS_CHAT
; de lo contrario, el monitor no funcionará. Debes usar USER_STRING_SESSION
--OR-- CHANNEL . Si usa el canal, entonces el bot debe agregarse tanto en el canal como en el grupo (vinculado al canal) y RSS_CHAT
es la identificación del canal, por lo que los mensajes enviados por el bot al canal se reenviarán al grupo. De lo contrario, con USER_STRING_SESSION
agregue la identificación del grupo para RSS_CHAT
. Si no se agrega DATABASE_URL
, se perderá los feeds mientras el bot esté desconectado.11. Sistema de colas
QUEUE_ALL
: Número de tareas paralelas de descargas y cargas. Por ejemplo, si se agregaron 20 tareas y QUEUE_ALL
es 8
, entonces la suma de las tareas de carga y descarga es 8 y el resto está en cola. Int
. NOTA : si desea completar QUEUE_DOWNLOAD
o QUEUE_UPLOAD
, entonces el valor QUEUE_ALL
debe ser mayor o igual al mayor y menor o igual a la suma de QUEUE_UPLOAD
y QUEUE_DOWNLOAD
.QUEUE_DOWNLOAD
: Número de todas las tareas de descarga paralela. Int
QUEUE_UPLOAD
: número de todas las tareas de carga paralela. Int
12. Búsqueda de torrents
SEARCH_API_LINK
: enlace de la aplicación API de búsqueda. Obtenga su API implementando este repositorio. Str
1337x, Piratebay, Nyaasi, Torlock, Torrent Galaxy, Zooqle, Kickass, Bitsearch, MagnetDL, Libgen, YTS, Limetorrent, TorrentFunk, Glodls, TorrentProject y YourBittorrent
SEARCH_LIMIT
: límite de búsqueda para la API de búsqueda, límite para cada sitio y no límite de resultados general. El valor predeterminado es cero (límite de API predeterminado para cada sitio). Int
SEARCH_PLUGINS
: Lista de complementos de búsqueda de qBittorrent (enlaces sin formato de github). He agregado algunos complementos, puede eliminar/agregar complementos como desee. Fuente principal: complementos de búsqueda de qBittorrent (oficiales/no oficiales). List
Asegúrese de montar la carpeta de la aplicación e instalar la ventana acoplable desde la documentación oficial.
sudo dockerd
sudo docker build . -t mltb
sudo docker run -p 80:80 -p 8080:8080 mltb
sudo docker ps
sudo docker stop id
NOTA : Si desea utilizar puertos distintos de 80 y 8080 para la selección de archivos torrent y el servicio rclone respectivamente, cámbielo también en docker-compose.yml.
sudo apt install docker-compose-plugin
sudo docker compose up
sudo docker compose up --build
sudo docker compose stop
sudo docker compose start
sudo docker compose logs --follow
NOTAS IMPORTANTES :
Establezca las variables BASE_URL_PORT
y RCLONE_SERVE_PORT
en cualquier puerto que desee utilizar. El valor predeterminado es 80
y 8080
respectivamente.
Verifique la cantidad de unidades de procesamiento de su máquina con nproc
cmd y multiplíquela por 4, luego edite AsyncIOThreadsCount
en qBittorrent.conf.
mirror - or /m Mirror
qbmirror - or /qm Mirror torrent using qBittorrent
jdmirror - or /jm Mirror using jdownloader
nzbmirror - or /nm Mirror using sabnzbd
ytdl - or /y Mirror yt-dlp supported links
leech - or /l Upload to telegram
qbleech - or /ql Leech torrent using qBittorrent
jdleech - or /jl Leech using jdownloader
nzbleech - or /nl Leech using sabnzbd
ytdlleech - or /yl Leech yt-dlp supported links
clone - Copy file/folder to Drive
count - Count file/folder from GDrive
usetting - or /us User settings
bsetting - or /bs Bot settings
status - Get Mirror Status message
sel - Select files from torrent
rss - Rss menu
list - Search files in Drive
search - Search for torrents with API
cancel - or /c Cancel a task
cancelall - Cancel all tasks
forcestart - or /fs to start task from queue
del - Delete file/folder from GDrive
log - Get the Bot Log
shell - Run commands in Shell
aexec - Execute async function
exec - Execute sync function
restart - Restart the Bot
stats - Bot Usage Stats
ping - Ping the Bot
help - All cmds with description
NOTAS
Termux
.generate_drive_token.py
en el navegador local. pip3 install google-api-python-client google-auth-httplib2 google-auth-oauthlib
python3 generate_drive_token.py
rclone config
.RCLONE_PATH
es como GDRIVE_ID
una ruta predeterminada para el espejo. Además de esas variables DEFAULT_UPLOAD
para elegir la herramienta predeterminada, ya sea rclone o google-api-python-client.DEFAULT_UPLOAD
= 'rc' entonces debe completar RCLONE_PATH
con la ruta predeterminada o con rcl
para seleccionar la ruta de destino en cada nueva tarea.DEFAULT_UPLOAD
= 'gd' entonces debe completar GDRIVE_ID
con la carpeta/ID de TD.rclone/{user_id}.conf
, entonces RCLONE_PATH
debe comenzar con mrcc:
.mrcc:
al principio.UPSTREAM_REPO
se puede utilizar para editar/agregar cualquier archivo en el repositorio.UPSTREAM_REPO
privado en caso de que desee capturar todos los archivos, incluidos los privados.UPSTREAM_REPO
privado y sus archivos privados en este repositorio privado, sus archivos privados se sobrescribirán desde este repositorio. Además, si está utilizando una base de datos para archivos privados, todos los archivos de la base de datos anularán los archivos privados que se agregaron antes de la implementación o del UPSTREAM_REPO
privado.UPSTREAM_REPO
con el enlace del repositorio oficial, tenga cuidado en caso de cualquier cambio en los requisitos.txt, su bot no se iniciará después del reinicio. En este caso, debe realizar la implementación nuevamente con el código actualizado para instalar los nuevos requisitos o simplemente cambiando UPSTREAM_REPO
a su enlace de bifurcación con esas actualizaciones anteriores.UPSTREAM_REPO
con su enlace de bifurcación, tenga cuidado también si obtuvo las confirmaciones del repositorio oficial.UPSTREAM_REPO
entrarán en vigencia solo después del reinicio. -d
conducirá al uso de opciones globales para aria2c o qbittorrent.GlobalMaxRatio
y GlobalMaxSeedingMinutes
en qbittorrent.conf, -1
significa sin límite, pero puede cancelar manualmente.MaxRatioAction
.--seed-ratio
(0 significa sin límite) y --seed-time
(0 significa sin semilla) en aria.sh. Para que la cuenta de servicio funcione, debe configurar
USE_SERVICE_ACCOUNTS
= "True" en el archivo de configuración o en las variables de entorno. NOTA : Solo se recomienda usar cuentas de servicio mientras se cargan archivos en una unidad de equipo.
Creemos solo las Cuentas de Servicio que necesitamos.
Advertencia : El abuso de esta característica no es el objetivo de este proyecto y NO recomendamos que haga muchos proyectos, solo un proyecto y 100 SA le permiten un uso amplio, también es posible que el abuso excesivo pueda hacer que sus proyectos sean prohibidos por Google.
NOTA : Si creó SA anteriormente a partir de este script, también puede volver a descargar las claves ejecutando:
python3 gen_sa_accounts.py --download-keys $PROJECTID
NOTA: 1 cuenta de servicio puede cargar/copiar alrededor de 750 GB por día, 1 proyecto puede generar 100 cuentas de servicio, por lo que puede cargar 75 TB por día.
NOTA: Todas las personas pueden copiar
2TB/DAY
de cada creador de archivos (cuenta de descarga), por lo que si recibe el erroruserRateLimitExceeded
, eso no significa que excedió su límite, sino que se excedió el límite del creador de archivos, que es2TB/DAY
.
Elija uno de estos 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
Se creará una carpeta llamada cuentas que contendrá claves para las cuentas de servicio.
Elija uno de estos 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 ..
Luego agregue correos electrónicos de emails.txt al grupo de Google, luego agregue este grupo de Google a su unidad compartida y promuevalo al administrador y elimine el archivo email.txt de la carpeta de cuentas.
python3 add_to_team_drive.py -d SharedTeamDriveSrcID
https://mongodb.com/
y regístrese.Database
en Encabezado Deployment
, su clúster creado estará allí.Allow Access From Anywhere
y presione Add IP Address
sin editar la IP, luego cree un usuario.Choose a connection
, luego presione Connect your application
. Elija Driver
* python * y version
3.12 o posterior .connection string
y reemplace
con la contraseña de su usuario, luego presione cerrar. Para utilizar la lista de múltiples TD/carpeta. Ejecute driveid.py en su terminal y sígalo. Generará el archivo list_drives.txt o simplemente puede crear el archivo list_drives.txt
en el directorio de trabajo y completarlo, verifique el siguiente formato:
DriveName folderID/tdID or `root` IndexLink(if available)
DriveName folderID/tdID or `root` IndexLink(if available)
Ejemplo:
TD1 root https://example.dev
TD2 0AO1JDB1t3i5jUk9PVA https://example.dev
Para usar sus cuentas premium en yt-dlp o para enlaces de índice protegidos, cree un archivo .netrc de acuerdo con el siguiente formato:
Nota : cree .netrc y no netrc, este archivo estará oculto, así que vea los archivos ocultos para editarlos después de la creación.
Formato:
machine host login username password my_password
Ejemplo:
machine instagram login anas.tayyar password mypassword
Nota de Instagram : debe iniciar sesión incluso si desea descargar publicaciones públicas y después del primer intento debe confirmar que inició sesión desde una IP diferente (puede confirmar desde la aplicación del teléfono).
Nota de Youtube : para la autenticación youtube
utilice el archivo cookies.txt.
Al usar Aria2c, también puedes usar la función integrada del bot con o sin nombre de usuario. Aquí un ejemplo de enlace de índice sin nombre de usuario.
machine example.workers.dev password index_password
Donde host es el nombre del extractor (por ejemplo, Instagram, Twitch). Se pueden agregar varias cuentas de diferentes hosts, cada una separada por una nueva línea.
Si tienes ganas de mostrar tu agradecimiento por este proyecto, ¿qué tal si me invitas a un café?
Identificación de Binance:
52187862
Dirección USDT:
TEzjjfkxLKQqndpsdpkA7jgiX7QQCL5p4f
Red:
TRC20
Dirección TRX:
TEzjjfkxLKQqndpsdpkA7jgiX7QQCL5p4f
Red:
TRC20
Dirección BTC:
17dkvxjqdc3yiaTs6dpjUB1TjV3tD7ScWe
Dirección ETH:
0xf798a8a1c72d593e16d8f3bb619ebd1a093c7309