Skip to content

okovalyoff/vk-export

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

1 Commit
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

VK Dialog Exporter

Python License Status Platform

ΠŸΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ инструмСнт для экспорта Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ² Π’ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Π΅

Установка β€’ ИспользованиС β€’ Roadmap β€’ Π’ΠΊΠ»Π°Π΄


ВозмоТности

  • πŸ“„ Экспорт ΠΏΠΎΠ»Π½ΠΎΠΉ истории Π΄ΠΈΠ°Π»ΠΎΠ³Π° Π² тСкстовыС Ρ„Π°ΠΉΠ»Ρ‹
  • βœ‚οΈ АвтоматичСскоС Ρ€Π°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ Π½Π° части ΠΏΠΎ Π»ΠΈΠΌΠΈΡ‚Ρƒ символов (для Telegram)
  • πŸ“Ž Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ: Ρ„ΠΎΡ‚ΠΎ, Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹, стикСры, Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ
  • ⚑ ΠšΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ для ускорСния ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹Ρ… запусков
  • πŸ“… Π€ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ ΠΏΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρƒ Π΄Π°Ρ‚
  • πŸ“ ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ Π»ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ процСсса
  • πŸ” БСзопасноС Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠΊΠ΅Π½Π° Π² .env

Roadmap

🎯 v1.0 β€” Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»

  • Экспорт сообщСний Π² TXT
  • Π Π°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ ΠΏΠΎ Π»ΠΈΠΌΠΈΡ‚Ρƒ символов
  • Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ (photo, doc, sticker, animation)
  • ΠšΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ
  • Π€ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ ΠΏΠΎ Π΄Π°Ρ‚Π°ΠΌ
  • CLI интСрфСйс
  • ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ Ρ‡Π΅Ρ€Π΅Π· YAML
  • ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ окруТСния (.env)

πŸ”§ v1.1 β€” ΠšΠ°Ρ‡Π΅ΡΡ‚Π²ΠΎ ΠΊΠΎΠ΄Π°

  • Unit тСсты (pytest)
  • Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ тСсты
  • Code coverage > 80%
  • CI/CD pipeline (GitHub Actions)
  • Π›ΠΈΠ½Ρ‚Π΅Ρ€Ρ‹ (ruff, mypy)
  • pre-commit hooks

🐳 v1.2 β€” DevOps

  • Dockerfile
  • docker-compose.yml
  • Docker Hub публикация
  • Makefile для ΠΊΠΎΠΌΠ°Π½Π΄

πŸ“Š v1.3 β€” Аналитика

  • ГСнСрация HTML-ΠΎΡ‚Ρ‡Ρ‘Ρ‚ΠΎΠ²
  • Π“Ρ€Π°Ρ„ΠΈΠΊ активности ΠΏΠΎ дням/мСсяцам
  • Облако слов (wordcloud)
  • Π’ΠΎΠΏ слов ΠΈ эмодзи
  • Бтатистика ΠΏΠΎ влоТСниям
  • "ВСпловая ΠΊΠ°Ρ€Ρ‚Π°" пСрСписки

🌐 v2.0 β€” Web-интСрфСйс

  • FastAPI backend
  • Next.js frontend
  • Авторизация Ρ‡Π΅Ρ€Π΅Π· VK OAuth
  • Π’Ρ‹Π±ΠΎΡ€ Π΄ΠΈΠ°Π»ΠΎΠ³Π° ΠΈΠ· списка
  • ΠŸΡ€ΠΎΠ³Ρ€Π΅ΡΡ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ (WebSocket)
  • Π‘ΠΊΠ°Ρ‡ΠΈΠ²Π°Π½ΠΈΠ΅ Π°Ρ€Ρ…ΠΈΠ²Π°

πŸ“¦ v2.1 β€” Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ экспорта

  • HTML-экспорт с Π°Π²Π°Ρ‚Π°Ρ€Π°ΠΌΠΈ
  • JSON-экспорт
  • PDF-экспорт
  • ZIP-Π°Ρ€Ρ…ΠΈΠ² с ΠΌΠ΅Π΄ΠΈΠ°
  • Экспорт Π²ΠΈΠ΄Π΅ΠΎ/Π°ΡƒΠ΄ΠΈΠΎ

