Skip to content

theun1c/pika

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

67 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

⚡ Pika

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

Проект создаётся как личный инструмент, ориентированный на удобство, модульность и расширяемость.


✨ Основная идея

Pika — это не просто парсер сайтов, а платформа, которая:

  • агрегирует информацию
  • объединяет данные из разных источников
  • хранит нормализованный каталог
  • предоставляет API
  • позволяет запускать воспроизведение выбранного эпизода

Главная цель — собрать всё в одном месте с удобным интерфейсом.


🎯 Цели проекта

  • единый интерфейс для просмотра
  • модульная архитектура
  • независимые источники
  • быстрый и удобный поиск
  • централизованный каталог
  • расширяемость

🧩 Технологии

Проект строится на экосистеме .NET.

Основной стек:

  • .NET
  • C#
  • ASP.NET Core
  • Avalonia UI
  • SQLite / PostgreSQL
  • Entity Framework Core

🚧 Статус

Проект находится в стадии разработки.

Начальная версия сосредоточена на:

  • архитектуре
  • модели данных
  • базовом API
  • первом источнике
  • desktop клиенте

Посмотреть текущий статус можно в файле


📄 License

This project is licensed under the MIT License — see the LICENSE file for details.


🖥️ Develop part (just for me)

Приложение должно делать 2 вещи:

  1. Каталог
  • Понять:
    • что это за аниме;
    • какие у него сезоны, фильмы, OVA, specials;
    • какие есть эпизоды;
    • как это красиво показать пользователю.
  1. Просмотр
  • Понять:
    • где этот эпизод можно открыть;
    • какие есть варианты качества;
    • какие есть озвучки;
    • как передать это в плеер.

И вот это важно:

каталог и просмотр — это не одно и то же.

  • Каталог — это “что существует”.
  • Просмотр — это “что можно открыть прямо сейчас”.

Это один из главных архитектурных принципов проекта.


Думаем о проекта следующем образом (может быть все поменяется)

1. desktop

Это Avalonia-приложение.

Оно нужно для:

  • поиска;
  • открытия карточек;
  • просмотра списков эпизодов;
  • выбора качества/озвучки;
  • запуска плеера;
  • отображения истории просмотра;

Что desktop НЕ должен делать:

  • не должен сам парсить сайты;
  • не должен быть главным местом хранения данных;
  • не должен содержать тяжелую логику синхронизации;

То есть desktop — это лицо приложения, а не его мозг.

2. api

Это ASP.NET Core API.

Это центральная точка системы. Именно оно отвечает на вопросы клиента:

  • найди аниме;
  • отдай карточку;
  • отдай список эпизодов;
  • отдай историю;
  • подготовь варианты просмотра;

API — это мозг и диспетчер.

Оно:

  • принимает запросы от desktop;
  • берет данные из базы;
  • решает, когда запускать обновление;
  • отдает готовые ответы клиенту;

3. worker

Это фоновый сервис.

Он нужен, чтобы делать тяжелую работу отдельно от UI и API.

Например:

  • ходить по источникам;
  • обновлять карточки;
  • обновлять эпизоды;
  • синхронизировать каталог;
  • проверять, живы ли источники;
  • чистить кэш;

Почему worker нужен отдельно

Потому что иначе:

  • API начнет тормозить;
  • desktop начнет зависать;
  • вся система станет неустойчивой.

Worker — это “работник на фоне”.

4. database

Это память проекта.

В ней нужно хранить:

  • тайтлы;
  • альтернативные названия;
  • сезоны / фильмы / OVA / specials;
  • эпизоды;
  • связи с источниками;
  • историю просмотра;
  • кэш поиска;
  • состояние синхронизации.

База — это то место, где твоя система собирает все в единый порядок.

5. connectors

Это модули для конкретных источников.

Один источник = один адаптер.

Например, коннектор умеет:

  • искать тайтлы на источнике;
  • получать страницу тайтла;
  • получать список эпизодов;
  • получать варианты просмотра;
  • резолвить playback-сессию;

Это очень важно держать отдельно, потому что именно эта часть чаще всего ломается.

6. domain/core

Это внутренняя логика проекта.

Тут находятся основные сущности.

Это “язык”, на котором говорят все части системы.

7. application

Это слой сценариев.

Он отвечает на вопросы:

  • как искать аниме;

  • как открыть карточку;

  • как обновить данные;

  • как получить варианты просмотра;

  • как сохранить прогресс просмотра;

  • То есть domain — это “что существует”,

  • а application — это “что система умеет делать”.

8. infrastructure

Это технический слой.

Тут:

  • EF Core;
  • работа с базой;
  • HTTP-клиенты;
  • кэш;
  • файловая система;
  • логирование;
  • реализация репозиториев;

Если просто: infrastructure = “техническая кухня”.

9. Sandbox проект

Необходим для исследовательской работы, до начала реализации Clean Architecture

Пример работы

[User]
   |
   v
[Desktop UI]
   |
   v
[API]
   | \
   |  \
   |   -> [Database]
   |
   -> [Worker / jobs]
            |
            v
      [Connectors]
            |
            v
    [External sources]

Примерная структура проекта

pika/
│
├─ src/
│  │
│  ├─ Pika.Desktop/          # Avalonia UI приложение
│  │
│  ├─ Pika.Api/              # ASP.NET Core API
│  │
│  ├─ Pika.Worker/           # Background worker
│  │
│  ├─ Pika.Core/             # Domain + application logic
│  │
│  ├─ Pika.Infrastructure/   # Database, HTTP, кеш, файловая система
│  │
│  ├─ Pika.Connectors/       # Источники (парсеры сайтов)
│  │
│  ├─ Pika.Sandbox/          # Проект для тестов (полигон)
│  │
│  └─ Pika.Playback.Mpv/     # Проект для интеграции бекенда libmpv
│ 
├─ docs/
│  └─ ai/
│     ├─ project-context.md
│     └─ current-status.md
│
├─ tests/
│  ├─ Pika.Core.Tests/
│  ├─ Pika.Api.Tests/
│  └─ Pika.Connectors.Tests/
│
├─ .gitignore
├─ README.md
└─ pika.sln

About

chose to be happy

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages