Adaugă comanda /scrape_zip în Telegram bot
Funcționalitate: - /scrape_zip - Rulează scraper + trimite rezultatele ca ZIP - Dezactivează notificările automate din scraper - Bot trimite manual ZIP-ul după scraping Logică: - run_scraper() primește parametru send_as_zip - Dacă send_as_zip=True: - Setează ENABLE_NOTIFICATIONS=false în env - După scraping, apelează send_zip_files() - Rezultat: un singur ZIP în loc de fișiere individuale Comenzi disponibile: - /scrape - Fisiere individuale (comportament original) - /scrape_zip - Un singur ZIP (nou) - /zip - Trimite fișierele existente ca ZIP (fără scraping) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -57,6 +57,7 @@ class TelegramTriggerBot:
|
||||
url = f"{self.base_url}/setMyCommands"
|
||||
commands = [
|
||||
{"command": "scrape", "description": "Rulează scraper-ul BTGO"},
|
||||
{"command": "scrape_zip", "description": "Rulează scraper + trimite ZIP"},
|
||||
{"command": "zip", "description": "Trimite ultimele fișiere ca ZIP"},
|
||||
{"command": "status", "description": "Status sistem"},
|
||||
{"command": "help", "description": "Ajutor comenzi"}
|
||||
@@ -100,10 +101,11 @@ class TelegramTriggerBot:
|
||||
return True
|
||||
return user_id in self.allowed_users
|
||||
|
||||
def run_scraper(self, chat_id, reply_to_message_id=None):
|
||||
def run_scraper(self, chat_id, reply_to_message_id=None, send_as_zip=False):
|
||||
"""Execută scraper-ul"""
|
||||
# Trimite mesaj inițial și salvează message_id pentru editare ulterioară
|
||||
response = self.send_message(chat_id, "*BTGO Scraper pornit*\n\nAsteapta 2FA pe telefon.", reply_to_message_id)
|
||||
zip_msg = " (arhiva ZIP)" if send_as_zip else ""
|
||||
response = self.send_message(chat_id, f"*BTGO Scraper pornit{zip_msg}*\n\nAsteapta 2FA pe telefon.", reply_to_message_id)
|
||||
message_id = None
|
||||
try:
|
||||
message_id = response.json()['result']['message_id']
|
||||
@@ -113,12 +115,17 @@ class TelegramTriggerBot:
|
||||
|
||||
try:
|
||||
# Rulează scraper-ul
|
||||
logging.info("Pornire scraper...")
|
||||
logging.info(f"Pornire scraper (send_as_zip={send_as_zip})...")
|
||||
|
||||
# Prepare environment with global playwright path + Telegram progress info
|
||||
env = os.environ.copy()
|
||||
env['PLAYWRIGHT_BROWSERS_PATH'] = 'C:\\playwright-browsers'
|
||||
if message_id:
|
||||
|
||||
# Dacă send_as_zip, dezactivează notificările - bot-ul va trimite ZIP-ul manual
|
||||
if send_as_zip:
|
||||
env['ENABLE_NOTIFICATIONS'] = 'false'
|
||||
logging.info("Notificări dezactivate - bot va trimite ZIP manual")
|
||||
elif message_id:
|
||||
env['TELEGRAM_CHAT_ID'] = str(chat_id)
|
||||
env['TELEGRAM_MESSAGE_ID'] = str(message_id)
|
||||
logging.info(f"Setting environment: TELEGRAM_CHAT_ID={chat_id}, TELEGRAM_MESSAGE_ID={message_id}")
|
||||
@@ -135,9 +142,14 @@ class TelegramTriggerBot:
|
||||
)
|
||||
|
||||
if result.returncode == 0:
|
||||
# Succes - mesajul final va fi editat de notifications.py
|
||||
logging.info("Scraper finalizat cu succes")
|
||||
|
||||
# Dacă send_as_zip, trimite ZIP manual
|
||||
if send_as_zip:
|
||||
logging.info("Trimitere rezultate ca ZIP...")
|
||||
self.send_zip_files(chat_id, reply_to_message_id)
|
||||
# Altfel, mesajul final va fi editat de notifications.py
|
||||
|
||||
else:
|
||||
# Eroare
|
||||
logging.error(f"Scraper eșuat cu cod {result.returncode}")
|
||||
@@ -302,6 +314,7 @@ class TelegramTriggerBot:
|
||||
welcome_msg += (
|
||||
"Comenzi disponibile:\n"
|
||||
"`/scrape` - Ruleaza scraper-ul\n"
|
||||
"`/scrape_zip` - Ruleaza scraper + trimite ZIP\n"
|
||||
"`/zip` - Trimite ultimele fisiere ca ZIP\n"
|
||||
"`/status` - Status sistem\n"
|
||||
"`/help` - Ajutor"
|
||||
@@ -312,6 +325,10 @@ class TelegramTriggerBot:
|
||||
logging.info(f"Comandă /scrape primită în {context}")
|
||||
self.run_scraper(chat_id, message_id)
|
||||
|
||||
elif text == '/scrape_zip':
|
||||
logging.info(f"Comandă /scrape_zip primită în {context}")
|
||||
self.run_scraper(chat_id, message_id, send_as_zip=True)
|
||||
|
||||
elif text == '/zip':
|
||||
logging.info(f"Comandă /zip primită în {context}")
|
||||
self.send_zip_files(chat_id, message_id)
|
||||
@@ -343,19 +360,23 @@ class TelegramTriggerBot:
|
||||
help_msg += "IN GRUP: Toti membrii vad comenzile si rezultatele\n\n"
|
||||
help_msg += (
|
||||
"*COMENZI:*\n"
|
||||
"`/scrape` - Ruleaza scraper-ul + trimite fisiere\n"
|
||||
"`/zip` - Trimite ultimele fisiere ca arhiva ZIP\n"
|
||||
"`/scrape` - Ruleaza scraper + trimite fisiere individuale\n"
|
||||
"`/scrape_zip` - Ruleaza scraper + trimite arhiva ZIP\n"
|
||||
"`/zip` - Trimite ultimele fisiere ca arhiva ZIP (fara scraping)\n"
|
||||
"`/status` - Informatii sistem\n"
|
||||
"`/help` - Acest mesaj\n\n"
|
||||
"*GHID SCRAPER:*\n"
|
||||
"1. Trimite `/scrape`\n"
|
||||
"1. Trimite `/scrape` sau `/scrape_zip`\n"
|
||||
"2. Asteapta notificarea de 2FA pe telefon\n"
|
||||
"3. Aproba in aplicatia George\n"
|
||||
"4. Primesti fisierele automat\n\n"
|
||||
"*DIFERENTE:*\n"
|
||||
"• `/scrape` - Fisiere individuale (CSV + JSON)\n"
|
||||
"• `/scrape_zip` - Un singur ZIP cu toate fisierele\n"
|
||||
"• `/zip` - Rapid, foloseste datele existente\n\n"
|
||||
"*NOTE:*\n"
|
||||
"- Scraper-ul ruleaza ~2-3 minute\n"
|
||||
"- VM-ul trebuie sa aiba browser vizibil\n"
|
||||
"- `/zip` trimite datele existente (fara scraping)"
|
||||
"- VM-ul trebuie sa aiba browser vizibil"
|
||||
)
|
||||
self.send_message(chat_id, help_msg, message_id)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user