Skip to content

korshunov-olexiy/tg_news

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Telegram News Aggregator

Опис проекту

Telegram News Aggregator - це веб-додаток, який дозволяє збирати та відображати новини з обраних Telegram-каналів на єдиній веб-сторінці. Проект використовує FastAPI як веб-фреймворк, Uvicorn як ASGI-сервер та Jinja2 для рендерингу шаблонів.

Основні можливості:

  • Автоматичне збирання новин з налаштованих Telegram-каналів
  • Зберігання новин у SQLite базі даних
  • Завантаження та відображення медіа-файлів (зображення, відео, аудіо, документи)
  • Розумне керування дисковим простором (обмеження розміру завантажуваних файлів)
  • Автоматичне видалення застарілих новин
  • Відображення актуальних курсів валют (USD, EUR) та об'єднаний графік з динамікою їх змін

Встановлення

Вимоги

  • Python 3.7+
  • Доступ до Telegram API (api_id та api_hash)

Встановлення залежностей

Linux/MacOS

# Створення віртуального середовища
python3 -m venv venv
source venv/bin/activate

# Встановлення залежностей
pip install fastapi uvicorn jinja2 pytz requests bs4 telethon

Windows

# Створення віртуального середовища
python -m venv venv
venv\Scripts\activate

# Встановлення залежностей
pip install fastapi uvicorn jinja2 pytz requests bs4 telethon

Налаштування

Конфігураційний файл config.json

Створіть файл config.json у кореневій директорії проекту з наступною структурою:

{
  "api_id": "YOUR_TELEGRAM_API_ID",
  "api_hash": "YOUR_TELEGRAM_API_HASH",
  "phone_number": "YOUR_PHONE_NUMBER",
  "MAX_FILE_SIZE_MB": 10,
  "days_to_keep": 1,
  "news_update_in_minutes": 15,
  "debug": false,
  "channels": {
    "channel1": "Опис першого каналу",
    "channel2": "Опис другого каналу",
    "channel3": "Опис третього каналу"
  }
}

Параметри конфігурації:

  • api_id - Ідентифікатор додатку Telegram (отримується на https://my.telegram.org)
  • api_hash - Хеш API Telegram (отримується на https://my.telegram.org)
  • phone_number - Номер телефону, пов'язаний з вашим акаунтом Telegram
  • MAX_FILE_SIZE_MB - Максимальний розмір медіа-файлів для автоматичного завантаження (в МБ)
  • days_to_keep - Кількість днів, за які зберігаються новини
  • news_update_in_minutes - Інтервал оновлення новин (у хвилинах)
  • channels - Словник каналів у форматі "ідентифікатор_каналу": "опис_каналу"

Запуск програми

Режим розробки (з автоматичним перезавантаженням)

uvicorn app:app --reload --host <ip_address> --port 8000

Режим production

uvicorn app:app --host <ip_address> --port 8000

Налаштування системної служби Linux

Якщо у вас Ubuntu, то створіть файл /etc/systemd/system/tg_news.service, в якому пропишіть наступний код (підкорегуйте шляхи до проекту та environment):

[Unit]
Description=Telegram News FastAPI Service
After=network.target

[Service]
Type=simple
User=root
WorkingDirectory=/root/tg_news
ExecStart=/root/tg_news/env/bin/python main.py
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

Використання

Після запуску програми відкрийте веб-браузер і перейдіть за адресою http://<ip_address>:8000. Ви побачите стрічку новин з налаштованих каналів.

  • У боковому меню, зверху вниз відображаються - кнопки "Очистити" (очистити всі канали від новин) та "Налаштування" (перехід на сторінку налаштувань), курси валют, графік з динамікою курсів валют та назви каналів
  • Медіа-файли, розмір яких менший за MAX_FILE_SIZE_MB, відображаються автоматично у вигляді preview
  • Для великих файлів відображається кнопка завантаження
  • Після завантаження великого файлу з'являється preview та кнопка для його видалення

Структура проекту

  • main.py - для запуску проекту через службу systemd
  • app.py - Основний файл додатку з FastAPI маршрутами
  • config.json - Конфігураційний файл
  • news.db - SQLite база даних з новинами
  • templates/ - Директорія з Jinja2 шаблонами
  • static/ - Директорія для статичних файлів (CSS, JavaScript)
  • media/ - Директорія для завантажених медіа-файлів
  • modules/ - Директорія модулів програми

About

Збирач новин з telegram каналів із зручним інтерфейсом

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published