# 🚀 Crypto Monitor ULTIMATE - نسخه توسعه‌یافته یک سیستم مانیتورینگ و تحلیل کریپتوکارنسی قدرتمند با پشتیبانی از **100+ ارائه‌دهنده API رایگان** و سیستم پیشرفته **Provider Pool Management**. ## ✨ ویژگی‌های کلیدی ### 🎯 مدیریت ارائه‌دهندگان (Provider Management) - ✅ **100+ ارائه‌دهنده API رایگان** از دسته‌بندی‌های مختلف - 🔄 **سیستم Pool با استراتژی‌های چرخش مختلف** - Round Robin - Priority-based - Weighted Random - Least Used - Fastest Response - 🛡️ **Circuit Breaker** برای جلوگیری از درخواست‌های مکرر به سرویس‌های خراب - ⚡ **Rate Limiting هوشمند** برای هر ارائه‌دهنده - 📊 **آمارگیری دقیق** از عملکرد هر ارائه‌دهنده - 🔍 **Health Check خودکار** و دوره‌ای ### 📈 دسته‌بندی ارائه‌دهندگان #### 💰 بازار و قیمت‌گذاری (Market Data) - CoinGecko, CoinPaprika, CoinCap - CryptoCompare, Nomics, Messari - LiveCoinWatch, Cryptorank, CoinLore, CoinCodex #### 🔗 اکسپلورر‌های بلاکچین (Blockchain Explorers) - Etherscan, BscScan, PolygonScan - Arbiscan, Optimistic Etherscan - Blockchair, Blockchain.info, Ethplorer #### 🏦 دیفای (DeFi Protocols) - DefiLlama, Aave, Compound - Uniswap V3, PancakeSwap, SushiSwap - Curve Finance, 1inch, Yearn Finance #### 🖼️ NFT - OpenSea, Rarible, Reservoir, NFTPort #### 📰 اخبار و شبکه‌های اجتماعی (News & Social) - CryptoPanic, NewsAPI - CoinDesk RSS, Cointelegraph RSS, Bitcoinist RSS - Reddit Crypto, LunarCrush #### 💭 تحلیل احساسات (Sentiment Analysis) - Alternative.me (Fear & Greed Index) - Santiment, LunarCrush #### 📊 تحلیل و آنالیتیکس (Analytics) - Glassnode, IntoTheBlock - Coin Metrics, Kaiko #### 💱 صرافی‌ها (Exchanges) - Binance, Kraken, Coinbase - Bitfinex, Huobi, KuCoin - OKX, Gate.io, Bybit #### 🤗 Hugging Face Models - مدل‌های تحلیل احساسات (Sentiment Analysis) - مدل‌های دسته‌بندی متن (Text Classification) - مدل‌های Zero-Shot Classification ## 🏗️ معماری سیستم ``` ┌─────────────────────────────────────────────────┐ │ Unified Dashboard (HTML/JS) │ │ 📊 نمایش داده‌ها | 🔄 مدیریت Pools | 📈 آمار │ └────────────────────┬────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────┐ │ FastAPI Server (Python) │ │ 🌐 REST API | WebSocket | Background Tasks │ └────────────────────┬────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────┐ │ Provider Manager (Core Logic) │ │ 🔄 Rotation | 🛡️ Circuit Breaker | 📊 Stats │ └────────────────────┬────────────────────────────┘ │ ┌───────────────┼───────────────┐ ▼ ▼ ▼ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ Pool 1 │ │ Pool 2 │ │ Pool N │ │ Market │ │ DeFi │ │ NFT │ └────┬────┘ └────┬────┘ └────┬────┘ │ │ │ └──────┬───────┴──────┬───────┘ ▼ ▼ ┌──────────────┐ ┌──────────────┐ │ Provider 1 │ │ Provider N │ │ (CoinGecko) │ │ (Binance) │ └──────────────┘ └──────────────┘ ``` ## 📦 نصب و راه‌اندازی ### پیش‌نیازها ```bash Python 3.8+ pip ``` ### نصب وابستگی‌ها ```bash pip install fastapi uvicorn aiohttp pydantic ``` ### اجرای سرور ```bash # روش 1: مستقیم python api_server_extended.py # روش 2: با uvicorn uvicorn api_server_extended:app --reload --host 0.0.0.0 --port 8000 ``` ### دسترسی به داشبورد ``` http://localhost:8000 ``` ## 🔧 استفاده از API ### 🌐 Endpoints اصلی #### **وضعیت سیستم** ```http GET /health GET /api/status GET /api/stats ``` #### **مدیریت ارائه‌دهندگان** ```http GET /api/providers # لیست همه GET /api/providers/{provider_id} # جزئیات یک ارائه‌دهنده POST /api/providers/{provider_id}/health-check GET /api/providers/category/{category} ``` #### **مدیریت Pool‌ها** ```http GET /api/pools # لیست همه Pool‌ها GET /api/pools/{pool_id} # جزئیات یک Pool POST /api/pools # ایجاد Pool جدید DELETE /api/pools/{pool_id} # حذف Pool POST /api/pools/{pool_id}/members # افزودن عضو DELETE /api/pools/{pool_id}/members/{provider_id} POST /api/pools/{pool_id}/rotate # چرخش دستی GET /api/pools/history # تاریخچه چرخش‌ها ``` ### 📝 نمونه‌های استفاده #### ایجاد Pool جدید ```bash curl -X POST http://localhost:8000/api/pools \ -H "Content-Type: application/json" \ -d '{ "name": "My Market Pool", "category": "market_data", "rotation_strategy": "weighted", "description": "Pool for market data providers" }' ``` #### افزودن ارائه‌دهنده به Pool ```bash curl -X POST http://localhost:8000/api/pools/my_market_pool/members \ -H "Content-Type: application/json" \ -d '{ "provider_id": "coingecko", "priority": 10, "weight": 100 }' ``` #### چرخش Pool ```bash curl -X POST http://localhost:8000/api/pools/my_market_pool/rotate \ -H "Content-Type: application/json" \ -d '{"reason": "manual rotation"}' ``` ## 🎮 استفاده از Python API ```python import asyncio from provider_manager import ProviderManager async def main(): # ایجاد مدیر manager = ProviderManager() # بررسی سلامت همه await manager.health_check_all() # دریافت ارائه‌دهنده از Pool provider = manager.get_next_from_pool("primary_market_data_pool") if provider: print(f"Selected: {provider.name}") print(f"Success Rate: {provider.success_rate}%") # آمار کلی stats = manager.get_all_stats() print(f"Total Providers: {stats['summary']['total_providers']}") print(f"Online: {stats['summary']['online']}") # صادرکردن آمار manager.export_stats("my_stats.json") await manager.close_session() asyncio.run(main()) ``` ## 📊 استراتژی‌های چرخش Pool ### 1️⃣ Round Robin هر بار به ترتیب یک ارائه‌دهنده انتخاب می‌شود. ```python rotation_strategy = "round_robin" ``` ### 2️⃣ Priority-Based ارائه‌دهنده با بالاترین اولویت انتخاب می‌شود. ```python rotation_strategy = "priority" # Provider with priority=10 selected over priority=5 ``` ### 3️⃣ Weighted Random انتخاب تصادفی با وزن‌دهی. ```python rotation_strategy = "weighted" # Provider with weight=100 has 2x chance vs weight=50 ``` ### 4️⃣ Least Used ارائه‌دهنده‌ای که کمتر استفاده شده انتخاب می‌شود. ```python rotation_strategy = "least_used" ``` ### 5️⃣ Fastest Response ارائه‌دهنده با سریع‌ترین زمان پاسخ انتخاب می‌شود. ```python rotation_strategy = "fastest_response" ``` ## 🛡️ Circuit Breaker سیستم Circuit Breaker به‌طور خودکار ارائه‌دهندگان مشکل‌دار را غیرفعال می‌کند: - **آستانه**: 5 خطای متوالی - **مدت زمان قطع**: 60 ثانیه - **بازیابی خودکار**: پس از اتمام timeout ```python # Circuit Breaker خودکار در Provider if provider.consecutive_failures >= 5: provider.circuit_breaker_open = True provider.circuit_breaker_open_until = time.time() + 60 ``` ## 📈 مانیتورینگ و لاگ ### بررسی سلامت دوره‌ای سیستم هر 30 ثانیه به‌طور خودکار سلامت همه ارائه‌دهندگان را بررسی می‌کند. ### آمارگیری - **تعداد کل درخواست‌ها** - **درخواست‌های موفق/ناموفق** - **نرخ موفقیت (Success Rate)** - **میانگین زمان پاسخ** - **تعداد چرخش‌های Pool** ### صادرکردن آمار ```python manager.export_stats("stats_export.json") ``` ## 🔐 مدیریت API Key برای ارائه‌دهندگانی که نیاز به API Key دارند: 1. فایل `.env` بسازید: ```env # Market Data COINMARKETCAP_API_KEY=your_key_here CRYPTOCOMPARE_API_KEY=your_key_here # Blockchain Data ALCHEMY_API_KEY=your_key_here INFURA_API_KEY=your_key_here # News NEWSAPI_KEY=your_key_here # Analytics GLASSNODE_API_KEY=your_key_here ``` 2. در کد خود از `python-dotenv` استفاده کنید: ```python from dotenv import load_dotenv import os load_dotenv() api_key = os.getenv("COINMARKETCAP_API_KEY") ``` ## 🎨 داشبورد وب داشبورد شامل تب‌های زیر است: ### 📊 Market - آمار کلی بازار - لیست کریپتوکارنسی‌های برتر - نمودارها (Dominance, Fear & Greed) - ترندینگ و DeFi ### 📡 API Monitor - وضعیت همه ارائه‌دهندگان - زمان پاسخ - آخرین بررسی سلامت - تحلیل احساسات (HuggingFace) ### ⚡ Advanced - لیست API‌ها - اکسپورت JSON/CSV - پشتیبان‌گیری - پاک‌سازی Cache - لاگ فعالیت‌ها ### ⚙️ Admin - افزودن API جدید - تنظیمات - آمار کلی ### 🤗 HuggingFace - وضعیت سلامت - لیست مدل‌ها و دیتاست‌ها - جستجو در Registry - تحلیل احساسات آنلاین ### 🔄 Pools - مدیریت Pool‌ها - افزودن/حذف اعضا - چرخش دستی - تاریخچه چرخش‌ها - آمار تفصیلی ## 🧪 تست ```bash # تست Provider Manager python provider_manager.py # تست سرور API python api_server_extended.py ``` ## 📄 فایل‌های پروژه ``` crypto-monitor-hf-full-fixed-v4-realapis/ ├── unified_dashboard.html # داشبورد وب اصلی ├── providers_config_extended.json # تنظیمات 100+ ارائه‌دهنده ├── provider_manager.py # هسته مدیریت Provider & Pool ├── api_server_extended.py # سرور FastAPI ├── README_FA.md # راهنمای فارسی (این فایل) └── .env.example # نمونه متغیرهای محیطی ``` ## 🚀 ویژگی‌های آینده - [ ] پشتیبانی از WebSocket برای داده‌های Realtime - [ ] سیستم صف (Queue) برای درخواست‌های سنگین - [ ] Cache با Redis - [ ] Dashboard پیشرفته با React/Vue - [ ] Alerting System (Telegram/Email) - [ ] Machine Learning برای پیش‌بینی بهترین Provider - [ ] Multi-tenant Support - [ ] Docker & Kubernetes Support ## 🤝 مشارکت برای مشارکت: 1. Fork کنید 2. یک branch جدید بسازید: `git checkout -b feature/amazing-feature` 3. تغییرات را commit کنید: `git commit -m 'Add amazing feature'` 4. Push کنید: `git push origin feature/amazing-feature` 5. Pull Request ایجاد کنید ## 📝 لایسنس این پروژه تحت لایسنس MIT منتشر شده است. ## 💬 پشتیبانی در صورت بروز مشکل یا سوال: - Issue در GitHub باز کنید - به بخش Discussions مراجعه کنید ## 🙏 تشکر از تمام ارائه‌دهندگان API رایگان که این پروژه را ممکن کردند: - CoinGecko, CoinPaprika, CoinCap - Etherscan, BscScan و تمام Block Explorers - DefiLlama, OpenSea و... - Hugging Face برای مدل‌های ML --- **ساخته شده با ❤️ برای جامعه کریپتو**