import json

# community-plugins.json を読み込んで検索する例
with open("community-plugins.json", encoding="utf-8") as f:
    plugins = json.load(f)

def search_plugins(keyword: str, limit: int = 10) -> list[dict]:
    """プラグイン名・作者・説明文からキーワード検索"""
    kw = keyword.lower()
    return [
        p for p in plugins
        if kw in p.get("name", "").lower()
        or kw in p.get("author", "").lower()
        or kw in p.get("description", "").lower()
    ][:limit]

# 統計データと結合してダウンロード数を付加する
with open("community-plugin-stats.json", encoding="utf-8") as f:
    stats = json.load(f)

def get_plugin_with_stats(plugin_id: str) -> dict:
    """プラグイン情報と統計を結合して返す"""
    plugin = next((p for p in plugins if p["id"] == plugin_id), {})
    return {
        **plugin,
        "downloads": stats.get(plugin_id, {}).get("downloads", 0)
    }

if __name__ == "__main__":
    results = search_plugins("task")
    for p in results:
        info = get_plugin_with_stats(p["id"])
        print(f"{info['name']} ({info['downloads']:,} DL) - {info['description'][:60]}")