πŸ€– v2.2 β€” Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ

  • Telegram Bot
  • ΠŸΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ (cron)
  • УвСдомлСния ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ
  • PyPI ΠΏΠ°ΠΊΠ΅Ρ‚
  • API для сторонних ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ

🌍 v3.0 β€” Enterprise

  • ΠœΡƒΠ»ΡŒΡ‚ΠΈΡΠ·Ρ‹Ρ‡Π½ΠΎΡΡ‚ΡŒ (EN/RU)
  • ΠŸΠ°ΠΊΠ΅Ρ‚Π½Π°Ρ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²
  • Π¨ΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ экспорта
  • Π˜ΠΌΠΏΠΎΡ€Ρ‚ Π² Π΄Ρ€ΡƒΠ³ΠΈΠ΅ мСссСндТСры
  • Cloud-вСрсия

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

vk_exporter/
β”œβ”€β”€ main.py                 # Π’ΠΎΡ‡ΠΊΠ° Π²Ρ…ΠΎΠ΄Π°
β”œβ”€β”€ config.py               # Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ
β”œβ”€β”€ vk_client.py            # ΠšΠ»ΠΈΠ΅Π½Ρ‚ VK API
β”œβ”€β”€ config.yaml             # Π€Π°ΠΉΠ» ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ
β”œβ”€β”€ config.yaml.example     # ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ
β”œβ”€β”€ .env                    # ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ окруТСния (Ρ‚ΠΎΠΊΠ΅Π½)
β”œβ”€β”€ .env.example            # ΠŸΡ€ΠΈΠΌΠ΅Ρ€ .env
β”œβ”€β”€ .gitignore
β”œβ”€β”€ requirements.txt        # Зависимости
β”œβ”€β”€ README.md               # ДокумСнтация
β”œβ”€β”€ utils/
β”‚   β”œβ”€β”€ __init__.py
β”‚   β”œβ”€β”€ logger.py           # Π›ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅
β”‚   └── cache.py            # ΠšΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ
β”œβ”€β”€ exporters/
β”‚   β”œβ”€β”€ __init__.py
β”‚   β”œβ”€β”€ txt_exporter.py     # Экспорт Π² TXT
β”‚   └── attachments.py      # Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ
└── export/                 # Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ экспорта
    β”œβ”€β”€ dialog_001.txt
    β”œβ”€β”€ dialog_002.txt
    β”œβ”€β”€ attachments/
    β”‚   β”œβ”€β”€ 2024-01-01-120000.jpg
    β”‚   └── ...
    β”œβ”€β”€ .cache.json         # Кэш Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ
    └── export.log          # Π›ΠΎΠ³ экспорта

Установка

ВрСбования

  • Python 3.10+
  • Зависимости ΠΈΠ· requirements.txt

Π¨Π°Π³ΠΈ установки

  1. ΠšΠ»ΠΎΠ½ΠΈΡ€ΡƒΠΉΡ‚Π΅ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ
git clone <repository-url>
cd vk_exporter
  1. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅
python -m venv venv

# Windows
venv\Scripts\activate

# Linux/macOS
source venv/bin/activate
  1. УстановитС зависимости
pip install -r requirements.txt
  1. НастройтС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ окруТСния
cp .env.example .env

ΠžΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ .env:

VK_TOKEN=your_vk_access_token_here
VK_PEER_ID=123456789
  1. (ΠžΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ) НастройтС config.yaml
cp config.yaml.example config.yaml

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠΊΠ΅Π½Π° VK API

  1. ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π½Π° https://vk.com/dev
  2. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Standalone-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅
  3. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ access token с ΠΏΡ€Π°Π²Π°ΠΌΠΈ messages Ρ‡Π΅Ρ€Π΅Π· Implicit Flow:
https://oauth.vk.com/authorize?client_id=YOUR_APP_ID&display=page&redirect_uri=https://oauth.vk.com/blank.html&scope=messages&response_type=token&v=5.131
  1. ПослС Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ скопируйтС Ρ‚ΠΎΠΊΠ΅Π½ ΠΈΠ· URL Π² .env

ИспользованиС

Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ запуск

python main.py

Π€ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ ΠΏΠΎ Π΄Π°Ρ‚Π°ΠΌ

