Skip to content

alxcp/ABCat

Repository files navigation

Каталог ссылок

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

Для пользователей:
Системные требования:
- Windows Vista (Необходимы для поддержки .Net Framework 4.5)
- .Net Framework 4.5
- Доступ в интернет (при обновлении каталога и загрузке контента)
- Свободное место на диске: 200Mb+ (для хранения БД)
- CPU: Любой более-менее современный. Фильтрация и группировка записей каталога могут потребовать довольно много ресурсов процессора, поэтому чем больше - тем лучше, но работать должно и на слабых машинах.
- RAM: Приложение использует 150-200 MB Ram.

Установка приложения не требуется. Достаточно скопировать файлы на диск и запустить ABCat.exe. При первом запуске потребуется указать пути для хранения БД, загрузки контента, путь к uTorrent, срок актуальности записей каталога и группы каталога (актуальные записи не загружаются при обновлении каталога).

Приложение построено на:
- .Net Framework 4.7.2
- WPF
- ModernUI.WPF.1.0.5
- WPFToolkit.3.5.50211.1

Структура решения (в порядке зависимости):
- ABCat.Shared
   Общая для всех проектов библиотека. Базовые утилиты, типы данны и т.д.
- ABCat.DB
   Слой доступа к данным. Структура Entity, классы для упрощения работы с базой.
- ABCat.Plugins.Core
   Ядро плагинов. Интерфейсы поддерживаемых плагинов, контекст приложения.
- ABCat
   GUI, модели для работы GUI, и т.д. Windows Application


Структура хранилища каталога:
- Catalog.sdf
   Основная БД хранилища. Записи каталога, группировка записей, метаданные
- PageStorage.sdf
   Хранилище кешированных Html, загруженных при обновлении каталога. Может использоваться для повторного парсинга записей без обращения на сайт источника. Имеет наибольший размер и может быть удалён в любой момент - при отсутствии страницы в кеше она будет повторно загружена с сайта.
- ProcessingSettings.sdf
   Настройки парсеров (списки автозамены для нормализации каталога)
- UserData.sdf
   Пользовательские данные каталога (информация о загрузке записей, скрытии записей на UI). Пользовательские данные отделены от основной БД для упрощения обмена базами между пользователями - при замене Catalog.sdf пользователь не теряет своих личных данных.

Плагины. Плагином может быть Dll на .Net Framework 4.5, содержащая классы, помеченные специальным атрибутом ABCat.Plugins.Core.PluginCreatorAttribute и реализующие один или несколько интерфейсов приложения. В конструктор класса передается экземпляр контекста приложения со всей необходимой информацией для инициализации и работы плагина.

Структура плагинов:
== Site Плагины для операций с источниками контента, наполнения БД
---- ISiteParserPlugin
      Плагин для наполнения каталога. Обеспечивает загрузку записей из какого-либо источника, загрузку метаданных для записей, наполнение каталога. В ABCat.Plugins.Core имеется абстрактный класс SiteParserBase, обеспечивающий базовую логику асинхронности. При создании плагинов рекомендуется наследоваться от этого класса.
---- IRecordTargetDownloaderPlugin
      Плагин для загрузки контента, связанного с записью каталога.    В ABCat.Plugins.Core имеется абстрактный класс RecordTargetDownloaderBase, обеспечивающий базовую логику асинхронности. При создании плагинов рекомендуется наследоваться от этого класса.

== Catalog Плагины для операций с каталогом контекта
---- IFilteringLogicPlugin
      Интерфейс для плагинов, обеспечивающих фильтрацию записей на UI. Класс должен представлять открытые поля для ввода параметров фильтрации, методы обновления кешей фильтра и методы фильтрации.
---- IGrouppingLogicPlugin
      Интерфейс для плагинов, обеспечивающих группировку записей на UI.
---- INormalizationLogicPlugin
      Интерфейс для плагинов, обеспечивающих логику нормализации данных в каталоге. Нормализация - это процесс нахождения различных вариантов представления одного и того же значения атрибута записи каталога (например "Стивен Кинг" == "Кинг Стивен" == "Кинг Стивн"), и их приведения к единому виду. Плагин может иметь собственную логику формирования списков автозамены (например синтаксический анализ), или пользоваться базой списков автозамены (ProcessingSettings.sdf)

== UI Плагины для пользовательского интерфейса
---- IBrowserWindowPlugin
      Плагин, отображающий окно браузера и показывающий содержимое страницы, связанной с записью каталога
---- IRecordsListPlugin
      Пользовательский контрол, отображающий набор записей каталога. Обеспечивает необходимые методы навигации по записям, выделению записей и т.д.

Базовая версия проекта содержит необходимый набор стандартных плагинов, обеспечивающих работы с каталогом аудиокниг сайта Rutracker.org
Плагины могут иметь ссылку на проекты ABCat.Shared, ABCat.Plugins.Core, ABCat.DB

Оставайтесь на раздаче!

About

Audio Books Catalog

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages