Este es un Telegram Bot escrito en Python para reflejar archivos en Internet en su Google Drive o Telegram. Basado en python-aria-mirror-bot
En cada archivo hay un cambio importante con respecto al código base, es casi totalmente diferente. Aquí algunas de las características y correcciones que recuerdo.
root
o TeamDrive, los ID de carpeta se enumerarán con un método no 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, 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 (solo funciona para archivos, no para carpetas o cuentas comerciales), uptobox.com y solidfiles.com
git clone https://github.com/arshsisodiya/helios-mirror 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:
1. Campos obligatorios
BOT_TOKEN
: El token de Bot de Telegram que obtuviste de @BotFather. Str
GDRIVE_FOLDER_ID
: esta es la carpeta/ID de TeamDrive de la carpeta o root
de Google Drive a la que desea cargar todos los espejos. Str
OWNER_ID
: el ID de usuario de Telegram (no el nombre de usuario) del propietario del bot. Int
DOWNLOAD_DIR
: la ruta a la carpeta local donde se deben descargar las descargas. Str
DOWNLOAD_STATUS_UPDATE_INTERVAL
: Tiempo en segundos después del cual se actualizará el mensaje de progreso/estado. Recomendado 10
segundos como mínimo. Int
AUTO_DELETE_MESSAGE_DURATION
: Intervalo de tiempo (en segundos), después del cual el bot elimina su mensaje y el mensaje de comando que se espera que se vea al instante. NOTA : Establezca en -1
para desactivar la eliminación automática de mensajes. Int
AUTO_DELETE_UPLOAD_MESSAGE_DURATION
: Intervalo de tiempo (en segundos), después del cual el bot elimina su mensaje y el mensaje de comando que se espera que se vea al instante. NOTA : Establezca en -1
para deshabilitar la eliminación automática de mensajes de carga. 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
BOT_PM
: - configúrelo True
si desea enviar enlaces espejo y archivos filtrados en el PM del usuario, el valor predeterminado es False
.FORCE_BOT_PM
: - configúrelo True
si es Verdadero, todos los enlaces reflejados y archivos filtrados se enviarán directamente en PM, los enlaces reflejados no se enviarán en el chat actual y el mensaje fuente se eliminará inmediatamente después de que se complete la duplicación/limpieza, AUTO_DELETE_UPLOAD_MESSAGE_DURATION no se aplicará en él .IS_TEAM_DRIVE
: Establezca en True
si carga en TeamDrive. El valor predeterminado es False
. Bool
DATABASE_URL
: la URL de su base de datos SQL. Siga esto Generar base de datos para generar una base de datos. Los datos se guardarán en la base de datos: usuarios de autenticación y sudo, configuraciones de sanguijuela que incluyen miniaturas para cada usuario, datos rss y tareas incompletas. NOTA : Si implementa en heroku y usa heroku postgresql, elimine esta variable del archivo config.env . DATABASE_URL se obtendrá de las variables de Heroku. Str
AUTHORIZED_CHATS
: Complete user_id y chat_id de los grupos/usuarios que desea autorizar. Sepárelos por espacio. Str
SUDO_USERS
: complete el ID de usuario de los usuarios a los que desea otorgar permiso Sudo. Sepárelos por espacio. Str
IGNORE_PENDING_REQUESTS
: ignora las solicitudes pendientes después del reinicio. El valor predeterminado es False
. Bool
USE_SERVICE_ACCOUNTS
: si se deben utilizar cuentas de servicio o no. Para que esto funcione, consulte la sección Uso de cuentas de servicio a continuación. El valor predeterminado es False
. Bool
INDEX_URL
: consulte https://gitlab.com/ParveenBhadooOfficial/Google-Drive-Index. Str
STATUS_LIMIT
: Limita el no. de tareas que se muestran en el mensaje de estado con botones. NOTA : El límite recomendado es 4
tareas. Str
STOP_DUPLICATE
: El robot comprobará el archivo en Drive; si está presente en Drive, se detendrá la descarga o la clonación. ( NOTA : el archivo se verificará utilizando el nombre de archivo, no el hash de archivo, por lo que esta función aún no es perfecta). El valor predeterminado es False
. Bool
CMD_INDEX
: número de índice de comandos. Este número se agregará al final de todos los comandos. Str
TORRENT_TIMEOUT
: Tiempo de espera de descarga de torrents inactivos con qBittorrent y Aria2c en segundos. Str
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. Requerir base de datos y (supergrupo o canal). El valor predeterminado es False
. Bool
UPTOBOX_TOKEN
: Token de Uptobox para reflejar los enlaces de Uptobox. Consíguelo desde la cuenta Premium de Uptobox.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
MIRROR_LOGS
: - ID de chat de los canales/grupos donde desea almacenar registros Mirror. NOTA: Agregue el bot en el canal/grupo de registros Mirror como administrador.LEECH_LOG
: - ID de chat del canal/grupo donde se cargarán los archivos filtrados. NOTA: solo coloque 1 ID de canal/grupo que comience con -100xxxxxxxxx. NOTA: agregue un bot en ese canal/grupo como administrador; si deja este bot vacío, enviará un archivo sanguijuela. archivos en el chat actual.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. Str
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
CUSTOM_FILENAME
: agrega una palabra personalizada al nombre del archivo filtrado. Str
USER_SESSION_STRING
: Para descargar/cargar desde su cuenta de Telegram. Si posee una cuenta premium. 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 supergrupo o canal.TITLE_NAME
: nombre del título para las páginas de Telegraph (al usar el comando /list)AUTHOR_NAME
: = Nombre del autor de las páginas de TelegraphAUTHOR_URL
: = URL del autor de la página TelegraphCRYPT
: Cookie para el generador de enlaces de Google Drive de gdtot. Siga estos pasos.APPDRIVE_EMAIL
: - Correo electrónico de tu cuenta AppdriveAPPDRIVE_PASS
: - La contraseña de tu cuenta AppdriveTORRENT_DIRECT_LIMIT
: Para limitar el tamaño del espejo Torrent/Direct. No agregue unidad. La unidad predeterminada es GB
.ZIP_UNZIP_LIMIT
: para limitar el tamaño de los comandos zip y descomprimir. No agregue unidad. La unidad predeterminada es GB
.CLONE_LIMIT
: para limitar el tamaño de la carpeta/archivo de Google Drive que puede clonar. No agregue unidad. La unidad predeterminada es GB
.MEGA_LIMIT
: Para limitar el tamaño de la descarga Mega. No agregue unidad. La unidad predeterminada es GB
.STORAGE_THRESHOLD
: Para dejar un almacenamiento específico libre y cualquier descarga dará lugar a dejar un almacenamiento libre inferior a este valor, se cancelará. No agregue unidad. La unidad predeterminada es GB
.BASE_URL_OF_BOT
: URL BASE válida donde se implementa el bot para usar la selección web de qbittorrent. 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
). Esta Var es opcional en VPS y es necesaria para Heroku especialmente para evitar que la aplicación esté inactiva o inactiva. Para Heroku, complete https://yourappname.herokuapp.com
. ¿Aún estás inactivo? Puede utilizar http://cron-job.org para hacer ping a su aplicación Heroku. Str
SERVER_PORT
: Solo para VPS, que es el puerto BASE_URL_OF_BOT . Str
WEB_PINCODE
: si está vacío o False
, significa que no se requiere más código PIN durante la selección web de qbit. Bool
MaxConnecs
, disminuya AsyncIOThreadsCount
en la configuración de qbittorrent y establezca el límite de DiskWriteCacheSize
en 32
.RSS_DELAY
: tiempo en segundos para el intervalo de actualización de rss. Recomendado 900
segundos al menos. El valor predeterminado es 900
en segundos. Str
RSS_COMMAND
: elija el comando para la acción deseada. Str
RSS_CHAT_ID
: ID del chat donde se enviarán los enlaces rss. Si usa el canal, agregue la identificación del canal. Str
RSS_USER_SESSION_STRING
: Para enviar enlaces rss desde su cuenta de Telegram. En lugar de agregar un bot al canal, vincule el canal al grupo para obtener el enlace rss, ya que el bot no leerá comandos de sí mismo ni de otro bot. 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 utilice la misma cadena de sesión que USER_SESSION_STRING
.DATABASE_URL
y RSS_CHAT_ID
; de lo contrario, todos los comandos rss no funcionarán. Debes usar bot en grupo. Puede agregar el bot a un canal y vincular este canal al grupo para que los mensajes enviados por el bot al canal se reenvíen al grupo sin usar RSS_USER_STRING_SESSION
.ACCOUNTS_ZIP_URL
: solo si desea cargar su cuenta de servicio externamente desde un enlace de índice o mediante cualquier enlace de descarga directa, NO un enlace de página web. Archive la carpeta de cuentas en un archivo ZIP. Complete esto con el enlace de descarga directa del archivo zip. Str
. Si el índice necesita autenticación, agregue la descarga directa como se muestra a continuación:https://username:[email protected]/...
TOKEN_PICKLE_URL
: solo si desea cargar su token.pickle externamente desde un enlace de índice. Complete esto con el enlace directo de ese archivo. Str
MULTI_SEARCH_URL
: verifique la configuración drive_folder
aquí. Escriba el archivo drive_folder aquí. Abra el archivo sin formato de esa esencia, su URL será la variable requerida. Debe estar en este formulario después de eliminar la identificación de confirmación: https://gist.githubusercontent.com/username/gist-id/raw/drive_folder. Str
YT_COOKIES_URL
: Cookies de autenticación de Youtube. Verifique la configuración aquí. Utilice el enlace sin formato de Gist y elimine la identificación de confirmación del enlace, para que pueda editarlo solo desde lo esencial. Str
NETRC_URL
: para crear el archivo .netrc contiene autenticación para aria2c y yt-dlp. Utilice el enlace sin formato de Gist y elimine la identificación de confirmación del enlace, para que pueda editarlo solo desde lo esencial. NOTA : Después de editar .nterc, debe reiniciar la ventana acoplable o, si está implementado en heroku, reinicie dyno en caso de que sus ediciones estén relacionadas con la autenticación aria2c. Str
MEGA_API_KEY
: Clave API de Mega.nz para reflejar los enlaces de mega.nz. Consíguelo en la página Mega SDK. Str
MEGA_EMAIL_ID
: ID de correo electrónico utilizado para registrarse en mega.nz y usar una cuenta premium. Str
MEGA_PASSWORD
: Contraseña de la cuenta mega.nz. Str
VIEW_LINK
: botón Ver enlace para abrir el enlace de índice del archivo en el navegador en lugar del enlace de descarga directa. Puede averiguar si es compatible con su código de índice o no, abrir cualquier video de su índice y verificar si su URL termina en ?a=view
. Compatible con el código BhadooIndex. El valor predeterminado es False
. Bool
SOURCE_LINK
: - configúrelo True
si desea obtener el enlace de origen del archivo reflejado/clonado, el valor predeterminado es False
.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). Str
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). Str
NOTAS
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
NOTAS IMPORTANTES :
SERVER_PORT
en 80
o cualquier otro puerto que desee utilizar. sudo docker container prune
sudo docker image prune -a
nproc
cmd y multiplíquela por 4, luego edite AsyncIOThreadsCount
en qBittorrent.conf.CONFIG_FILE_URL
usando Docker y Docker-compose, búsquelo en 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 : Si desea utilizar un puerto distinto al 80, cámbielo también en 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
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 variables de URL como TOKEN_PICKLE_URL
, todos los archivos de esas variables 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.UPSTREAM_BRANCH
nunca llenes heroku aquí. d:ratio:time
perfix junto con leech o mirror cmd.d
perfix conducirá al uso de opciones globales para aria2c o qbittorrent.MaxRatio
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 o clonar 2 TB de cada creador de archivos (correo electrónico del cargador).
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
1. Usando el ferrocarril
Provision PostgreSQL
PostgresSQL
Connect
Postgres Connection URL
y complete la variable DATABASE_URL
con ella2. Usando Heroku PostgreSQL
3. Usando ElephantSQL
Create New Instance
Select Region
Review
Create instance
DATABASE_URL
con ella. Para utilizar la lista de múltiples TD/carpeta. Ejecute driveid.py en su terminal y sígalo. Generará el archivo drive_folder o simplemente puede crear el archivo drive_folder
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)
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.
Crédito de recompra base: Anasty