PROMPTURILE PENTRU SCANERUL PERSONAL DE VACANȚE ================================================ Sursa: https://simpluspv.eu/agent-ai-vacante-ieftine/ Se dau, pe rând, unui agent AI care scrie și rulează cod pe calculatorul tău (de exemplu Claude Code). Îți trebuie Python instalat. Pentru sursa-cache de zboruri: cont gratuit pe travelpayouts.com, apoi Tools -> API access -> generezi un token de Data API. Tokenul îl pui într-un fișier config.json, lângă script. Nu-l pune în prompt, nu-l pune în cod, nu-l urca nicăieri. Sursa Ryanair funcționează fără niciun cont. Prompturile descriu ce funcționa pe 5 august 2026. API-urile se schimbă — dacă ceva nu răspunde, cere-i agentului să verifice endpointul cu o cerere de probă înainte de a construi pe el. PROMPTUL 1 — SCANERUL DE ZBORURI -------------------------------- Construiește-mi un script Python numit zboruri.py care găsește cele mai ieftine zboruri dus-întors dintr-un oraș de plecare (implicit OTP — București Otopeni) către toate destinațiile posibile, și scrie un raport HTML local. Surse de date, amândouă: 1. Travelpayouts Data API, endpointul v1/prices/cheap — cache-ul Aviasales, acoperă toate companiile; prețurile sunt „văzute recent", nu live. Tokenul se citește din fișierul config.json aflat lângă script (câmpul "token") sau din variabila de mediu TRAVELPAYOUTS_TOKEN. Nu scrie tokenul în cod. 2. Fare-finderul public Ryanair: services-api.ryanair.com/farfnd/v4/roundTripFares — nu cere cont, nu cere cheie, prețurile sunt live. Atenție: respinge tăcut, cu eroare 400 fără mesaj, orice cerere cu limit mai mare de 20 — paginează cu offset, în pași de 16. Caută plecări în următoarele 45 de zile, cu durata sejurului între 2 și 5 zile. Reguli pentru raport (HTML, fond alb, culori vii): - fiecare rând: destinația (cu țara, în română), datele zborului, compania, prețul; - prețul e link de cumpărare: la Ryanair spre selectorul de zbor precompletat pe acea rută și acele date; la Aviasales spre căutarea pe rută + date; - lângă fiecare zbor, un link Booking.com precompletat pe exact acele date; - eticheta sursei pe fiecare rând: „cache" sau „live" — nu le amesteca fără etichetă; - filtre combinabile: țară, destinație, lună, companie; - praguri configurabile în config.json: sub 60 EUR = chilipir, sub 120 EUR = preț bun; - ține un istoric al prețurilor per rută în istoric.json (ultimele 30 de citiri) și marchează scăderile cu peste 30% sub mediana istorică. Detalii tehnice: primul lucru în script să fie reconfigurarea ieșirii pe UTF-8 (sys.stdout.reconfigure), altfel consola Windows strică diacriticele. Două comenzi: scan (interoghează sursele și scrie raportul) și raport (rescrie raportul din ultimul scan salvat, fără interogări noi). PROMPTUL 2 — ESCAPADA ÎNTR-O ȚARĂ --------------------------------- Extinde scanerul cu un al doilea script, escapada.py: zboruri către O SINGURĂ țară aleasă (parametru --tara, nume românesc sau cod de două litere), grupate pe orașe, cu până la 12 variante de date per oraș, ca să am de unde alege. Sursele variantelor, în ordinea încercării: 1. Travelpayouts v1/prices/calendar — prețul pe fiecare zi de plecare, pentru rutele cu calendar bogat; 2. pentru rutele cu calendar sărac: v2/prices/month-matrix întoarce segmente doar-dus pe ambele sensuri — împerechează-le în dus-întors de 2–5 zile, profil de city break; compania aeriană nu e garantată la variantele împerecheate — dedu-o din cine operează ruta și marcheaz-o „probabil"; 3. la Ryanair: endpointul cheapestPerDay. Fiecare variantă: preț-link de cumpărare + link Booking precompletat pe acele date, cu numărul de adulți din parametrul --adulti (implicit 2). Același stil de raport HTML ca la primul script. PROMPTUL 3 — PACHETELE WIZZ HOLIDAYS ------------------------------------ Al treilea script, wizz_holidays.py: pachetele zbor+cazare de pe holidays.wizzair.com. Nu încerca să reproduci API-ul lor — căutarea e asincronă, cu rezultatele livrate pe WebSocket, fragil de imitat. Folosește Playwright cu Chromium headless (pip install playwright, apoi python -m playwright install chromium): lasă pagina să se încarce complet și citește cardurile de ofertă gata randate. Reguli obligatorii, învățate din greșeli: - un card de ofertă = cel mai mic element care conține EXACT un titlu și un preț; orice definiție mai largă amestecă ofertele din caruseluri între ele; - imaginile se încarcă leneș — derulează și forțează încărcarea lor înainte de extracție; - feed-ul se rotește între încărcări — tot ce culegi (poză, preț, link) se culege într-o singură trecere, nu în treceri separate; - linkul direct al pachetului se obține cu un click pe card; - deduplică ofertele care apar în mai multe secțiuni. Culege din secțiunile: recomandate, weekend, beach, single-city. Per ofertă: poză, țară/oraș, stele, perioadă, preț nou/vechi, reducere în procente, linkul pachetului. Raport HTML în același stil. Scanul complet durează câteva minute — afișează progresul pe parcurs.