| async def start(self): |
| async with self._lock: |
| if self._setup_done: return |
| setup_and_start_xray() |
| |
| self.playwright = await async_playwright().start() |
| self.context = await self.playwright.chromium.launch_persistent_context( |
| "/tmp/xray_profile", |
| headless=True, |
| proxy={"server": "socks5://127.0.0.1:10808"}, |
| user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36" |
| ) |
| |
| |
| test_page = await self.context.new_page() |
| try: |
| print("[DEBUG] Overujem IP cez tunel...") |
| await test_page.goto("https://api.ipify.org", timeout=15000) |
| ip = await test_page.inner_text("body") |
| print(f"[DEBUG] Tvoja IP v tuneli je: {ip}") |
| except Exception as e: |
| print(f"[DEBUG ERROR] Tunel nefunguje: {e}") |
| finally: |
| await test_page.close() |
| |
|
|
| self._setup_done = True |
|
|
| async def search_movies(query): |
| page = await manager.get_page() |
| try: |
| url = f"{DOMENA}/se/j/json?q={urllib.parse.quote(query)}" |
| print(f"[TUNNEL] Vyhľadávam: {query}") |
| |
| |
| await page.goto(url, wait_until="networkidle", timeout=30000) |
| |
| |
| raw_content = await page.content() |
| print(f"[DEBUG] Surová dĺžka obsahu: {len(raw_content)}") |
| |
| if len(raw_content) < 200: |
| print(f"[DEBUG] POZOR! Web vrátil podozrivo málo dát: {raw_content}") |
|
|
| content = await page.evaluate("() => document.body.innerText") |
| return json.loads(content) |
| except Exception as e: |
| print(f"[SEARCH ERROR] {e}") |
| return [] |
| finally: await page.close() |
|
|