python main.py --from-date 2024-01-01 --to-date 2024-12-31

Экспорт Π±Π΅Π· Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ

python main.py --no-attachments

Π‘Π΅Π· использования кэша

python main.py --no-cache

Π£ΠΊΠ°Π·Π°Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°

python main.py --config /path/to/config.yaml

Π‘ΠΏΡ€Π°Π²ΠΊΠ°

python main.py --help

ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ окруТСния (.env)

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ ОписаниС ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ
VK_TOKEN Access token VK API βœ…
VK_PEER_ID ID ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈΠ»ΠΈ Π΄ΠΈΠ°Π»ΠΎΠ³Π° βœ…

config.yaml

export:
  out_dir: "export"              # ДирСктория для экспорта
  attachments_dir: "attachments" # ΠŸΠΎΠ΄Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡ для Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ
  txt_prefix: "dialog"           # ΠŸΡ€Π΅Ρ„ΠΈΠΊΡ ΠΈΠΌΡ‘Π½ Ρ„Π°ΠΉΠ»ΠΎΠ²

limits:
  telegram_txt_chars: 3800       # Π›ΠΈΠΌΠΈΡ‚ символов Π½Π° Ρ„Π°ΠΉΠ» (Telegram)

format:
  datetime: "%Y-%m-%d %H:%M:%S"  # Π€ΠΎΡ€ΠΌΠ°Ρ‚ Π΄Π°Ρ‚Ρ‹/Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ
  filename_mask: "%Y-%m-%d-%H%M%S" # Маска ΠΈΠΌΡ‘Π½ Ρ„Π°ΠΉΠ»ΠΎΠ² Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ

options:
  save_attachments: true         # Π‘ΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ влоТСния
  generate_txt: true             # Π“Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ TXT

ΠšΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ JSON-Ρ„Π°ΠΉΠ» .cache.json для отслСТивания ΡƒΠΆΠ΅ скачанных Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ:

  • Π₯ΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ URL для ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚ΠΎΠ²
  • АвтоматичСский пропуск ΡƒΠΆΠ΅ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ²
  • УскорСниС ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹Ρ… запусков экспорта

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ

Вип ОписаниС
photo Π€ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ (сохраняСтся ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€)
doc Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ (с ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ)
sticker Π‘Ρ‚ΠΈΠΊΠ΅Ρ€Ρ‹ (PNG)
animation GIF-Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ (MP4)
video Π’ΠΈΠ΄Π΅ΠΎ (Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ*)
audio Аудио (Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ*)

*Π’ΠΈΠ΄Π΅ΠΎ ΠΈ Π°ΡƒΠ΄ΠΈΠΎ ΠΏΡ€ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… API-Π²Ρ‹Π·ΠΎΠ²ΠΎΠ².

Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ

  • Π’ΠΎΠΊΠ΅Π½ VK API хранится Π² Ρ„Π°ΠΉΠ»Π΅ .env, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π² .gitignore
  • Никогда Π½Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚ΡŒΡ‚Π΅ Ρ„Π°ΠΉΠ» .env Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ
  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ .env.example ΠΊΠ°ΠΊ шаблон для Π½ΠΎΠ²Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ

Π’ΠΊΠ»Π°Π΄ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚

ΠŸΡ€ΠΈΠ²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ΡΡ Π»ΡŽΠ±Ρ‹Π΅ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ!

  1. Π€ΠΎΡ€ΠΊΠ½ΠΈΡ‚Π΅ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ
  2. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π²Π΅Ρ‚ΠΊΡƒ для Ρ„ΠΈΡ‡ΠΈ (git checkout -b feature/amazing-feature)
  3. ЗафиксируйтС измСнСния (git commit -m 'Add amazing feature')
  4. ΠžΡ‚ΠΏΡ€Π°Π²ΡŒΡ‚Π΅ Π²Π΅Ρ‚ΠΊΡƒ (git push origin feature/amazing-feature)
  5. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Pull Request

ЛицСнзия

MIT License


About

πŸ’¬ ΠŸΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ инструмСнт для экспорта Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ² Π’ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Π΅ с влоТСниями Π² TXT Ρ„Π°ΠΉΠ»Ρ‹.

Topics

Resources

Stars

Watchers

Forks

Contributors

Languages