76 lines
3.3 KiB
Python
76 lines
3.3 KiB
Python
import urllib.request
|
|
import json
|
|
import ssl
|
|
import sys
|
|
import io
|
|
|
|
if sys.platform == 'win32':
|
|
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8', errors='replace')
|
|
sys.stderr = io.TextIOWrapper(sys.stderr.buffer, encoding='utf-8', errors='replace')
|
|
|
|
EVOLUTION_API_URL = "https://evolution.almeira.com.co"
|
|
EVOLUTION_API_KEY = "EE49029EEB85-4568-8F81-C9FDFC6E2943"
|
|
INSTANCE_NAME = "AutomataAlmeira"
|
|
TARGET_PHONE = "573167455877"
|
|
|
|
APK_URL = "https://dripzone.almeira.com.co/api/download-apk"
|
|
|
|
ctx = ssl.create_default_context()
|
|
ctx.check_hostname = False
|
|
ctx.verify_mode = ssl.CERT_NONE
|
|
|
|
def send_request(endpoint, payload):
|
|
url = f"{EVOLUTION_API_URL}{endpoint}"
|
|
data = json.dumps(payload).encode("utf-8")
|
|
req = urllib.request.Request(url, data=data, headers={
|
|
"apikey": EVOLUTION_API_KEY,
|
|
"Content-Type": "application/json"
|
|
})
|
|
try:
|
|
with urllib.request.urlopen(req, context=ctx, timeout=60) as response:
|
|
return response.status, response.read().decode("utf-8")
|
|
except urllib.error.HTTPError as e:
|
|
return e.code, e.read().decode("utf-8")
|
|
except Exception as e:
|
|
return 0, str(e)
|
|
|
|
def send_update():
|
|
message_text = (
|
|
"🚀 *DripZone Sneakers - APK Oficial Actualizado*\n\n"
|
|
"✨ *Control por Identificador de WhatsApp & Avance de Lista:*\n"
|
|
"🆔 *Rastreo por ID Único:* Cada mensaje de WhatsApp ahora se controla mediante su identificador (`key.id` / `whatsappMessageId`).\n"
|
|
"⏭️ *Omitir Publicados y Descartados:* Los mensajes que ya han sido publicados o descartados quedan excluidos automáticamente "
|
|
"de la lista de pendientes. La vista ahora avanza continuamente hacia los mensajes que verdaderamente faltan por publicar, "
|
|
"sin repetir ni recargar los ya procesados.\n"
|
|
"🗑️ *Descarte Masivo y Persistente:* Ahora puedes descartar mensajes individualmente o en lote con persistencia en Appwrite.\n"
|
|
"🏷️ *Badge de ID en Tarjeta:* Cada publicación muestra su identificador exacto de WhatsApp para trazabilidad total.\n"
|
|
"⚡ *Gitea Sincronizado:* Código respaldado en la rama main de Gitea.\n"
|
|
"🌐 *VPS Desplegado:* Contenedor de producción activo en `https://dripzone.almeira.com.co`.\n\n"
|
|
f"📲 *Descarga directa del APK:* {APK_URL}\n\n"
|
|
"Instala o actualiza el archivo en tu dispositivo Android para disfrutar de estas mejoras."
|
|
)
|
|
|
|
print(f"📤 [1/2] Enviando mensaje de texto a WhatsApp (+{TARGET_PHONE})...")
|
|
payload_text = {
|
|
"number": TARGET_PHONE,
|
|
"text": message_text,
|
|
"delay": 1000
|
|
}
|
|
status, res = send_request(f"/message/sendText/{INSTANCE_NAME}", payload_text)
|
|
print(" -> Respuesta de texto:", status, res[:200] if res else "")
|
|
|
|
print(f"📤 [2/2] Enviando documento APK a WhatsApp (+{TARGET_PHONE})...")
|
|
payload_media = {
|
|
"number": TARGET_PHONE,
|
|
"mediatype": "document",
|
|
"mimetype": "application/vnd.android.package-archive",
|
|
"fileName": "DripZone.apk",
|
|
"caption": "📲 *DripZone.apk - Versión Oficial Actualizada*",
|
|
"media": APK_URL
|
|
}
|
|
status, res = send_request(f"/message/sendMedia/{INSTANCE_NAME}", payload_media)
|
|
print(" -> Respuesta de APK:", status, res[:200] if res else "")
|
|
|
|
if __name__ == "__main__":
|
|
send_update()
|