Скрипты для выгрузки фото и видео из диалогов ВКонтакте, обработки (дедупликация + CLIP-классификация) и загрузки в Immich. Co-authored-by: Cursor <cursoragent@cursor.com>
86 lines
3.7 KiB
Python
86 lines
3.7 KiB
Python
"""
|
||
Конфигурация скрипта для выгрузки фото из диалогов ВКонтакте.
|
||
|
||
Как получить токен:
|
||
1. Перейди по ссылке в браузере:
|
||
https://oauth.vk.com/authorize?client_id=2685278&scope=messages,photos,offline&redirect_uri=https://oauth.vk.com/blank.html&display=page&response_type=token&v=5.199
|
||
2. Авторизуйся и разреши доступ
|
||
3. Скопируй access_token из адресной строки (значение между access_token= и &expires_in)
|
||
4. Вставь его ниже в переменную VK_TOKEN
|
||
"""
|
||
|
||
# Токен доступа VK API (обязательно заполнить)
|
||
VK_TOKEN: str = ""
|
||
|
||
# Папка для сохранения фото (относительный или абсолютный путь)
|
||
DOWNLOAD_DIR: str = "downloads"
|
||
|
||
# Папка для результатов обработки (дубликаты, мусор, review) — рядом с downloads
|
||
OUTPUT_DIR: str = "output"
|
||
|
||
# Файл прогресса для механизма resume
|
||
PROGRESS_FILE: str = "progress.json"
|
||
|
||
# Версия VK API
|
||
API_VERSION: str = "5.199"
|
||
|
||
# Минимум свободного места на диске (в МБ), при котором скрипт остановится
|
||
MIN_FREE_SPACE_MB: int = 500
|
||
|
||
# Задержка между скачиваниями файлов (секунды) — чтобы не перегружать сеть
|
||
DOWNLOAD_DELAY: float = 0.1
|
||
|
||
# Количество попыток при сетевых ошибках
|
||
MAX_RETRIES: int = 3
|
||
|
||
# Таймаут для скачивания одного фото (секунды)
|
||
DOWNLOAD_TIMEOUT: int = 30
|
||
|
||
# Количество параллельных потоков для скачивания фото
|
||
DOWNLOAD_WORKERS: int = 8
|
||
|
||
# ---------------------------------------------------------------------------
|
||
# Настройки обработки фото (process_photos.py)
|
||
# ---------------------------------------------------------------------------
|
||
|
||
# Файл прогресса обработки
|
||
PROCESS_PROGRESS_FILE: str = "process_progress.json"
|
||
|
||
# Файл лога перемещений (для отката)
|
||
ROLLBACK_LOG_FILE: str = "rollback_log.json"
|
||
|
||
# Размер хеша (hash_size x hash_size бит, 8 = 64 бита)
|
||
HASH_SIZE: int = 8
|
||
|
||
# Порог расстояния Хэмминга для near-дубликатов (0 = только точные, 8 = средний)
|
||
DEDUP_THRESHOLD: int = 8
|
||
|
||
# Потоки для параллельного хеширования
|
||
HASH_WORKERS: int = 8
|
||
|
||
# Размер батча для CLIP-классификации
|
||
CLIP_BATCH_SIZE: int = 16
|
||
|
||
# Минимальный порог уверенности CLIP (ниже → папка _review)
|
||
# Для CLIP ViT-B-32 cosine similarity обычно в диапазоне 0.12-0.35
|
||
CLIP_CONFIDENCE_MIN: float = 0.15
|
||
|
||
# ---------------------------------------------------------------------------
|
||
# Настройки скачивания видео (main_video.py)
|
||
# ---------------------------------------------------------------------------
|
||
|
||
# Папка для сохранения видео
|
||
VIDEO_DOWNLOAD_DIR: str = "downloads_video"
|
||
|
||
# Файл прогресса для видео
|
||
VIDEO_PROGRESS_FILE: str = "video_progress.json"
|
||
|
||
# Потоки скачивания (меньше чем для фото — видео тяжёлые)
|
||
VIDEO_DOWNLOAD_WORKERS: int = 4
|
||
|
||
# Таймаут скачивания одного видео (секунды, видео крупнее фото)
|
||
VIDEO_DOWNLOAD_TIMEOUT: int = 300
|
||
|
||
# Минимум свободного места для видео (МБ)
|
||
VIDEO_MIN_FREE_SPACE_MB: int = 2000
|