
import botasaurus as bt
import asyncio

async def resolve_google_news(urls):
    """Use botasaurus browser to get redirected URLs from Google News links."""
    results = []
    
    @bt.browser(headless=True, disable_cache=True)
    async def resolve_links(browser):
        for url in urls:
            try:
                page = await browser.new_page()
                await page.goto(url, wait_until="networkidle", timeout=30000)
                final_url = page.url
                await page.close()
                results.append({"original": url, "final": final_url})
                print(f"OK: {final_url[:80]}")
            except Exception as e:
                results.append({"original": url, "error": str(e)})
                print(f"ERROR: {e}")
    
    await resolve_links()
    return results

if __name__ == "__main__":
    import json
    urls = [
        "https://news.google.com/rss/articles/CBMiU0FVX3lxTFBNZnFCSzBiNjBkbFF5bUFleVFGcE5FVWwyQ3lRZmpjRWdOLXJhTFY1RHByWXZEdi1xZUg0S2tnWEJIX2o4b0xjVjVnTjcyLTJoVk9B0gFYQVVfeXFMTzdYNkg3WUhSaHRYQW9TS09EZ01QcFVjUlR",
        "https://news.google.com/rss/articles/CBMiYkFVX3lxTFBUV19wVGpsZjVpQmE5LVB4ZUN2YXdvYWlubVB6UWhUd043a0xrRi1kNmlNYmJXYVZpS3FiMFdhZXoyQmJEM20zZTRoRVhVbTFhNkNLQXkyeGFmMVo2dDJtVUhR?oc=5",
    ]
    results = asyncio.run(resolve_google_news(urls))
    print(json.dumps(results, indent=2))
