feat(ui): массовые операции, вкладки и улучшение UX
This commit is contained in:
4
.gitignore
vendored
4
.gitignore
vendored
@@ -1,3 +1,3 @@
|
|||||||
/.venv/
|
/.venv/
|
||||||
/.venv1/
|
/setup.py
|
||||||
/.venv3/
|
/build_cx/
|
||||||
|
|||||||
18
LICENSE
Normal file
18
LICENSE
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2025 Aleksandr Denisov
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
|
||||||
|
associated documentation files (the "Software"), to deal in the Software without restriction, including
|
||||||
|
without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the
|
||||||
|
following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all copies or substantial
|
||||||
|
portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
|
||||||
|
LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO
|
||||||
|
EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||||
|
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
|
||||||
|
USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
94
README.md
Normal file
94
README.md
Normal file
@@ -0,0 +1,94 @@
|
|||||||
|
# Anabasis VK Chat Manager
|
||||||
|
|
||||||
|
## Описание проекта
|
||||||
|
|
||||||
|
**Anabasis VK Chat Manager** — это десктопное приложение на Python с графическим интерфейсом, разработанное для упрощения управления пользователями в чатах ВКонтакте. Оно позволяет авторизоваться через VK OAuth, просматривать список своих чатов, а также исключать или приглашать пользователей в выбранные чаты.
|
||||||
|
|
||||||
|
Приложение спроектировано для минимизации ручных операций и повышения удобства управления групповыми беседами VK.
|
||||||
|
|
||||||
|
## Возможности
|
||||||
|
|
||||||
|
* **Авторизация через VK OAuth:** Безопасный процесс входа через официальный VK API.
|
||||||
|
* **Сохранение сессии:** Поддержка сохранения куки-файлов браузера для длительной авторизации в `QWebEngineView`.
|
||||||
|
* **Управление токенами:** Автоматическое сохранение и загрузка VK Access Token для удобства использования.
|
||||||
|
* **Список чатов:** Загрузка и отображение списка доступных чатов пользователя.
|
||||||
|
* **Выбор чатов:** Возможность выбора одного или нескольких чатов для выполнения операций.
|
||||||
|
* **Автоматическое определение ID пользователя:** Получение ID пользователя VK из различных форматов ссылок (например, `vk.com/id123`, `vk.com/durov`).
|
||||||
|
* **Исключение пользователей:** Удаление пользователя из выбранных чатов.
|
||||||
|
* **Приглашение пользователей:** Добавление пользователя в выбранные чаты.
|
||||||
|
* **Визуальный таймер токена:** Отображение оставшегося времени действия Access Token.
|
||||||
|
* **Информативные сообщения:** Детальные статусы операций и сообщения об ошибках.
|
||||||
|
* **Обработка ошибок:** Улучшенная обработка ошибок VK API, включая смену IP-адреса.
|
||||||
|
|
||||||
|
## Установка
|
||||||
|
|
||||||
|
### Готовый билд
|
||||||
|
|
||||||
|
Скачайте последнюю доступную версию из релизов и распакуйте архив
|
||||||
|
|
||||||
|
### Ручная установка
|
||||||
|
Для запуска приложения вам потребуется Python 3 и библиотеки `PySide6` и `vk_api`.
|
||||||
|
|
||||||
|
1. **Клонируйте репозиторий**
|
||||||
|
|
||||||
|
2. **Создайте и активируйте виртуальное окружение (рекомендуется):**
|
||||||
|
```bash
|
||||||
|
python -m venv venv
|
||||||
|
# Для Windows:
|
||||||
|
.\venv\Scripts\activate
|
||||||
|
# Для macOS/Linux:
|
||||||
|
source venv/bin/activate
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **Установите зависимости:**
|
||||||
|
```bash
|
||||||
|
pip install PySide6 vk_api
|
||||||
|
```
|
||||||
|
|
||||||
|
## Использование
|
||||||
|
|
||||||
|
1. **Запустите приложение:**
|
||||||
|
* *Готовый билд:*
|
||||||
|
* Запустите **AnabasisHRChatManager.exe**
|
||||||
|
* *Ручная установка:*
|
||||||
|
* ```bash
|
||||||
|
python main.py
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Авторизация:**
|
||||||
|
* Нажмите кнопку "Авторизоваться через VK".
|
||||||
|
* В открывшемся окне браузера войдите в свой аккаунт ВКонтакте.
|
||||||
|
* Разрешите доступ приложению, если потребуется.
|
||||||
|
* После успешной авторизации окно закроется, и токен доступа будет сохранен.
|
||||||
|
|
||||||
|
3. **Выбор чатов:**
|
||||||
|
* После авторизации приложение автоматически загрузит список ваших чатов.
|
||||||
|
* Отметьте галочками те чаты, с которыми хотите работать. Используйте кнопки "Выбрать все" / "Снять выбор со всех" для удобства.
|
||||||
|
* Кнопка "Обновить чаты" позволяет перезагрузить список чатов.
|
||||||
|
|
||||||
|
4. **Управление пользователями:**
|
||||||
|
* В поле "Введите или вставьте ссылку на страницу VK" вставьте ссылку на страницу пользователя ВКонтакте (например, `vk.com/id123` или `vk.com/durov`). Приложение автоматически определит ID пользователя.
|
||||||
|
* Нажмите кнопку "ИСКЛЮЧИТЬ ПОЛЬЗОВАТЕЛЯ" для удаления пользователя из выбранных чатов.
|
||||||
|
* Нажмите кнопку "ПРИГЛАСИТЬ ПОЛЬЗОВАТЕЛЯ" для добавления пользователя в выбранные чаты.
|
||||||
|
* Опция "Показать 250 последних сообщений при добавлении" позволяет управлять видимостью истории сообщений для нового участника (Примечание: VK API может игнорировать этот параметр для `messages.addChatUser`).
|
||||||
|
|
||||||
|
## Структура данных и конфигурация
|
||||||
|
|
||||||
|
Приложение хранит данные в директории, специфичной для данных приложения, что соответствует рекомендациям операционных систем.
|
||||||
|
|
||||||
|
* **`token.json`**: Файл для сохранения VK Access Token. Находится в `[AppDataLocation]/AnabasisVKChatManager/token.json`.
|
||||||
|
* **`web_engine_cache/`**: Директория для хранения куки-файлов и кэша `QWebEngineProfile`, обеспечивающая сохранение сессии внутри встроенного браузера. Находится в `[AppDataLocation]/AnabasisVKChatManager/web_engine_cache/`.
|
||||||
|
|
||||||
|
`[AppDataLocation]` соответствует:
|
||||||
|
* Windows: `%APPDATA%` (например, `C:\Users\YourUser\AppData\Roaming`)
|
||||||
|
* macOS: `~/Library/Application Support`
|
||||||
|
* Linux: `~/.local/share`
|
||||||
|
|
||||||
|
## Известные проблемы / Ограничения
|
||||||
|
|
||||||
|
* Параметр `visible_messages_count` для `messages.addChatUser` может быть проигнорирован VK API согласно официальной документации. Приложение уведомит вас об этом при попытке использования.
|
||||||
|
* При смене IP-адреса, токен авторизации VK может стать недействительным, потребуется повторная авторизация. Приложение автоматически предложит её.
|
||||||
|
|
||||||
|
## Лицензия
|
||||||
|
|
||||||
|
Этот проект распространяется под лицензией MIT.
|
||||||
76
setup.py
Normal file
76
setup.py
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
# setup.py
|
||||||
|
import sys
|
||||||
|
import os
|
||||||
|
from cx_Freeze import setup, Executable
|
||||||
|
|
||||||
|
# Определите имя вашего основного скрипта
|
||||||
|
main_script = "main.py" # Замените на имя вашего основного Python-файла
|
||||||
|
|
||||||
|
# Определите имя исполняемого файла
|
||||||
|
exe_name = "AnabasisHRChatManager" # Имя вашего .exe файла
|
||||||
|
|
||||||
|
# Определите базовый тип приложения:
|
||||||
|
# - None: Для консольных приложений (консоль будет открываться)
|
||||||
|
# - "Win32GUI": Для графических приложений на Windows (консоль не будет открываться)
|
||||||
|
# - "MacOSX": Для графических приложений на macOS
|
||||||
|
base = None
|
||||||
|
if sys.platform == "win32":
|
||||||
|
base = "Win32GUI" # Для оконных приложений на Windows без консоли
|
||||||
|
elif sys.platform == "darwin": # Для macOS
|
||||||
|
base = "MacOSX"
|
||||||
|
|
||||||
|
# Определите опции сборки.
|
||||||
|
# Это словарь, который настраивает, какие пакеты включать/исключать,
|
||||||
|
# какие файлы добавлять и другие параметры.
|
||||||
|
build_exe_options = {
|
||||||
|
# 'packages' - список пакетов, которые cx_Freeze должен гарантированно включить.
|
||||||
|
# Это полезно для пакетов, которые динамически импортируются или не обнаруживаются автоматически.
|
||||||
|
"packages": ["os", "sys", "requests", "json", "webbrowser"], # Пример: добавьте сюда любые используемые библиотеки
|
||||||
|
# 'excludes' - список пакетов, которые cx_Freeze должен исключить.
|
||||||
|
# Это помогает уменьшить размер сборки, исключая ненужные модули.
|
||||||
|
"excludes": ["tkinter", "unittest", "PyQt5.QtWebEngineWidgets"], # Пример: исключаем tkinter, если не используется
|
||||||
|
# 'include_files' - список дополнительных файлов или папок, которые нужно включить в сборку.
|
||||||
|
# Это могут быть изображения, конфигурационные файлы, FXML-файлы (для JavaFX, не Python) и т.д.
|
||||||
|
# Формат: [('источник', 'назначение_в_сборке')] или просто ['путь/к/файлу_или_папке']
|
||||||
|
# Например, если у вас есть папка 'resources' с иконками или другими данными:
|
||||||
|
# "include_files": ["resources/", "config.ini"],
|
||||||
|
# Если иконка находится в корне:
|
||||||
|
"include_files": [], # Добавьте сюда любые ресурсы
|
||||||
|
# 'include_msvcr' - для Windows, включает C++ Runtime Library (CRT)
|
||||||
|
# Часто необходимо для работы некоторых нативных модулей Python.
|
||||||
|
"include_msvcr": True,
|
||||||
|
# 'optimize' - уровень оптимизации (0, 1, 2). 2 - максимальная оптимизация, но может быть медленнее.
|
||||||
|
# "optimize": 0,
|
||||||
|
# 'zip_include_packages' - упаковывать ли пакеты в zip-файл внутри исполняемого файла.
|
||||||
|
# Уменьшает количество файлов, но может увеличить время запуска.
|
||||||
|
# По умолчанию cx_Freeze упаковывает большинство пакетов.
|
||||||
|
# "zip_include_packages": ["*"],
|
||||||
|
# 'build_exe' - папка для выходных файлов
|
||||||
|
"build_exe": "build_cx",
|
||||||
|
}
|
||||||
|
|
||||||
|
# Определите исполняемые файлы
|
||||||
|
executables = [
|
||||||
|
Executable(
|
||||||
|
script=main_script,
|
||||||
|
base=base,
|
||||||
|
target_name=f"{exe_name}.exe", # Имя конечного .exe файла
|
||||||
|
icon="icon.ico" # Путь к файлу иконки .ico
|
||||||
|
# Для создания ярлыков в меню "Пуск" можно использовать shortcut_name и shortcut_dir здесь.
|
||||||
|
# Например:
|
||||||
|
# shortcut_name=exe_name,
|
||||||
|
# shortcut_dir="StartMenuFolder" # Создаст ярлык в меню "Пуск" в корневой папке приложения
|
||||||
|
)
|
||||||
|
]
|
||||||
|
|
||||||
|
# Настройте метаданные вашего приложения
|
||||||
|
setup(
|
||||||
|
name=exe_name,
|
||||||
|
version="0.1",
|
||||||
|
description="Управление чатами для HR-менеджеров",
|
||||||
|
options={
|
||||||
|
"build_exe": build_exe_options
|
||||||
|
},
|
||||||
|
executables=executables
|
||||||
|
)
|
||||||
|
|
||||||
Reference in New Issue
Block a user