Добавьте файлы проекта.

This commit is contained in:
FrigaT
2026-04-10 12:12:33 +03:00
parent 9615cf42ee
commit 11d0b0d72f
383 changed files with 9661 additions and 0 deletions

230
YandexMusic.API/README.md Normal file
View File

@@ -0,0 +1,230 @@
# YandexMusic.API
Асинхронная библиотека для неофициального API Яндекс Музыки, разработанная на .NET 10.
## Описание
**YandexMusic.API** — это комплексная C# библиотека для взаимодействия с неофициальным API Яндекс Музыки. Библиотека предоставляет полный набор методов для работы с музыкой, альбомами, исполнителями, плейлистами, радио и другими функциями сервиса.
## Основные возможности
-**Полная поддержка API Яндекс Музыки** - Все основные методы и функции
-**Асинхронная архитектура** - Основана на async/await для максимальной производительности
-**Модульная структура** - Отдельные API классы для каждой функциональности
-**Сериализация JSON** - Использует современный System.Text.Json
-**Поддержка WebSocket** - Протокол Ynison для real-time функций
-**Типобезопасность** - Полная поддержка nullable reference types
-**Документация на русском** - XML документация всех публичных членов
## Поддерживаемые компоненты
### API Методы
- **Album API** - Получение информации об альбомах
- **Artist API** - Работа с данными исполнителей
- **Label API** - Управление лейблами
- **Landing API** - Доступ к рекомендациям главной страницы
- **Library API** - Работа с библиотекой пользователя (лайки, дизлайки)
- **Playlist API** - Управление плейлистами
- **Pins API** - Управление закреплёнными объектами
- **Radio API** - Управление радиостанциями
- **Search API** - Поиск по музыке
- **Track API** - Работа с треками
- **Queue API** - Управление очередью воспроизведения
- **User API** - Управление пользователем и авторизацией
- **UGC API** - Загрузка пользовательского контента
- **Ynison API** - WebSocket протокол для real-time взаимодействия
### Модели данных
- Полные модели для альбомов, треков, исполнителей, плейлистов
- Модели поиска и рекомендаций
- Модели для управления библиотекой
- Модели для радио и станций
- Модели для WebSocket взаимодействия
## Требования
- **.NET 10** или выше
- C# 12 или выше
## Технологический стек
- **Runtime**: .NET 10
- **Язык**: C# 12
- **Сериализация**: System.Text.Json
- **Асинхронность**: async/await
- **WebSocket**: Native .NET WebSocket support
## Архитектура
### Структура проекта
```
YandexMusic.API/
├── API/ # Основные классы API для каждой функции
├── Models/ # Модели данных
├── Requests/ # Построители запросов
├── Common/ # Общая функциональность и провайдеры
├── Extensions/ # Расширения для удобства
├── YandexMusicApi.cs # Главный класс API
└── README.md # Документация
```
### Основные компоненты
#### YandexMusicApi
Главный класс API, предоставляющий доступ ко всем веткам функциональности через свойства.
```csharp
var api = new YandexMusicApi();
```
#### AuthStorage
Управление учётными данными пользователя, токенами и сессией.
#### RequestProvider
Интерфейс для обработки HTTP запросов и ответов. Имеет несколько реализаций:
- `DefaultRequestProvider` - стандартный провайдер
- `CommonRequestProvider` - расширенный провайдер
- `MockRequestProvider` - для тестирования
#### API Classes
Каждый API класс наследуется от `YCommonAPI` и предоставляет синхронные и асинхронные методы.
## Использование
### Базовый пример
```csharp
using YandexMusic.API;
// Создание экземпляра API
var api = new YandexMusicApi();
// Получение информации о треке
var track = await api.Track.GetTrackAsync(trackId);
// Поиск музыки
var searchResults = await api.Search.SearchAsync("Яндекс");
// Работа с плейлистами
var playlists = await api.Playlist.GetPlaylistAsync(playlistId);
```
### Авторизация
```csharp
var storage = new AuthStorage();
// Авторизация пользователя
// Используйте соответствующие методы AuthStorage
storage.IsAuthorized = true;
storage.Token = аш_токен";
```
### Работа с провайдерами
```csharp
var storage = new AuthStorage();
// Использование пользовательского провайдера
var customProvider = new MyCustomRequestProvider();
var storage = new AuthStorage(customProvider);
```
## Особенности .NET 10
Проект полностью использует возможности .NET 10:
- **C# 12 Features** - Last language version
- **Nullable Reference Types** - Полная поддержка nullable context
- **Implicit Usings** - Автоматический импорт стандартных пространств имён
- **Modern async/await** - Асинхронная обработка
- **System.Text.Json** - Встроенная сериализация JSON
## Документация
Все публичные типы и методы имеют XML документацию на русском языке. Документация автоматически обновляется и доступна через IntelliSense в IDE.
### Пример документации
```csharp
/// <summary>Получает информацию о треке по идентификатору.</summary>
/// <param name="trackId">Идентификатор трека</param>
/// <returns>Модель трека</returns>
public async Task<YTrack?> GetTrackAsync(string trackId)
{
// ...
}
```
## Миграция с предыдущих версий
Если вы переходите с более старой версии:
1. **Обновите .NET версию** до 10.0
2. **System.Text.Json** уже используется везде вместо Newtonsoft.Json
3. **API сигнатуры** остаются совместимы
4. **Regions удалены** - код лучше организован
## Провайдеры и расширяемость
Архитектура позволяет легко расширять функциональность:
```csharp
public interface IRequestProvider
{
Task<HttpResponseMessage> GetWebResponseAsync(HttpRequestMessage message);
Task<T?> GetDataFromResponseAsync<T>(YandexMusicApi api, HttpResponseMessage response);
}
// Реализуйте ваш провайдер
public class MyProvider : IRequestProvider
{
// Ваша реализация
}
```
## Отладка
Проект поддерживает встроенную отладку через `DebugSettings`:
```csharp
var debug = new DebugSettings
{
ClearDirectory = true
};
var storage = new AuthStorage(settings: debug);
```
## Производительность
- **Асинхронные операции** - Не блокируют потоки
- **Кэширование** - Встроенная поддержка кэширования ответов
- **Оптимизированная сериализация** - System.Text.Json быстрее Newtonsoft
- **Минимальные зависимости** - Только необходимые пакеты
## Лицензия
Это неофициальная библиотека для API Яндекс Музыки. Используйте на свой риск.
## Автор
**FrigaT** - Разработчик библиотеки
## Поддержка
Для вопросов и предложений свяжитесь с разработчиком или создайте issue в репозитории.
## Благодарности
Спасибо сообществу .NET разработчиков и всем участникам проекта.
---
**Версия**: 0.0.1
**Платформа**: .NET 10
**Язык**: C# 12
**Обновлено**: 2024