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

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

View File

@@ -0,0 +1,11 @@
using YandexMusic.API.Models.Album;
namespace YandexMusic.API.Models.Search.Album
{
public class YSearchAlbumModel : YAlbum
{
public List<string> AvailableRegions { get; set; }
public int OriginalReleaseYear { get; set; }
public List<string> Regions { get; set; }
}
}

View File

@@ -0,0 +1,15 @@
using YandexMusic.API.Models.Common.Cover;
namespace YandexMusic.API.Models.Search.Artist
{
public class YSearchArtist
{
public bool Composer { get; set; }
[JsonConverter(typeof(YCoverConverter))]
public YCover Cover { get; set; }
public List<string> Decomposed { get; set; }
public string Id { get; set; }
public string Name { get; set; }
public bool Various { get; set; }
}
}

View File

@@ -0,0 +1,10 @@
namespace YandexMusic.API.Models.Search.Artist
{
public class YSearchArtistCounter
{
public int? AlsoAlbums { get; set; }
public int? AlsoTracks { get; set; }
public int? DirectAlbums { get; set; }
public int? Tracks { get; set; }
}
}

View File

@@ -0,0 +1,11 @@
using YandexMusic.API.Models.Artist;
using YandexMusic.API.Models.Search.Track;
namespace YandexMusic.API.Models.Search.Artist
{
public class YSearchArtistModel : YArtist
{
public List<YSearchTrackModel> PopularTracks { get; set; }
public List<string> Regions { get; set; }
}
}

View File

@@ -0,0 +1,10 @@
using YandexMusic.API.Models.Playlist;
namespace YandexMusic.API.Models.Search.Playlist
{
public class YSearchPlaylistModel : YPlaylist
{
public string CoverUri { get; set; }
public List<string> Regions { get; set; }
}
}

View File

@@ -0,0 +1,13 @@
using YandexMusic.API.Models.Search.Album;
using YandexMusic.API.Models.Track;
namespace YandexMusic.API.Models.Search.Track
{
public class YSearchTrackModel : YTrack
{
public new List<YSearchAlbumModel> Albums { get; set; }
public bool AvailableAsRbt { get; set; }
public bool Explicit { get; set; }
public List<string> Regions { get; set; }
}
}

View File

@@ -0,0 +1,7 @@
namespace YandexMusic.API.Models.Search.Track
{
public enum YSearchTrackType
{
Music
}
}

View File

@@ -0,0 +1,6 @@
namespace YandexMusic.API.Models.Search.User
{
public class YSearchUserModel
{
}
}

View File

@@ -0,0 +1,13 @@
namespace YandexMusic.API.Models.Search.Video
{
public class YSearchVideoModel
{
public int Duration { get; set; }
public string HtmlAutoPlayVideoPlayer { get; set; }
public List<string> Regions { get; set; }
public string Text { get; set; }
public string ThumbnailUrl { get; set; }
public string Title { get; set; }
public string YoutubeUrl { get; set; }
}
}

View File

@@ -0,0 +1,35 @@
using YandexMusic.API.Models.Common;
using YandexMusic.API.Models.Search.Album;
using YandexMusic.API.Models.Search.Artist;
using YandexMusic.API.Models.Search.Playlist;
using YandexMusic.API.Models.Search.Track;
using YandexMusic.API.Models.Search.User;
using YandexMusic.API.Models.Search.Video;
namespace YandexMusic.API.Models.Search
{
public class YSearch
{
public YSearchResult<YSearchAlbumModel> Albums { get; set; }
public YSearchResult<YSearchArtistModel> Artists { get; set; }
public YSearchBest Best { get; set; }
public bool MisspellCorrected { get; set; }
public string MisspellOriginal { get; set; }
public string MisspellResult { get; set; }
public bool NoCorrect { get; set; }
public int Page { get; set; }
public int PerPage { get; set; }
public YSearchResult<YSearchPlaylistModel> Playlists { get; set; }
[JsonProperty("podcast_episodes")]
public YSearchResult<YSearchTrackModel> PodcastEpisode { get; set; }
public string SearchRequestId { get; set; }
public string Text { get; set; }
public YSearchResult<YSearchTrackModel> Tracks { get; set; }
public YSearchType Type { get; set; }
public YSearchResult<YSearchUserModel> Users { get; set; }
public YSearchResult<YSearchVideoModel> Videos { get; set; }
}
}

View File

@@ -0,0 +1,70 @@
using YandexMusic.API.Models.Common;
using YandexMusic.API.Models.Search.Album;
using YandexMusic.API.Models.Search.Artist;
using YandexMusic.API.Models.Search.Playlist;
using YandexMusic.API.Models.Search.Track;
using YandexMusic.API.Models.Search.Video;
namespace YandexMusic.API.Models.Search
{
/// <summary>
/// Конвертер для поля Result
/// </summary>
internal class YSearchBestConverter : JsonConverter
{
public override bool CanConvert(Type objectType)
{
throw new NotImplementedException();
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
if (reader.TokenType == JsonToken.Null)
return null;
JObject obj = JObject.Load(reader);
JsonObjectContract contract = (JsonObjectContract)serializer.ContractResolver.ResolveContract(objectType);
YSearchBest best = existingValue as YSearchBest ?? (YSearchBest)contract.DefaultCreator();
best.Type = (YSearchType)Enum.Parse(typeof(YSearchType), obj["type"].ToString(), true);
switch (best.Type)
{
case YSearchType.Track:
best.Result = JsonConvert.DeserializeObject<YSearchTrackModel>(obj["result"].ToString());
break;
case YSearchType.Album:
best.Result = JsonConvert.DeserializeObject<YSearchAlbumModel>(obj["result"].ToString());
break;
case YSearchType.Artist:
best.Result = JsonConvert.DeserializeObject<YSearchArtistModel>(obj["result"].ToString());
break;
case YSearchType.Playlist:
best.Result = JsonConvert.DeserializeObject<YSearchPlaylistModel>(obj["result"].ToString());
break;
case YSearchType.PodcastEpisode:
best.Result = JsonConvert.DeserializeObject<YSearchTrackModel>(obj["result"].ToString());
break;
case YSearchType.Video:
best.Result = JsonConvert.DeserializeObject<YSearchVideoModel>(obj["result"].ToString());
break;
}
return best;
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
throw new NotImplementedException();
}
public override bool CanWrite => false;
}
[JsonConverter(typeof(YSearchBestConverter))]
public class YSearchBest
{
public dynamic Result { get; set; }
public YSearchType Type { get; set; }
}
}

View File

@@ -0,0 +1,10 @@
namespace YandexMusic.API.Models.Search
{
public class YSearchResult<T>
{
public int Order { get; set; }
public int PerPage { get; set; }
public List<T> Results { get; set; }
public int Total { get; set; }
}
}

View File

@@ -0,0 +1,8 @@
namespace YandexMusic.API.Models.Search
{
public class YSearchSuggest
{
public YSearchBest Best { get; set; }
public List<string> Suggestions { get; set; }
}
}