o2o-infinith-backend/app/test_fetch.py

55 lines
1.9 KiB
Python

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())