Добавьте файлы проекта.
This commit is contained in:
230
YandexMusic.API/README.md
Normal file
230
YandexMusic.API/README.md
Normal 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
|
||||
Reference in New Issue
Block a user