import asyncio import json import os from dotenv import load_dotenv load_dotenv("../.env") from common.utils import normalize_handle from integrations.youtube import YouTubeClient from integrations.apify import ApifyClient from integrations.naver import NaverClient from integrations.firecrawl import FirecrawlClient INPUT = { "youtube": "@banobagips", "instagram": ["@banobagi_ps"], "facebook": "BanobagiPlasticSurgery", "naver_blog": "https://blog.naver.com/banobagiprs", "gangnam_unni": "https://www.gangnamunni.com/hospitals/23", } OUT_DIR = "../test_results" def save(name: str, data) -> None: os.makedirs(OUT_DIR, exist_ok=True) path = os.path.join(OUT_DIR, f"{name}.json") with open(path, "w", encoding="utf-8") as f: json.dump(data, f, ensure_ascii=False) print(f"saved → {path}") async def main(): yt = YouTubeClient(api_key=os.environ["YOUTUBE_API_KEY"]) apify = ApifyClient(token=os.environ["APIFY_API_TOKEN"]) naver = NaverClient(client_id=os.environ["NAVER_CLIENT_ID"], client_secret=os.environ["NAVER_CLIENT_SECRET"]) firecrawl = FirecrawlClient(api_key=os.environ["FIRECRAWL_API_KEY"]) yt_handle = normalize_handle("youtube", INPUT["youtube"]) ig_handle = normalize_handle("instagram", INPUT["instagram"][0]) fb_handle = normalize_handle("facebook", INPUT["facebook"]) naver_handle = normalize_handle("naver_blog", INPUT["naver_blog"]) save("youtube", await yt.fetch_channel(yt_handle)) save("instagram_profile", await apify.fetch_instagram_profile(ig_handle)) # save("instagram_posts", await apify.fetch_instagram_posts(ig_handle)) # save("instagram_reels", await apify.fetch_instagram_reels(ig_handle)) save("facebook", await apify.fetch_facebook_page(f"https://www.facebook.com/{fb_handle}")) save("naver_blog", await naver.fetch_blog_rss(naver_handle)) save("gangnam_unni", await firecrawl.fetch_gangnam_unni(INPUT["gangnam_unni"])) asyncio.run(main())