Skip to content

Kebuzya/KebuzLect

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Русский | English

KebuzLect

Десктопное приложение, которое превращает фото лекций с Android-телефона в аккуратные PDF-файлы.

Что это

KebuzLect подключается к Android-телефону по USB (через ADB), читает папки с фото лекций, группирует фото по дням в лекции, позволяет навести порядок (повернуть, убрать размытые кадры и дубли, переупорядочить) и экспортирует каждую лекцию в PDF по одному или два фото на лист A4.

Приложение сделано под конкретный, но привычный сценарий: вы фотографируете доску на лекции, одна папка на предмет, и хотите получить фото каждого дня одним аккуратным PDF без ручной возни.

Зачем

  • Не нужно вручную копировать файлы по MTP и бороться с глюками проводника.
  • Фото одного дня автоматически становятся одной лекцией-PDF.
  • Уже сконвертированные лекции запоминаются, поэтому работа не повторяется.
  • Размытые кадры и дубли помечаются до экспорта.
  • Светлая и тёмная темы, а также русский и английский интерфейс.

Требования

  • Windows 10 или новее
  • Python 3.11+ (используется встроенный tomllib)
  • Android Platform Tools (ADB). Приложение помогает установить и настроить их при первом запуске.
  • Android-телефон с включённой отладкой по USB

Установка

git clone <repository-url>
cd KebuzLect
python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt

В requirements.txt перечислено всё необходимое: PyQt6, Pillow, reportlab, tomli-w, numpy, imagehash и pywin32. Две зависимости легко упустить, потому что они нужны неявно: numpy требуется детектору размытости в app/analyzer.py, а imagehash - детектору дублей (find_duplicates). Обе должны быть установлены, иначе экран просмотра альбома не заработает.

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

python main.py

При первом запуске:

  1. Если ADB не найден, открывается мастер настройки. Он даёт ссылку на официальную страницу загрузки Platform Tools от Google, позволяет указать папку с adb.exe (путь сохраняется в конфиге) и объясняет, как включить отладку по USB на телефоне.
  2. Подключите телефон по USB и подтвердите запрос отладки на экране телефона.
  3. Добавьте альбом, выбрав папку телефона прямо в приложении.
  4. Откройте альбом, проверьте фото, сгруппированные по датам, и сконвертируйте нужные лекции в PDF.

Если телефон не подключён, приложение работает в офлайн-режиме: показываются кешированные данные, но редактирование недоступно.

Структура папок на телефоне

Фото ожидаются в папке владельца галереи, одна папка на предмет:

/sdcard/Pictures/Gallery/owner/
├── Лекции САПР/
│   ├── IMG_20260413_135545.jpg
│   ├── IMG_20260413_135555.jpg
│   ├── IMG_20260420_135052.jpg
│   └── ...
├── Лекции ЦОС/
└── Лекции Электроника/

Фото ожидаются в любой папке на телефоне, одна папка на предмет. Папка выбирается через встроенный браузер при добавлении альбома. Поддерживается стандартный формат имён IMG_YYYYMMDD_HHMMSS.jpg и другие варианты с датой в имени файла (YYYYMMDD_HHMMSS.jpg, 20260413_135545.jpg и т.д.).

Где хранятся данные

%APPDATA%\Kebuz\KebuzLect\
├── config.toml      настройки и альбомы
└── cache\           кеш миниатюр

Шаблон имени выходного файла

Имя выходного файла задаётся шаблоном в настройках:

Токен Значение
{predmet} display_name альбома
{YYYYMMDD} Дата лекции
{lection_number} Сквозной номер лекции, ширина настраивается

Примеры:

  • {predmet}_{YYYYMMDD} -> САПР_20260413.pdf
  • {predmet}_{lection_number} -> САПР_007.pdf
  • {predmet}_{lection_number}_{YYYYMMDD} -> САПР_007_20260413.pdf

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

KebuzLect/
├── main.py
├── requirements.txt
├── LICENSE
├── README.md
├── README_EN.md
├── KebuzLect.spec
├── resources/
│   └── icon.ico
├── app/
│   ├── config.py        чтение/запись конфига (TOML, %APPDATA%)
│   ├── models.py        dataclass-модели (Album, LectureGroup, Photo)
│   ├── device/          бэкенды устройства (ADB, fallback win32com)
│   ├── scanner.py       листинг папок, группировка по датам
│   ├── converter.py     генерация PDF (ReportLab)
│   ├── thumbnail.py     кеш миниатюр
│   └── analyzer.py      определение размытости (Лапласиан) и дублей (pHash)
└── ui/
    ├── main_window.py
    ├── album_view.py
    ├── setup_wizard.py
    ├── settings_dialog.py
    ├── convert_dialog.py
    ├── theme.py
    └── i18n.py

Примечания

  • Фото на телефоне никогда не удаляются автоматически после конвертации.
  • Нумерация лекций сквозная и не обнуляется; при удалении лекции остаётся "дырка", есть действие "Перенумеровать всё".
  • iOS не поддерживается в первой версии. Как источник можно указать обычную папку на компьютере для фото, скопированных вручную.

Сборка автономного .exe

В проекте есть spec-файл PyInstaller, который собирает один оконный исполняемый файл с иконкой приложения:

pip install pyinstaller
pyinstaller KebuzLect.spec

Результат - dist/KebuzLect.exe. Папка resources/ (иконка) включается в сборку автоматически.

Лицензия

MIT. См. LICENSE.

About

Конвертация фото лекций с Android-телефона в сжатые PDF через ADB

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors

Languages