{"id":34942337,"url":"https://github.com/an0nx/telegram-api-parser","last_synced_at":"2026-04-16T04:01:58.352Z","repository":{"id":315416822,"uuid":"1059397617","full_name":"An0nX/Telegram-API-Parser","owner":"An0nX","description":"Parser that gets CPM, CPV and ER metrics for N days selected in the parse request","archived":false,"fork":false,"pushed_at":"2025-09-18T13:18:27.000Z","size":79,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-18T14:34:25.431Z","etag":null,"topics":["celery","django","docker","rest-api","telegram-parser"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/An0nX.png","metadata":{"files":{"readme":"README.MD","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-18T11:47:01.000Z","updated_at":"2025-09-18T13:18:30.000Z","dependencies_parsed_at":"2025-09-18T14:34:51.475Z","dependency_job_id":"138d9167-5e74-4cd7-b149-26627e7ab223","html_url":"https://github.com/An0nX/Telegram-API-Parser","commit_stats":null,"previous_names":["an0nx/telegram-api-parser"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/An0nX/Telegram-API-Parser","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/An0nX%2FTelegram-API-Parser","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/An0nX%2FTelegram-API-Parser/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/An0nX%2FTelegram-API-Parser/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/An0nX%2FTelegram-API-Parser/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/An0nX","download_url":"https://codeload.github.com/An0nX/Telegram-API-Parser/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/An0nX%2FTelegram-API-Parser/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31870516,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-15T15:24:51.572Z","status":"online","status_checked_at":"2026-04-16T02:00:06.042Z","response_time":69,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["celery","django","docker","rest-api","telegram-parser"],"created_at":"2025-12-26T19:24:53.697Z","updated_at":"2026-04-16T04:01:58.337Z","avatar_url":"https://github.com/An0nX.png","language":"Python","readme":"# Анализатор Telegram-каналов | Telegram Channel Analyzer\n\n![Python](https://img.shields.io/badge/Python-3.10+-blue?style=for-the-badge\u0026logo=python\u0026logoColor=white)\n![Django](https://img.shields.io/badge/Django-4.2+-092E20?style=for-the-badge\u0026logo=django\u0026logoColor=white)\n![Docker](https://img.shields.io/badge/Docker-20+-2496ED?style=for-the-badge\u0026logo=docker\u0026logoColor=white)\n[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg?style=for-the-badge)](https://www.gnu.org/licenses/gpl-3.0)\n[![Docker Pulls](https://img.shields.io/docker/pulls/whn0thacked/telegram-api-parser?style=for-the-badge\u0026logo=docker\u0026logoColor=white)](https://hub.docker.com/r/whn0thacked/telegram-api-parser)\n\nВеб-сервис с REST API для асинхронного сбора и анализа статистики публичных Telegram-каналов. Он использует **Telethon** для взаимодействия с Telegram API и **Celery** для фоновой обработки задач, что позволяет запускать длительные анализы без блокировки основного процесса.\n\n## 🚀 Основные возможности\n\n*   **Асинхронный анализ:** Задачи по сбору данных выполняются в фоновом режиме, не заставляя клиента ждать.\n*   **REST API:** Удобный интерфейс для интеграции с другими сервисами или фронтенд-приложениями.\n*   **Расчет ключевых метрик:** Автоматически вычисляет ER (Engagement Rate), CPV (Cost Per View), CPM (Cost Per Mille), средние и общие показатели просмотров/реакций.\n*   **Гибкая настройка:** Возможность задавать период анализа (в днях) и стоимость поста для расчета метрик.\n*   **Простое развертывание:** Проект полностью контейнеризирован и доступен как готовый образ на Docker Hub.\n\n## 📦 Установка и запуск\n\nВыберите один из двух способов в зависимости от вашей цели.\n\n---\n\n### Способ 1: Быстрый запуск из Docker Hub\n\nЭтот способ идеален для быстрого развертывания и использования сервиса без необходимости работать с исходным кодом.\n\n#### Шаг 1: Создайте папку для проекта и файлы конфигурации\nСоздайте пустую папку, где будут храниться ваши настройки и данные.\n```bash\nmkdir my-telegram-parser \u0026\u0026 cd my-telegram-parser\n```\n\n#### Шаг 2: Создайте файл `docker-compose.yml`\nСоздайте в этой папке файл `docker-compose.yml` и вставьте в него следующее содержимое. Этот файл настроен на использование готового образа из Docker Hub.\n\n```yaml\n# docker-compose.yml\nservices:\n  db:\n    image: postgres:13\n    volumes: [\"postgres_data:/var/lib/postgresql/data/\"]\n    environment: [\"POSTGRES_USER=${POSTGRES_USER}\",\"POSTGRES_PASSWORD=${POSTGRES_PASSWORD}\",\"POSTGRES_DB=${POSTGRES_DB}\"]\n    ports: [\"5432:5432\"]\n  redis:\n    image: redis:6.2-alpine\n    ports: [\"6379:6379\"]\n  app:\n    image: whn0thacked/telegram-api-parser:latest\n    command: daphne -b 0.0.0.0 -p 8000 project.asgi:application\n    volumes: [\"telegram_session:/app/session/\"]\n    ports: [\"8000:8000\"]\n    env_file: [\".env\"]\n    depends_on: [\"db\", \"redis\"]\n  worker:\n    image: whn0thacked/telegram-api-parser:latest\n    command: celery -A project.celery_app worker -l info\n    volumes: [\"telegram_session:/app/session/\"]\n    env_file: [\".env\"]\n    depends_on: [\"redis\", \"db\"]\nvolumes:\n  postgres_data:\n  telegram_session:\n  static_volume:\n```\n\n#### Шаг 3: Создайте файл `.env`\nРядом создайте файл `.env`. **Обязательно** заполните `SECRET_KEY`, `TELEGRAM_API_ID` и `TELEGRAM_API_HASH`.\nУникальный `SECRET_KEY` можно сгенерировать, например, [здесь](https://djecrety.ir/).\n\n```ini\n# .env\n# Django Settings\nSECRET_KEY=ВАШ_СЕКРЕТНЫЙ_КЛЮЧ_DJANGO\nDEBUG=False\nALLOWED_HOSTS=localhost,127.0.0.1\n\n# PostgreSQL Settings\nPOSTGRES_DB=telegram_parser_db\nPOSTGRES_USER=user\nPOSTGRES_PASSWORD=password\nDATABASE_URL=postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db:5432/${POSTGRES_DB}\n\n# Redis\nREDIS_URL=redis://redis:6379/0\n\n# Telegram API Credentials (https://my.telegram.org)\nTELEGRAM_API_ID=ВАШ_API_ID\nTELEGRAM_API_HASH=ВАШ_API_HASH\nTELEGRAM_SESSION_FILE=/app/session/telegram_session\nTELEGRAM_SYSTEM_VERSION=4.16.30-vxCUSTOM\n```\n\n#### Шаг 4: Создайте сессию Telegram\nЭта команда скачает образ и запустит интерактивный процесс авторизации. **Выполняется один раз.**\n```bash\ndocker compose run --rm -it app python manage.py createsession\n```\nВведите номер телефона, код из Telegram и пароль 2FA (если есть).\n\n#### Шаг 5: Запустите сервисы\n```bash\ndocker compose up -d\n```\n\n#### Шаг 6: Примените миграции\n```bash\ndocker compose exec app python manage.py migrate\n```\n\n#### Шаг 7: Сбор статических файлов\n**Важно:** Этот шаг необходим для корректной работы веб-интерфейса API.\n```bash\ndocker compose exec app python manage.py collectstatic --no-input\n```\n\n#### Шаг 8: Перезапустите веб-сервер\n```bash\ndocker compose restart app\n```\n\n🎉 **Готово!** Сервис работает и доступен по адресу `http://localhost:8000`.\n\n---\n\n### Способ 2: Установка для разработки (сборка из исходников)\n\nЭтот способ предназначен для разработчиков, которые хотят вносить изменения в исходный код.\n\n#### Шаг 1: Клонируйте репозиторий\n```bash\ngit clone https://github.com/your-username/Telegram-API-Parser.git\ncd Telegram-API-Parser\n```\n\n#### Шаг 2: Настройте окружение\nСкопируйте пример файла и заполните его своими данными (`SECRET_KEY`, `TELEGRAM_API_ID` и `TELEGRAM_API_HASH`).\n```bash\ncp .env.example .env\n```\n\n#### Шаг 3: Создайте сессию Telegram\nКоманда автоматически соберет образ и запустит процесс авторизации.\n```bash\ndocker compose run --rm -it app python manage.py createsession\n```\n\n#### Шаг 4: Соберите и запустите сервисы\nФайл `docker-compose.yml` в репозитории уже настроен на сборку.\n```bash\ndocker compose up --build -d\n```\n\n#### Шаг 5: Примените миграции\n```bash\ndocker compose exec app python manage.py migrate\n```\n🎉 **Готово!** Теперь вы можете изменять код, и изменения будут сразу применяться внутри контейнера.\n\n---\n\n## 📖 Использование API\n\n### 1. Запуск анализа канала\n\nОтправьте `POST` запрос для создания новой задачи анализа. Задача будет добавлена в очередь и обработана фоновым воркером.\n\n*   **URL:** `http://localhost:8000/api/analyzer/analyze/`\n*   **Метод:** `POST`\n*   **Тело запроса (JSON):**\n\n    ```json\n    {\n        \"channel_username\": \"durov\",\n        \"days_to_analyze\": 30,\n        \"price\": 50000.0\n    }\n    ```\n    *   `channel_username` (string, required): Юзернейм канала (без `@`).\n    *   `days_to_analyze` (integer, optional, default: 30): Количество последних дней для анализа.\n    *   `price` (float, optional, default: 1000.0): Стоимость поста для расчета CPV и CPM.\n\n*   **Успешный ответ (202 Accepted):**\n    Сервер немедленно вернет ID созданной задачи.\n    ```json\n    {\n        \"task_id\": \"a1b2c3d4-e5f6-7890-1234-567890abcdef\"\n    }\n    ```\n\n### 2. Проверка статуса и получение результата\n\nИспользуйте `task_id`, полученный на предыдущем шаге, чтобы отслеживать статус задачи и получить результат.\n\n*   **URL:** `http://localhost:8000/api/analyzer/tasks/{task_id}/`\n*   **Метод:** `GET`\n\n*   **Пример ответа (задача в процессе):**\n    ```json\n    {\n        \"task_id\": \"a1b2c3d4-e5f6-7890-1234-567890abcdef\",\n        \"status\": \"PROGRESS\",\n        \"channel_username\": \"durov\",\n        \"days_to_analyze\": 30,\n        \"price\": 50000.0,\n        \"result\": null,\n        \"error_message\": null,\n        \"created_at\": \"2023-10-27T10:00:00Z\",\n        \"updated_at\": \"2023-10-27T10:01:00Z\"\n    }\n    ```\n\n*   **Пример ответа (успешное завершение):**\n    ```json\n    {\n        \"task_id\": \"a1b2c3d4-e5f6-7890-1234-567890abcdef\",\n        \"status\": \"SUCCESS\",\n        \"result\": {\n            \"channel_info\": {\n                \"username\": \"durov\",\n                \"subscribers\": 1784967,\n                \"posts_analyzed\": 15,\n                \"period_days\": 30,\n                \"price_used\": 50000.0\n            },\n            \"calculated_metrics\": {\n                \"avg_views\": 685331,\n                \"avg_reactions\": 39501.7,\n                \"total_views\": 10279965,\n                \"total_reactions\": 592525,\n                \"er_percent\": 2.21,\n                \"cpv\": 0.07,\n                \"cpm\": 72.96\n            }\n        },\n        \"error_message\": null,\n        \"created_at\": \"2023-10-27T10:00:00Z\",\n        \"updated_at\": \"2023-10-27T10:02:15Z\"\n    }\n    ```\n\n## 📜 Лицензия\n\nЭтот проект распространяется под лицензией **GNU General Public License v3.0 (GPLv3)**. Подробности смотрите в файле `LICENSE`.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fan0nx%2Ftelegram-api-parser","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fan0nx%2Ftelegram-api-parser","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fan0nx%2Ftelegram-api-parser/lists"}