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"
|
url = f"{self.base_url}/setMyCommands"
|
||||||
commands = [
|
commands = [
|
||||||
{"command": "scrape", "description": "Rulează scraper-ul BTGO"},
|
{"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": "zip", "description": "Trimite ultimele fișiere ca ZIP"},
|
||||||
{"command": "status", "description": "Status sistem"},
|
{"command": "status", "description": "Status sistem"},
|
||||||
{"command": "help", "description": "Ajutor comenzi"}
|
{"command": "help", "description": "Ajutor comenzi"}
|
||||||
@@ -100,10 +101,11 @@ class TelegramTriggerBot:
|
|||||||
return True
|
return True
|
||||||
return user_id in self.allowed_users
|
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"""
|
"""Execută scraper-ul"""
|
||||||
# Trimite mesaj inițial și salvează message_id pentru editare ulterioară
|
# 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
|
message_id = None
|
||||||
try:
|
try:
|
||||||
message_id = response.json()['result']['message_id']
|
message_id = response.json()['result']['message_id']
|
||||||
@@ -113,12 +115,17 @@ class TelegramTriggerBot:
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
# Rulează scraper-ul
|
# 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
|
# Prepare environment with global playwright path + Telegram progress info
|
||||||
env = os.environ.copy()
|
env = os.environ.copy()
|
||||||
env['PLAYWRIGHT_BROWSERS_PATH'] = 'C:\\playwright-browsers'
|
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_CHAT_ID'] = str(chat_id)
|
||||||
env['TELEGRAM_MESSAGE_ID'] = str(message_id)
|
env['TELEGRAM_MESSAGE_ID'] = str(message_id)
|
||||||
logging.info(f"Setting environment: TELEGRAM_CHAT_ID={chat_id}, TELEGRAM_MESSAGE_ID={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:
|
if result.returncode == 0:
|
||||||
# Succes - mesajul final va fi editat de notifications.py
|
|
||||||
logging.info("Scraper finalizat cu succes")
|
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:
|
else:
|
||||||
# Eroare
|
# Eroare
|
||||||
logging.error(f"Scraper eșuat cu cod {result.returncode}")
|
logging.error(f"Scraper eșuat cu cod {result.returncode}")
|
||||||
@@ -302,6 +314,7 @@ class TelegramTriggerBot:
|
|||||||
welcome_msg += (
|
welcome_msg += (
|
||||||
"Comenzi disponibile:\n"
|
"Comenzi disponibile:\n"
|
||||||
"`/scrape` - Ruleaza scraper-ul\n"
|
"`/scrape` - Ruleaza scraper-ul\n"
|
||||||
|
"`/scrape_zip` - Ruleaza scraper + trimite ZIP\n"
|
||||||
"`/zip` - Trimite ultimele fisiere ca ZIP\n"
|
"`/zip` - Trimite ultimele fisiere ca ZIP\n"
|
||||||
"`/status` - Status sistem\n"
|
"`/status` - Status sistem\n"
|
||||||
"`/help` - Ajutor"
|
"`/help` - Ajutor"
|
||||||
@@ -312,6 +325,10 @@ class TelegramTriggerBot:
|
|||||||
logging.info(f"Comandă /scrape primită în {context}")
|
logging.info(f"Comandă /scrape primită în {context}")
|
||||||
self.run_scraper(chat_id, message_id)
|
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':
|
elif text == '/zip':
|
||||||
logging.info(f"Comandă /zip primită în {context}")
|
logging.info(f"Comandă /zip primită în {context}")
|
||||||
self.send_zip_files(chat_id, message_id)
|
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 += "IN GRUP: Toti membrii vad comenzile si rezultatele\n\n"
|
||||||
help_msg += (
|
help_msg += (
|
||||||
"*COMENZI:*\n"
|
"*COMENZI:*\n"
|
||||||
"`/scrape` - Ruleaza scraper-ul + trimite fisiere\n"
|
"`/scrape` - Ruleaza scraper + trimite fisiere individuale\n"
|
||||||
"`/zip` - Trimite ultimele fisiere ca arhiva ZIP\n"
|
"`/scrape_zip` - Ruleaza scraper + trimite arhiva ZIP\n"
|
||||||
|
"`/zip` - Trimite ultimele fisiere ca arhiva ZIP (fara scraping)\n"
|
||||||
"`/status` - Informatii sistem\n"
|
"`/status` - Informatii sistem\n"
|
||||||
"`/help` - Acest mesaj\n\n"
|
"`/help` - Acest mesaj\n\n"
|
||||||
"*GHID SCRAPER:*\n"
|
"*GHID SCRAPER:*\n"
|
||||||
"1. Trimite `/scrape`\n"
|
"1. Trimite `/scrape` sau `/scrape_zip`\n"
|
||||||
"2. Asteapta notificarea de 2FA pe telefon\n"
|
"2. Asteapta notificarea de 2FA pe telefon\n"
|
||||||
"3. Aproba in aplicatia George\n"
|
"3. Aproba in aplicatia George\n"
|
||||||
"4. Primesti fisierele automat\n\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"
|
"*NOTE:*\n"
|
||||||
"- Scraper-ul ruleaza ~2-3 minute\n"
|
"- Scraper-ul ruleaza ~2-3 minute\n"
|
||||||
"- VM-ul trebuie sa aiba browser vizibil\n"
|
"- VM-ul trebuie sa aiba browser vizibil"
|
||||||
"- `/zip` trimite datele existente (fara scraping)"
|
|
||||||
)
|
)
|
||||||
self.send_message(chat_id, help_msg, message_id)
|
self.send_message(chat_id, help_msg, message_id)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user