Изначально я хотел сделать обычный парсер через ИИ.
Просто закинуть папку с картинками.
Получить источники.
Получить теги.
Сохранить всё в базу.
А смотреть архив через Hydrus или XnView.
(Не получилось. Точнее получилось, но пользоваться ими мне не понравилось.)
Hydrus слишком большой и сложный для того что мне нужно.
XnView просто не закрывал все хотелки.
Поэтому сначала появилась небольшая HTML галерея.
Потом захотелось добавить ещё одну функцию.
Потом ещё одну.
Потом ещё одну.
В итоге вместо небольшого парсера получилась отдельная программа для Windows.
(Как обычно бывает с фразой "я только чуть-чуть доделаю".)
Скачать Local_Booru_Windows_x64 v1.2.zip
Local Booru это локальная программа для работы с большим архивом изображений и видео в стиле booru.
Главная идея простая:
Не делать руками то что программа может попытаться сделать сама.
То есть вместо того чтобы вручную:
- искать источник картинки
- копировать теги
- сортировать файлы
- искать дубликаты
- скачивать новые работы
- потом вспоминать где всё это вообще лежит
можно закинуть архив в программу и работать уже там.
Это тестовый экран. На нормальном архиве оно выглядит заметно лучше, но свой архив я сюда положить не могу по вполне понятным причинам.
Сейчас в программе есть:
- просмотр локальной галереи изображений и видео
- галерея манги
- поиск по тегам
- автоматический поиск источников и тегов
- поиск по MD5 и pHash
- поиск через внешние сайты
- подписки на теги и авторов
- скачивание найденных постов
- поиск и удаление дубликатов
- поиск похожих изображений
- кэш превью для более быстрой галереи
- SQLite база для тегов, источников и обработанных файлов
- поддержка нескольких booru движков
- возможность добавлять свои сайты
- несколько тем оформления
И ещё некоторое количество вещей которые появились по пути.
(Многое из этого изначально вообще не планировалось.)
Если ваш архив выглядит примерно так:
Новая папка
Новая папка (2)
Новая папка (3)
Разобрать потом
Разобрать потом 2
Разобрать точно потом
Разобрать уже блять когда-нибудь
то вы примерно понимаете зачем существует эта программа.
Local Booru нужен не для того чтобы хранить двадцать картинок.
Он нужен когда файлов становится достаточно много, чтобы вручную разбирать их уже просто лень.
Программа не умеет творить магию.
Если картинка была скачана напрямую с booru сайта, то шанс нормально найти источник и теги обычно высокий.
Если картинка:
- десять раз пересылалась через Telegram
- была сохранена из Discord
- пережалась
- поменяла размер
- была обрезана
- получила водяной знак
- потом ещё была куда-то перезалита
то найти оригинал уже намного сложнее.
(Хотя иногда программа находит даже такую хрень, и я сам не всегда понимаю как.)
Для смешанного архива результат может сильно отличаться от файла к файлу.
Если архив в основном состоит из файлов с booru сайтов, результат обычно намного лучше.
Когда проект только начинался, нормально определялась вообще небольшая часть архива.
Сейчас всё работает заметно лучше.
(Но останавливаться на этом я явно не собираюсь.)
Local Booru не привязан к одному конкретному сайту.
Основная идея была сделать работу с booru сайтами вообще.
В программу можно вручную добавлять новые сайты через настройки.
Лучше всего должны работать сайты на похожих движках:
- Danbooru
- Gelbooru
- Moebooru
Но разные сайты ведут себя по-разному.
У одних нормальное API.
У других странное API.
У третьих ограничения.
У четвёртых капча которая решила что сегодня ты ничего не получишь. (Да Danbooru, я про тебя.)
Поэтому сам факт что сайт можно добавить ещё не означает что он будет работать идеально.
Подписки в Local Booru это не просто "скачай картинки по тегу".
Они работают скорее как автоматический парсер с возможностью скачивания.
Программа:
- ищет посты на нескольких сайтах
- собирает найденную информацию
- объединяет одинаковые изображения с разных источников
- скачивает сам файл один раз
- сохраняет теги и ссылки со всех сайтов где он нашёлся
Например если одна и та же картинка есть на нескольких сайтах, нет смысла скачивать её несколько раз.
Но есть смысл собрать данные отовсюду.
Именно это программа и пытается делать.
Если подписаться на какой-нибудь очень популярный тег и забыть про это на пару дней, программа действительно может продолжать спокойно качать всё это время.
Например:
Свободно: 500 ГБ
может потом превратиться в:
Свободно: 120 ГБ
(Особенно если выбранный тег оказался популярнее чем казалось.)
Поэтому перед большой подпиской иногда полезно посмотреть сколько файлов вообще было найдено.
Нужен Python 3.10 или новее.
Проверить можно в PowerShell:
python --versionЕсли скачал ZIP с GitHub:
- Распакуй архив.
- Открой PowerShell в папке проекта.
python -m pip install --upgrade pip
python -m pip install -r requirements.txtДля встроенного браузера и некоторых сайтов может понадобиться Playwright:
python -m playwright installpython app.pyИли просто запустить:
run_from_source.bat
Если нужна версия без установленного Python:
build_exe.batПосле сборки программа появится примерно здесь:
dist\Local Booru\Local Booru.exe
Для раздачи лучше архивировать всю папку:
dist\Local Booru
а не только один .exe, потому что PySide6 и другие нужные файлы лежат рядом.
Также можно попробовать сборку одним файлом:
build_exe_onefile.batНо для PySide6 вариант папкой обычно стабильнее.
(Один красивый exe звучит хорошо ровно до того момента пока он не начинает чудить.)
Программа хранит рабочие данные отдельно от основного кода:
data/
Там могут лежать:
- настройки
- кэш
- временные файлы
- служебные данные
- логи
- cookies и данные сайтов
Папки с самим архивом изображений выбираются в настройках программы.
В будущем структура хранения будет переделана так, чтобы весь архив и настройки можно было нормально перенести одной папкой.
(Потому что потерять всё при переустановке Windows будет немного обидно.)
Проект всё ещё активно дорабатывается.
Перед массовой обработкой большого архива лучше сначала проверить программу на копии небольшой папки.
Особенно это касается:
- удаления дубликатов
- удаления по тегу или источнику
- массовой загрузки
- пересборки базы
- подписок на большие теги
Если вы нажали удалить или скачать всё, программа действительно попытается это сделать.
(Она честно выполняет приказы, даже когда приказ был сомнительным. но там есть некоторая защита от случаенного удаления)
Проект активно разрабатывается при помощи ChatGPT и Claude.
Они помогают:
- писать код
- искать ошибки
- обсуждать архитектуру
- переделывать старые куски
- находить места где программа тормозит
- придумывать новые функции которые потом приходится доделывать
(А всё потому что опыта разработки у меня не было вообще. Благо сейчас есть ChatGPT и Claude которые могут написать код за тебя. Правда потом приходится разбираться почему оно работает именно так. Но всё же работает.)
Без ИИ этот проект скорее всего так и остался бы маленьким парсером.
Хотя у разработки через ИИ есть своя особенность:
один ИИ что-то написал
другой ИИ нашёл что оно сломано
первый ИИ починил
сломалось что-то другое
в итоге спустя несколько архивов оно всё-таки работает
(стабильный процесс разработки, ага да.)
Local Booru подойдёт тем, кто хочет хранить большой локальный архив изображений и видео и не хочет постоянно вручную:
- искать источники
- копировать теги
- чистить дубликаты
- сортировать файлы
- открывать десятки сайтов
- следить за новыми постами
Идеальный сценарий выглядит примерно так:
добавил папку
нажал старт
программа попыталась разобрать архив
Именно попыталась.
(Потому что некоторые файлы уже прошли через слишком многое.)
Это ранняя рабочая версия.
Многое уже работает.
Многое ещё предстоит доделать. (Очень многое.)
Сейчас основной упор идёт на:
- стабильность
- удобную галерею
- работу с большими архивами
- нормальные подписки
- производительность
- исправление багов после очередного "небольшого" улучшения
Цель проекта - нормально работать с архивами от десятков тысяч до сотен тысяч файлов.
Local Booru уже давно перестал быть просто парсером.
Теперь это отдельная программа для управления локальным архивом.
(Хотя начиналось всё буквально с идеи "пусть оно просто найдёт теги".)
Local Booru не поставляет никакой контент сам по себе.
Программа работает с файлами пользователя и с сайтами которые пользователь сам добавил или выбрал для поиска и подписок.
Что хранить, что искать и что скачивать решает сам пользователь.
Когда перестанут появляться новые идеи.
MIT License


