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

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,104 @@
namespace YandexMusic.API.Models.Feed.Event
{
public sealed class YFeedEventConverter : JsonConverter
{
private YFeedEventTitled GetEvent(JToken jObject)
{
YFeedEventTitled feedEvent;
YFeedEventType type = jObject[jObject["typeForFrom"] != null ? "typeForFrom" : "type"]
.ToObject<YFeedEventType>();
switch (type)
{
case YFeedEventType.GenreTop:
feedEvent = jObject.ToObject<YFeedEventGenreTracksTop>();
break;
case YFeedEventType.NewAlbums:
feedEvent = jObject.ToObject<YFeedEventAlbums>();
break;
case YFeedEventType.NewAlbumsOfFavoriteGenre:
feedEvent = jObject.ToObject<YFeedEventGenreAlbums>();
break;
case YFeedEventType.Notification:
feedEvent = jObject.ToObject<YFeedEventNotification>();
break;
case YFeedEventType.Promotion:
feedEvent = jObject.ToObject<YFeedEventPromotion>();
break;
case YFeedEventType.RecentTrackLikeToTracks:
feedEvent = jObject.ToObject<YFeedEventLikeTrack>();
break;
case YFeedEventType.RecommendedArtistsWithArtistsFromHistory:
feedEvent = jObject.ToObject<YFeedEventArtistWithArtists>();
break;
case YFeedEventType.RecommendedSimilarArtists:
feedEvent = jObject.ToObject<YFeedEventSimilarArtists>();
break;
case YFeedEventType.RecommendedSimilarGenre:
feedEvent = jObject.ToObject<YFeedEventSimilarGenre>();
break;
case YFeedEventType.MissedTracksByArtist:
case YFeedEventType.RareArtist:
case YFeedEventType.RecommendedTracksByArtistFromHistory:
feedEvent = jObject.ToObject<YFeedEventArtist>();
break;
case YFeedEventType.NewTracksOfFavoriteGenre:
case YFeedEventType.TracksByGenre:
feedEvent = jObject.ToObject<YFeedEventGenreTracks>();
break;
case YFeedEventType.WellForgottenOldArtists:
feedEvent = jObject.ToObject<YFeedEventArtists>();
break;
case YFeedEventType.NeverHeardFromLibrary:
case YFeedEventType.WellForgottenOldTracks:
feedEvent = jObject.ToObject<YFeedEventTracks>();
break;
default:
feedEvent = jObject.ToObject<YFeedEventTitled>();
break;
}
return feedEvent;
}
public override bool CanConvert(Type objectType)
{
return typeof(YFeedEventTitled).IsAssignableFrom(objectType);
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
if (reader.TokenType == JsonToken.Null)
return null;
return JArray.Load(reader)
.Select(GetEvent)
.ToList();
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
throw new NotImplementedException();
}
}
public class YFeedEvent
{
public string Id { get; set; }
public YFeedEventType Type { get; set; }
}
}