diff --git a/LICENSE.md b/LICENSE.md
index 27951f0..8c0c399 100644
--- a/LICENSE.md
+++ b/LICENSE.md
@@ -1,6 +1,6 @@
The MIT License (MIT)
-Copyright (c) 2023 Tim Miller
+Copyright (c) 2025 Tim Miller
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/src/FishyFlip/Lexicon/ATObject.g.cs b/src/FishyFlip/Lexicon/ATObject.g.cs
index 80c03cb..b246f96 100644
--- a/src/FishyFlip/Lexicon/ATObject.g.cs
+++ b/src/FishyFlip/Lexicon/ATObject.g.cs
@@ -112,6 +112,7 @@ namespace FishyFlip.Lexicon
[JsonDerivedType(typeof(Com.Atproto.Admin.GetAccountInfosOutput), typeDiscriminator: "com.atproto.admin.getAccountInfos#GetAccountInfosOutput")]
[JsonDerivedType(typeof(Com.Atproto.Server.GetAccountInviteCodesOutput), typeDiscriminator: "com.atproto.server.getAccountInviteCodes#GetAccountInviteCodesOutput")]
[JsonDerivedType(typeof(Community.Lexicon.Bookmarks.GetActorBookmarksOutput), typeDiscriminator: "community.lexicon.bookmarks.getActorBookmarks#GetActorBookmarksOutput")]
+ [JsonDerivedType(typeof(Fm.Teal.Alpha.Feed.GetActorFeedOutput), typeDiscriminator: "fm.teal.alpha.feed.getActorFeed#GetActorFeedOutput")]
[JsonDerivedType(typeof(App.Bsky.Feed.GetActorFeedsOutput), typeDiscriminator: "app.bsky.feed.getActorFeeds#GetActorFeedsOutput")]
[JsonDerivedType(typeof(App.Bsky.Feed.GetActorLikesOutput), typeDiscriminator: "app.bsky.feed.getActorLikes#GetActorLikesOutput")]
[JsonDerivedType(typeof(Chat.Bsky.Moderation.GetActorMetadataOutput), typeDiscriminator: "chat.bsky.moderation.getActorMetadata#GetActorMetadataOutput")]
@@ -151,6 +152,7 @@ namespace FishyFlip.Lexicon
[JsonDerivedType(typeof(App.Bsky.Graph.GetMutesOutput), typeDiscriminator: "app.bsky.graph.getMutes#GetMutesOutput")]
[JsonDerivedType(typeof(Com.Shinolabs.Pinksea.GetOekakiOutput), typeDiscriminator: "com.shinolabs.pinksea.getOekaki#GetOekakiOutput")]
[JsonDerivedType(typeof(Com.Shinolabs.Pinksea.GetParentForReplyOutput), typeDiscriminator: "com.shinolabs.pinksea.getParentForReply#GetParentForReplyOutput")]
+ [JsonDerivedType(typeof(Fm.Teal.Alpha.Feed.GetPlayOutput), typeDiscriminator: "fm.teal.alpha.feed.getPlay#GetPlayOutput")]
[JsonDerivedType(typeof(App.Bsky.Unspecced.GetPopularFeedGeneratorsOutput), typeDiscriminator: "app.bsky.unspecced.getPopularFeedGenerators#GetPopularFeedGeneratorsOutput")]
[JsonDerivedType(typeof(App.Bsky.Feed.GetPostsOutput), typeDiscriminator: "app.bsky.feed.getPosts#GetPostsOutput")]
[JsonDerivedType(typeof(App.Bsky.Feed.GetPostThreadOutput), typeDiscriminator: "app.bsky.feed.getPostThread#GetPostThreadOutput")]
@@ -290,7 +292,8 @@ namespace FishyFlip.Lexicon
[JsonDerivedType(typeof(Com.Whtwnd.Blog.Ogp), typeDiscriminator: "com.whtwnd.blog.defs#ogp")]
[JsonDerivedType(typeof(Tools.Ozone.Setting.Option), typeDiscriminator: "tools.ozone.setting.defs#option")]
[JsonDerivedType(typeof(App.Bsky.Actor.PersonalDetailsPref), typeDiscriminator: "app.bsky.actor.defs#personalDetailsPref")]
- [JsonDerivedType(typeof(Fm.Teal.Alpha.Play), typeDiscriminator: "fm.teal.alpha.play")]
+ [JsonDerivedType(typeof(Fm.Teal.Alpha.Feed.Play), typeDiscriminator: "fm.teal.alpha.feed.play")]
+ [JsonDerivedType(typeof(Fm.Teal.Alpha.Feed.PlayView), typeDiscriminator: "fm.teal.alpha.feed.defs#playView")]
[JsonDerivedType(typeof(App.Bsky.Feed.Post), typeDiscriminator: "app.bsky.feed.post")]
[JsonDerivedType(typeof(Fyi.Unravel.Frontpage.Post), typeDiscriminator: "fyi.unravel.frontpage.post")]
[JsonDerivedType(typeof(App.Bsky.Feed.Postgate), typeDiscriminator: "app.bsky.feed.postgate")]
@@ -393,7 +396,6 @@ namespace FishyFlip.Lexicon
[JsonDerivedType(typeof(App.Bsky.Graph.StarterPackView), typeDiscriminator: "app.bsky.graph.defs#starterPackView")]
[JsonDerivedType(typeof(App.Bsky.Graph.StarterPackViewBasic), typeDiscriminator: "app.bsky.graph.defs#starterPackViewBasic")]
[JsonDerivedType(typeof(App.Netlify.Aniblue.Status), typeDiscriminator: "app.netlify.aniblue.status")]
- [JsonDerivedType(typeof(Xyz.Statusphere.Status), typeDiscriminator: "xyz.statusphere.status")]
[JsonDerivedType(typeof(Fm.Teal.Alpha.Actor.Status), typeDiscriminator: "fm.teal.alpha.actor.status")]
[JsonDerivedType(typeof(Com.Atproto.Admin.StatusAttr), typeDiscriminator: "com.atproto.admin.defs#statusAttr")]
[JsonDerivedType(typeof(App.Netlify.Aniblue.StatusDef), typeDiscriminator: "app.netlify.aniblue.status#status")]
diff --git a/src/FishyFlip/Lexicon/ATProtocol.g.cs b/src/FishyFlip/Lexicon/ATProtocol.g.cs
index cd8bee0..2699ad8 100644
--- a/src/FishyFlip/Lexicon/ATProtocol.g.cs
+++ b/src/FishyFlip/Lexicon/ATProtocol.g.cs
@@ -123,6 +123,11 @@ public sealed partial class ATProtocol
///
public FishyFlip.Lexicon.Community.Lexicon.Bookmarks.CommunityLexiconBookmarks CommunityLexiconBookmarks => new (this);
+ ///
+ /// fm.teal.alpha.feed Endpoint Group.
+ ///
+ public FishyFlip.Lexicon.Fm.Teal.Alpha.Feed.FmTealAlphaFeed FmTealAlphaFeed => new (this);
+
///
/// tools.ozone.communication Endpoint Group.
///
diff --git a/src/FishyFlip/Lexicon/CborExtensions.g.cs b/src/FishyFlip/Lexicon/CborExtensions.g.cs
index ead4edc..45ba939 100644
--- a/src/FishyFlip/Lexicon/CborExtensions.g.cs
+++ b/src/FishyFlip/Lexicon/CborExtensions.g.cs
@@ -239,6 +239,8 @@ public static ATObject ToATObject(this CBORObject obj)
return new Com.Atproto.Server.GetAccountInviteCodesOutput(obj);
case "community.lexicon.bookmarks.getActorBookmarks#GetActorBookmarksOutput":
return new Community.Lexicon.Bookmarks.GetActorBookmarksOutput(obj);
+ case "fm.teal.alpha.feed.getActorFeed#GetActorFeedOutput":
+ return new Fm.Teal.Alpha.Feed.GetActorFeedOutput(obj);
case "app.bsky.feed.getActorFeeds#GetActorFeedsOutput":
return new App.Bsky.Feed.GetActorFeedsOutput(obj);
case "app.bsky.feed.getActorLikes#GetActorLikesOutput":
@@ -317,6 +319,8 @@ public static ATObject ToATObject(this CBORObject obj)
return new Com.Shinolabs.Pinksea.GetOekakiOutput(obj);
case "com.shinolabs.pinksea.getParentForReply#GetParentForReplyOutput":
return new Com.Shinolabs.Pinksea.GetParentForReplyOutput(obj);
+ case "fm.teal.alpha.feed.getPlay#GetPlayOutput":
+ return new Fm.Teal.Alpha.Feed.GetPlayOutput(obj);
case "app.bsky.unspecced.getPopularFeedGenerators#GetPopularFeedGeneratorsOutput":
return new App.Bsky.Unspecced.GetPopularFeedGeneratorsOutput(obj);
case "app.bsky.feed.getPosts#GetPostsOutput":
@@ -595,8 +599,10 @@ public static ATObject ToATObject(this CBORObject obj)
return new Tools.Ozone.Setting.Option(obj);
case "app.bsky.actor.defs#personalDetailsPref":
return new App.Bsky.Actor.PersonalDetailsPref(obj);
- case "fm.teal.alpha.play":
- return new Fm.Teal.Alpha.Play(obj);
+ case "fm.teal.alpha.feed.play":
+ return new Fm.Teal.Alpha.Feed.Play(obj);
+ case "fm.teal.alpha.feed.defs#playView":
+ return new Fm.Teal.Alpha.Feed.PlayView(obj);
case "app.bsky.feed.post":
return new App.Bsky.Feed.Post(obj);
case "fyi.unravel.frontpage.post":
@@ -801,8 +807,6 @@ public static ATObject ToATObject(this CBORObject obj)
return new App.Bsky.Graph.StarterPackViewBasic(obj);
case "app.netlify.aniblue.status":
return new App.Netlify.Aniblue.Status(obj);
- case "xyz.statusphere.status":
- return new Xyz.Statusphere.Status(obj);
case "fm.teal.alpha.actor.status":
return new Fm.Teal.Alpha.Actor.Status(obj);
case "com.atproto.admin.defs#statusAttr":
diff --git a/src/FishyFlip/Lexicon/Fm/Teal/Alpha/Actor/ATProtoActorExtensions.g.cs b/src/FishyFlip/Lexicon/Fm/Teal/Alpha/Actor/ATProtoActorExtensions.g.cs
index d75f36b..84dacc3 100644
--- a/src/FishyFlip/Lexicon/Fm/Teal/Alpha/Actor/ATProtoActorExtensions.g.cs
+++ b/src/FishyFlip/Lexicon/Fm/Teal/Alpha/Actor/ATProtoActorExtensions.g.cs
@@ -157,7 +157,7 @@ public static class ATProtoActorExtensions
///
///
///
- public static Task> CreateStatusAsync(this FishyFlip.ATProtocol atp, DateTime? time, Fm.Teal.Alpha.Play? item, string? rkey = default, bool? validate = default, string? swapCommit = default, CancellationToken cancellationToken = default)
+ public static Task> CreateStatusAsync(this FishyFlip.ATProtocol atp, DateTime? time, Fm.Teal.Alpha.Feed.PlayView? item, string? rkey = default, bool? validate = default, string? swapCommit = default, CancellationToken cancellationToken = default)
{
var record = new FishyFlip.Lexicon.Fm.Teal.Alpha.Actor.Status();
record.Time = time;
diff --git a/src/FishyFlip/Lexicon/Fm/Teal/Alpha/Actor/Status.g.cs b/src/FishyFlip/Lexicon/Fm/Teal/Alpha/Actor/Status.g.cs
index 56d7662..811e0de 100644
--- a/src/FishyFlip/Lexicon/Fm/Teal/Alpha/Actor/Status.g.cs
+++ b/src/FishyFlip/Lexicon/Fm/Teal/Alpha/Actor/Status.g.cs
@@ -17,10 +17,9 @@ public partial class Status : ATObject
///
/// The unix timestamp of when the item was recorded
///
- ///
Union Types:
- /// (fm.teal.alpha.play#record)
+ /// (fm.teal.alpha.feed.defs#playView)
///
- public Status(DateTime? time, Fm.Teal.Alpha.Play? item)
+ public Status(DateTime? time, Fm.Teal.Alpha.Feed.PlayView? item)
{
this.Time = time;
this.Item = item;
@@ -41,7 +40,7 @@ public Status()
public Status(CBORObject obj)
{
if (obj["time"] is not null) this.Time = obj["time"].ToDateTime();
- if (obj["item"] is not null) this.Item = new Fm.Teal.Alpha.Play(obj["item"]);
+ if (obj["item"] is not null) this.Item = new Fm.Teal.Alpha.Feed.PlayView(obj["item"]);
}
///
@@ -53,11 +52,10 @@ public Status(CBORObject obj)
///
/// Gets or sets the item.
- ///
Union Types:
- /// (fm.teal.alpha.play#record)
+ ///
(fm.teal.alpha.feed.defs#playView)
///
[JsonPropertyName("item")]
- public Fm.Teal.Alpha.Play? Item { get; set; }
+ public Fm.Teal.Alpha.Feed.PlayView? Item { get; set; }
///
/// Gets the ATRecord Type.
diff --git a/src/FishyFlip/Lexicon/Fm/Teal/Alpha/ATProtoAlphaExtensions.g.cs b/src/FishyFlip/Lexicon/Fm/Teal/Alpha/Feed/ATProtoFeedExtensions.g.cs
similarity index 72%
rename from src/FishyFlip/Lexicon/Fm/Teal/Alpha/ATProtoAlphaExtensions.g.cs
rename to src/FishyFlip/Lexicon/Fm/Teal/Alpha/Feed/ATProtoFeedExtensions.g.cs
index e588d0e..2c9b38a 100644
--- a/src/FishyFlip/Lexicon/Fm/Teal/Alpha/ATProtoAlphaExtensions.g.cs
+++ b/src/FishyFlip/Lexicon/Fm/Teal/Alpha/Feed/ATProtoFeedExtensions.g.cs
@@ -6,13 +6,13 @@
using FishyFlip.Lexicon.Com.Atproto.Repo;
-namespace FishyFlip.Lexicon.Fm.Teal.Alpha
+namespace FishyFlip.Lexicon.Fm.Teal.Alpha.Feed
{
///
- /// Extension methods for fm.teal.alpha.
+ /// Extension methods for fm.teal.alpha.feed.
///
- public static class ATProtoAlphaExtensions
+ public static class ATProtoFeedExtensions
{
///
@@ -24,9 +24,9 @@ public static class ATProtoAlphaExtensions
///
///
///
- public static Task> CreatePlayAsync(this FishyFlip.ATProtocol atp, Fm.Teal.Alpha.Play record, string? rkey = default, bool? validate = default, string? swapCommit = default, CancellationToken cancellationToken = default)
+ public static Task> CreatePlayAsync(this FishyFlip.ATProtocol atp, Fm.Teal.Alpha.Feed.Play record, string? rkey = default, bool? validate = default, string? swapCommit = default, CancellationToken cancellationToken = default)
{
- return atp.CreateRecordAsync(atp.SessionManager.Session?.Did ?? throw new InvalidOperationException("Session did is required."), "fm.teal.alpha.play", record, rkey, validate, swapCommit, cancellationToken);
+ return atp.CreateRecordAsync(atp.SessionManager.Session?.Did ?? throw new InvalidOperationException("Session did is required."), "fm.teal.alpha.feed.play", record, rkey, validate, swapCommit, cancellationToken);
}
///
@@ -39,14 +39,14 @@ public static class ATProtoAlphaExtensions
///
///
///
- public static Task> CreatePlayAsync(this FishyFlip.ATProtocol atp, string? trackName, string? artistName, string? trackMbId = default, string? recordingMbId = default, long? duration = default, List? artistMbIds = default, string? releaseName = default, string? releaseMbId = default, string? isrc = default, string? originUrl = default, string? musicServiceBaseDomain = default, string? submissionClientAgent = default, DateTime? playedTime = default, string? rkey = default, bool? validate = default, string? swapCommit = default, CancellationToken cancellationToken = default)
+ public static Task> CreatePlayAsync(this FishyFlip.ATProtocol atp, string? trackName, List? artistNames, string? trackMbId = default, string? recordingMbId = default, long? duration = default, List? artistMbIds = default, string? releaseName = default, string? releaseMbId = default, string? isrc = default, string? originUrl = default, string? musicServiceBaseDomain = default, string? submissionClientAgent = default, DateTime? playedTime = default, string? rkey = default, bool? validate = default, string? swapCommit = default, CancellationToken cancellationToken = default)
{
- var record = new FishyFlip.Lexicon.Fm.Teal.Alpha.Play();
+ var record = new FishyFlip.Lexicon.Fm.Teal.Alpha.Feed.Play();
record.TrackName = trackName;
record.TrackMbId = trackMbId;
record.RecordingMbId = recordingMbId;
record.Duration = duration;
- record.ArtistName = artistName;
+ record.ArtistNames = artistNames;
record.ArtistMbIds = artistMbIds;
record.ReleaseName = releaseName;
record.ReleaseMbId = releaseMbId;
@@ -55,7 +55,7 @@ public static class ATProtoAlphaExtensions
record.MusicServiceBaseDomain = musicServiceBaseDomain;
record.SubmissionClientAgent = submissionClientAgent;
record.PlayedTime = playedTime;
- return atp.CreateRecordAsync(atp.SessionManager.Session?.Did ?? throw new InvalidOperationException("Session did is required."), "fm.teal.alpha.play", record, rkey, validate, swapCommit, cancellationToken);
+ return atp.CreateRecordAsync(atp.SessionManager.Session?.Did ?? throw new InvalidOperationException("Session did is required."), "fm.teal.alpha.feed.play", record, rkey, validate, swapCommit, cancellationToken);
}
///
@@ -69,7 +69,7 @@ public static class ATProtoAlphaExtensions
///
public static Task> DeletePlayAsync(this FishyFlip.ATProtocol atp, FishyFlip.Models.ATIdentifier repo, string rkey, string? swapRecord = default, string? swapCommit = default, CancellationToken cancellationToken = default)
{
- return atp.DeleteRecordAsync(repo, "fm.teal.alpha.play", rkey, swapRecord, swapCommit, cancellationToken);
+ return atp.DeleteRecordAsync(repo, "fm.teal.alpha.feed.play", rkey, swapRecord, swapCommit, cancellationToken);
}
///
@@ -83,9 +83,9 @@ public static class ATProtoAlphaExtensions
///
///
///
- public static Task> PutPlayAsync(this FishyFlip.ATProtocol atp, FishyFlip.Models.ATIdentifier repo, string rkey, Fm.Teal.Alpha.Play record, bool? validate = default, string? swapRecord = default, string? swapCommit = default, CancellationToken cancellationToken = default)
+ public static Task> PutPlayAsync(this FishyFlip.ATProtocol atp, FishyFlip.Models.ATIdentifier repo, string rkey, Fm.Teal.Alpha.Feed.Play record, bool? validate = default, string? swapRecord = default, string? swapCommit = default, CancellationToken cancellationToken = default)
{
- return atp.PutRecordAsync(repo, "fm.teal.alpha.play", rkey, record, validate, swapRecord, swapCommit, cancellationToken);
+ return atp.PutRecordAsync(repo, "fm.teal.alpha.feed.play", rkey, record, validate, swapRecord, swapCommit, cancellationToken);
}
///
@@ -99,7 +99,7 @@ public static class ATProtoAlphaExtensions
///
public static Task> ListPlayAsync(this FishyFlip.ATProtocol atp, FishyFlip.Models.ATIdentifier repo, int? limit = 50, string? cursor = default, bool? reverse = default, CancellationToken cancellationToken = default)
{
- return atp.ListRecordsAsync(repo, "fm.teal.alpha.play", limit, cursor, reverse, cancellationToken);
+ return atp.ListRecordsAsync(repo, "fm.teal.alpha.feed.play", limit, cursor, reverse, cancellationToken);
}
///
@@ -112,7 +112,7 @@ public static class ATProtoAlphaExtensions
///
public static Task> ListPlayAsync(this FishyFlip.ATProtocol atp, int? limit = 50, string? cursor = default, bool? reverse = default, CancellationToken cancellationToken = default)
{
- return atp.ListRecordsAsync(atp.SessionManager.Session?.Did ?? throw new InvalidOperationException("Session did is required."), "fm.teal.alpha.play", limit, cursor, reverse, cancellationToken);
+ return atp.ListRecordsAsync(atp.SessionManager.Session?.Did ?? throw new InvalidOperationException("Session did is required."), "fm.teal.alpha.feed.play", limit, cursor, reverse, cancellationToken);
}
///
@@ -125,7 +125,7 @@ public static class ATProtoAlphaExtensions
///
public static Task> GetPlayAsync(this FishyFlip.ATProtocol atp, FishyFlip.Models.ATIdentifier repo, string rkey, string? cid = default, CancellationToken cancellationToken = default)
{
- return atp.GetRecordAsync(repo, "fm.teal.alpha.play", rkey, cid, cancellationToken);
+ return atp.GetRecordAsync(repo, "fm.teal.alpha.feed.play", rkey, cid, cancellationToken);
}
///
@@ -137,7 +137,7 @@ public static class ATProtoAlphaExtensions
///
public static Task> GetPlayAsync(this FishyFlip.ATProtocol atp, string rkey, string? cid = default, CancellationToken cancellationToken = default)
{
- return atp.GetRecordAsync(atp.SessionManager.Session?.Did ?? throw new InvalidOperationException("Session did is required."), "fm.teal.alpha.play", rkey, cid, cancellationToken);
+ return atp.GetRecordAsync(atp.SessionManager.Session?.Did ?? throw new InvalidOperationException("Session did is required."), "fm.teal.alpha.feed.play", rkey, cid, cancellationToken);
}
}
}
diff --git a/src/FishyFlip/Lexicon/Fm/Teal/Alpha/Feed/FeedEndpoints.g.cs b/src/FishyFlip/Lexicon/Fm/Teal/Alpha/Feed/FeedEndpoints.g.cs
new file mode 100644
index 0000000..77f9095
--- /dev/null
+++ b/src/FishyFlip/Lexicon/Fm/Teal/Alpha/Feed/FeedEndpoints.g.cs
@@ -0,0 +1,73 @@
+//
+// This file was generated by FFSourceGen.
+// Do not modify this file.
+
+#nullable enable
+
+namespace FishyFlip.Lexicon.Fm.Teal.Alpha.Feed
+{
+
+ ///
+ /// fm.teal.alpha.feed Endpoint Group.
+ ///
+ public static class FeedEndpoints
+ {
+
+ public const string GetActorFeed = "/xrpc/fm.teal.alpha.feed.getActorFeed";
+
+ public const string GetPlay = "/xrpc/fm.teal.alpha.feed.getPlay";
+
+
+ ///
+ /// Generated endpoint for fm.teal.alpha.feed.getActorFeed
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// Result of
+ public static Task> GetActorFeedAsync (this FishyFlip.ATProtocol atp, string cursor, FishyFlip.Models.ATIdentifier? authorDID = default, CancellationToken cancellationToken = default)
+ {
+ var endpointUrl = GetActorFeed.ToString();
+ endpointUrl += "?";
+ List queryStrings = new();
+ queryStrings.Add("cursor=" + cursor);
+
+ if (authorDID != null)
+ {
+ queryStrings.Add("authorDID=" + authorDID);
+ }
+
+ var headers = new Dictionary();
+ headers.Add(Constants.AtProtoAcceptLabelers, atp.Options.LabelDefinitionsHeader);
+ endpointUrl += string.Join("&", queryStrings);
+ return atp.Get(endpointUrl, atp.Options.SourceGenerationContext.FmTealAlphaFeedGetActorFeedOutput!, cancellationToken, headers);
+ }
+
+
+ ///
+ /// Generated endpoint for fm.teal.alpha.feed.getPlay
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// Result of
+ public static Task> GetPlayAsync (this FishyFlip.ATProtocol atp, FishyFlip.Models.ATIdentifier authorDID, string rkey, CancellationToken cancellationToken = default)
+ {
+ var endpointUrl = GetPlay.ToString();
+ endpointUrl += "?";
+ List queryStrings = new();
+ queryStrings.Add("authorDID=" + authorDID);
+
+ queryStrings.Add("rkey=" + rkey);
+
+ var headers = new Dictionary();
+ headers.Add(Constants.AtProtoAcceptLabelers, atp.Options.LabelDefinitionsHeader);
+ endpointUrl += string.Join("&", queryStrings);
+ return atp.Get(endpointUrl, atp.Options.SourceGenerationContext.FmTealAlphaFeedGetPlayOutput!, cancellationToken, headers);
+ }
+
+ }
+}
+
diff --git a/src/FishyFlip/Lexicon/Fm/Teal/Alpha/Feed/FeedExtensions.g.cs b/src/FishyFlip/Lexicon/Fm/Teal/Alpha/Feed/FeedExtensions.g.cs
new file mode 100644
index 0000000..57b9dd5
--- /dev/null
+++ b/src/FishyFlip/Lexicon/Fm/Teal/Alpha/Feed/FeedExtensions.g.cs
@@ -0,0 +1,153 @@
+//
+// This file was generated by FFSourceGen.
+// Do not modify this file.
+
+#nullable enable
+
+using FishyFlip.Lexicon.Com.Atproto.Repo;
+
+namespace FishyFlip.Lexicon
+{
+
+ ///
+ /// Extension methods for fm.teal.alpha.feed.
+ ///
+ public static class FmTealAlphaFeedExtensions
+ {
+
+ ///
+ /// Create a Play record.
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static Task> CreatePlayAsync(this FishyFlip.Lexicon.Fm.Teal.Alpha.Feed.FmTealAlphaFeed atp, FishyFlip.Lexicon.Fm.Teal.Alpha.Feed.Play record, string? rkey = default, bool? validate = default, string? swapCommit = default, CancellationToken cancellationToken = default)
+ {
+ return atp.ATProtocol.CreateRecordAsync(atp.ATProtocol.SessionManager.Session?.Did ?? throw new InvalidOperationException("Session did is required."), "fm.teal.alpha.feed.play", record, rkey, validate, swapCommit, cancellationToken);
+ }
+
+ ///
+ /// Create a Play record.
+ ///
+ ///
+ /// The name of the track
+ /// Array of artist names in order of original appearance.
+ /// The Musicbrainz ID of the track
+ /// The Musicbrainz recording ID of the track
+ /// The length of the track in seconds
+ /// Array of Musicbrainz artist IDs
+ /// The name of the release/album
+ /// The Musicbrainz release ID
+ /// The ISRC code associated with the recording
+ /// The URL associated with this track
+ /// The base domain of the music service. e.g. music.apple.com, tidal.com, spotify.com. Defaults to 'local' if not provided.
+ /// A user-agent style string specifying the user agent. e.g. tealtracker/0.0.1b (Linux; Android 13; SM-A715F). Defaults to 'manual/unknown' if not provided.
+ /// The unix timestamp of when the track was played
+ ///
+ ///
+ ///
+ ///
+ public static Task> CreatePlayAsync(this FishyFlip.Lexicon.Fm.Teal.Alpha.Feed.FmTealAlphaFeed atp, string? trackName, List? artistNames, string? trackMbId = default, string? recordingMbId = default, long? duration = default, List? artistMbIds = default, string? releaseName = default, string? releaseMbId = default, string? isrc = default, string? originUrl = default, string? musicServiceBaseDomain = default, string? submissionClientAgent = default, DateTime? playedTime = default, string? rkey = default, bool? validate = default, string? swapCommit = default, CancellationToken cancellationToken = default)
+ {
+ var record = new FishyFlip.Lexicon.Fm.Teal.Alpha.Feed.Play();
+ record.TrackName = trackName;
+ record.TrackMbId = trackMbId;
+ record.RecordingMbId = recordingMbId;
+ record.Duration = duration;
+ record.ArtistNames = artistNames;
+ record.ArtistMbIds = artistMbIds;
+ record.ReleaseName = releaseName;
+ record.ReleaseMbId = releaseMbId;
+ record.Isrc = isrc;
+ record.OriginUrl = originUrl;
+ record.MusicServiceBaseDomain = musicServiceBaseDomain;
+ record.SubmissionClientAgent = submissionClientAgent;
+ record.PlayedTime = playedTime;
+ return atp.ATProtocol.CreateRecordAsync(atp.ATProtocol.SessionManager.Session?.Did ?? throw new InvalidOperationException("Session did is required."), "fm.teal.alpha.feed.play", record, rkey, validate, swapCommit, cancellationToken);
+ }
+
+ ///
+ /// Delete a Play record.
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static Task> DeletePlayAsync(this FishyFlip.Lexicon.Fm.Teal.Alpha.Feed.FmTealAlphaFeed atp, string rkey, string? swapRecord = default, string? swapCommit = default, CancellationToken cancellationToken = default)
+ {
+ return atp.ATProtocol.DeleteRecordAsync(atp.ATProtocol.SessionManager.Session?.Did ?? throw new InvalidOperationException("Session did is required."), "fm.teal.alpha.feed.play", rkey, swapRecord, swapCommit, cancellationToken);
+ }
+
+ ///
+ /// Put a Play record.
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static Task> PutPlayAsync(this FishyFlip.Lexicon.Fm.Teal.Alpha.Feed.FmTealAlphaFeed atp, string rkey, FishyFlip.Lexicon.Fm.Teal.Alpha.Feed.Play record, bool? validate = default, string? swapRecord = default, string? swapCommit = default, CancellationToken cancellationToken = default)
+ {
+ return atp.ATProtocol.PutRecordAsync(atp.ATProtocol.SessionManager.Session?.Did ?? throw new InvalidOperationException("Session did is required."), "fm.teal.alpha.feed.play", rkey, record, validate, swapRecord, swapCommit, cancellationToken);
+ }
+
+ ///
+ /// List Play records.
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static Task> ListPlayAsync(this FishyFlip.Lexicon.Fm.Teal.Alpha.Feed.FmTealAlphaFeed atp, int? limit = 50, string? cursor = default, bool? reverse = default, CancellationToken cancellationToken = default)
+ {
+ return atp.ATProtocol.ListRecordsAsync(atp.ATProtocol.SessionManager.Session?.Did ?? throw new InvalidOperationException("Session did is required."), "fm.teal.alpha.feed.play", limit, cursor, reverse, cancellationToken);
+ }
+
+ ///
+ /// List Play records.
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static Task> ListPlayAsync(this FishyFlip.Lexicon.Fm.Teal.Alpha.Feed.FmTealAlphaFeed atp, FishyFlip.Models.ATIdentifier repo, int? limit = 50, string? cursor = default, bool? reverse = default, CancellationToken cancellationToken = default)
+ {
+ return atp.ATProtocol.ListRecordsAsync(repo, "fm.teal.alpha.feed.play", limit, cursor, reverse, cancellationToken);
+ }
+
+ ///
+ /// Get Play records.
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static Task> GetPlayAsync(this FishyFlip.Lexicon.Fm.Teal.Alpha.Feed.FmTealAlphaFeed atp, string rkey, string? cid = default, CancellationToken cancellationToken = default)
+ {
+ return atp.ATProtocol.GetRecordAsync(atp.ATProtocol.SessionManager.Session?.Did ?? throw new InvalidOperationException("Session did is required."), "fm.teal.alpha.feed.play", rkey, cid, cancellationToken);
+ }
+
+ ///
+ /// Get Play records.
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static Task> GetPlayAsync(this FishyFlip.Lexicon.Fm.Teal.Alpha.Feed.FmTealAlphaFeed atp, FishyFlip.Models.ATIdentifier repo, string rkey, string? cid = default, CancellationToken cancellationToken = default)
+ {
+ return atp.ATProtocol.GetRecordAsync(repo, "fm.teal.alpha.feed.play", rkey, cid, cancellationToken);
+ }
+ }
+}
+
diff --git a/src/FishyFlip/Lexicon/Fm/Teal/Alpha/Feed/FmTealAlphaFeed.g.cs b/src/FishyFlip/Lexicon/Fm/Teal/Alpha/Feed/FmTealAlphaFeed.g.cs
new file mode 100644
index 0000000..b07e27e
--- /dev/null
+++ b/src/FishyFlip/Lexicon/Fm/Teal/Alpha/Feed/FmTealAlphaFeed.g.cs
@@ -0,0 +1,58 @@
+//
+// This file was generated by FFSourceGen.
+// Do not modify this file.
+
+#nullable enable
+
+namespace FishyFlip.Lexicon.Fm.Teal.Alpha.Feed
+{
+
+ ///
+ /// fm.teal.alpha.feed Endpoint Class.
+ ///
+ public sealed class FmTealAlphaFeed
+ {
+
+ private ATProtocol atp;
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// .
+ internal FmTealAlphaFeed(ATProtocol atp)
+ {
+ this.atp = atp;
+ }
+
+ ///
+ /// Gets the ATProtocol.
+ ///
+ internal ATProtocol ATProtocol => this.atp;
+
+
+ ///
+ /// Generated endpoint for fm.teal.alpha.feed.getActorFeed
+ ///
+ ///
+ ///
+ ///
+ public Task> GetActorFeedAsync (string cursor, FishyFlip.Models.ATIdentifier? authorDID = default, CancellationToken cancellationToken = default)
+ {
+ return atp.GetActorFeedAsync(cursor, authorDID, cancellationToken);
+ }
+
+
+ ///
+ /// Generated endpoint for fm.teal.alpha.feed.getPlay
+ ///
+ ///
+ ///
+ ///
+ public Task> GetPlayAsync (FishyFlip.Models.ATIdentifier authorDID, string rkey, CancellationToken cancellationToken = default)
+ {
+ return atp.GetPlayAsync(authorDID, rkey, cancellationToken);
+ }
+
+ }
+}
+
diff --git a/src/FishyFlip/Lexicon/Fm/Teal/Alpha/Feed/GetActorFeedOutput.g.cs b/src/FishyFlip/Lexicon/Fm/Teal/Alpha/Feed/GetActorFeedOutput.g.cs
new file mode 100644
index 0000000..26eaece
--- /dev/null
+++ b/src/FishyFlip/Lexicon/Fm/Teal/Alpha/Feed/GetActorFeedOutput.g.cs
@@ -0,0 +1,64 @@
+//
+// This file was generated by FFSourceGen.
+// Do not modify this file.
+
+#nullable enable
+
+namespace FishyFlip.Lexicon.Fm.Teal.Alpha.Feed
+{
+ public partial class GetActorFeedOutput : ATObject
+ {
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ ///
+ public GetActorFeedOutput(List? plays = default)
+ {
+ this.Plays = plays;
+ }
+
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ public GetActorFeedOutput()
+ {
+ }
+
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ public GetActorFeedOutput(CBORObject obj)
+ {
+ if (obj["plays"] is not null) this.Plays = obj["plays"].Values.Select(n =>new Fm.Teal.Alpha.Feed.PlayView(n)).ToList();
+ }
+
+ ///
+ /// Gets or sets the plays.
+ ///
+ [JsonPropertyName("plays")]
+ [JsonRequired]
+ public List? Plays { get; set; }
+
+ ///
+ /// Gets the ATRecord Type.
+ ///
+ [JsonPropertyName("$type")]
+ public override string Type => "fm.teal.alpha.feed.getActorFeed#GetActorFeedOutput";
+
+ public const string RecordType = "fm.teal.alpha.feed.getActorFeed#GetActorFeedOutput";
+
+ public override string ToJson()
+ {
+ return JsonSerializer.Serialize(this, (JsonTypeInfo)SourceGenerationContext.Default.FmTealAlphaFeedGetActorFeedOutput)!;
+ }
+
+ public static GetActorFeedOutput FromJson(string json)
+ {
+ return JsonSerializer.Deserialize(json, (JsonTypeInfo)SourceGenerationContext.Default.FmTealAlphaFeedGetActorFeedOutput)!;
+ }
+ }
+}
+
diff --git a/src/FishyFlip/Lexicon/Fm/Teal/Alpha/Feed/GetPlayOutput.g.cs b/src/FishyFlip/Lexicon/Fm/Teal/Alpha/Feed/GetPlayOutput.g.cs
new file mode 100644
index 0000000..9f75d5a
--- /dev/null
+++ b/src/FishyFlip/Lexicon/Fm/Teal/Alpha/Feed/GetPlayOutput.g.cs
@@ -0,0 +1,67 @@
+//
+// This file was generated by FFSourceGen.
+// Do not modify this file.
+
+#nullable enable
+
+namespace FishyFlip.Lexicon.Fm.Teal.Alpha.Feed
+{
+ public partial class GetPlayOutput : ATObject
+ {
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ ///
+ /// (fm.teal.alpha.feed.defs#playView)
+ ///
+ public GetPlayOutput(Fm.Teal.Alpha.Feed.PlayView? play = default)
+ {
+ this.Play = play;
+ }
+
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ public GetPlayOutput()
+ {
+ }
+
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ public GetPlayOutput(CBORObject obj)
+ {
+ if (obj["play"] is not null) this.Play = new Fm.Teal.Alpha.Feed.PlayView(obj["play"]);
+ }
+
+ ///
+ /// Gets or sets the play.
+ ///
(fm.teal.alpha.feed.defs#playView)
+ ///
+ [JsonPropertyName("play")]
+ [JsonRequired]
+ public Fm.Teal.Alpha.Feed.PlayView? Play { get; set; }
+
+ ///
+ /// Gets the ATRecord Type.
+ ///
+ [JsonPropertyName("$type")]
+ public override string Type => "fm.teal.alpha.feed.getPlay#GetPlayOutput";
+
+ public const string RecordType = "fm.teal.alpha.feed.getPlay#GetPlayOutput";
+
+ public override string ToJson()
+ {
+ return JsonSerializer.Serialize(this, (JsonTypeInfo)SourceGenerationContext.Default.FmTealAlphaFeedGetPlayOutput)!;
+ }
+
+ public static GetPlayOutput FromJson(string json)
+ {
+ return JsonSerializer.Deserialize(json, (JsonTypeInfo)SourceGenerationContext.Default.FmTealAlphaFeedGetPlayOutput)!;
+ }
+ }
+}
+
diff --git a/src/FishyFlip/Lexicon/Fm/Teal/Alpha/Play.g.cs b/src/FishyFlip/Lexicon/Fm/Teal/Alpha/Feed/Play.g.cs
similarity index 82%
rename from src/FishyFlip/Lexicon/Fm/Teal/Alpha/Play.g.cs
rename to src/FishyFlip/Lexicon/Fm/Teal/Alpha/Feed/Play.g.cs
index 39145cb..6729fbd 100644
--- a/src/FishyFlip/Lexicon/Fm/Teal/Alpha/Play.g.cs
+++ b/src/FishyFlip/Lexicon/Fm/Teal/Alpha/Feed/Play.g.cs
@@ -4,7 +4,7 @@
#nullable enable
-namespace FishyFlip.Lexicon.Fm.Teal.Alpha
+namespace FishyFlip.Lexicon.Fm.Teal.Alpha.Feed
{
public partial class Play : ATObject
{
@@ -13,7 +13,7 @@ public partial class Play : ATObject
/// Initializes a new instance of the class.
///
/// The name of the track
- /// The name of the artist
+ /// Array of artist names in order of original appearance.
/// The Musicbrainz ID of the track
/// The Musicbrainz recording ID of the track
/// The length of the track in seconds
@@ -25,13 +25,13 @@ public partial class Play : ATObject
/// The base domain of the music service. e.g. music.apple.com, tidal.com, spotify.com. Defaults to 'local' if not provided.
/// A user-agent style string specifying the user agent. e.g. tealtracker/0.0.1b (Linux; Android 13; SM-A715F). Defaults to 'manual/unknown' if not provided.
/// The unix timestamp of when the track was played
- public Play(string? trackName, string? artistName, string? trackMbId = default, string? recordingMbId = default, long? duration = default, List? artistMbIds = default, string? releaseName = default, string? releaseMbId = default, string? isrc = default, string? originUrl = default, string? musicServiceBaseDomain = default, string? submissionClientAgent = default, DateTime? playedTime = default)
+ public Play(string? trackName, List? artistNames, string? trackMbId = default, string? recordingMbId = default, long? duration = default, List? artistMbIds = default, string? releaseName = default, string? releaseMbId = default, string? isrc = default, string? originUrl = default, string? musicServiceBaseDomain = default, string? submissionClientAgent = default, DateTime? playedTime = default)
{
this.TrackName = trackName;
this.TrackMbId = trackMbId;
this.RecordingMbId = recordingMbId;
this.Duration = duration;
- this.ArtistName = artistName;
+ this.ArtistNames = artistNames;
this.ArtistMbIds = artistMbIds;
this.ReleaseName = releaseName;
this.ReleaseMbId = releaseMbId;
@@ -60,7 +60,7 @@ public Play(CBORObject obj)
if (obj["trackMbId"] is not null) this.TrackMbId = obj["trackMbId"].AsString();
if (obj["recordingMbId"] is not null) this.RecordingMbId = obj["recordingMbId"].AsString();
if (obj["duration"] is not null) this.Duration = obj["duration"].AsInt64Value();
- if (obj["artistName"] is not null) this.ArtistName = obj["artistName"].AsString();
+ if (obj["artistNames"] is not null) this.ArtistNames = obj["artistNames"].Values.Select(n =>n.AsString()).ToList();
if (obj["artistMbIds"] is not null) this.ArtistMbIds = obj["artistMbIds"].Values.Select(n =>n.AsString()).ToList();
if (obj["releaseName"] is not null) this.ReleaseName = obj["releaseName"].AsString();
if (obj["releaseMbId"] is not null) this.ReleaseMbId = obj["releaseMbId"].AsString();
@@ -100,11 +100,11 @@ public Play(CBORObject obj)
public long? Duration { get; set; }
///
- /// Gets or sets the artistName.
- ///
The name of the artist
+ /// Gets or sets the artistNames.
+ ///
Array of artist names in order of original appearance.
///
- [JsonPropertyName("artistName")]
- public string? ArtistName { get; set; }
+ [JsonPropertyName("artistNames")]
+ public List? ArtistNames { get; set; }
///
/// Gets or sets the artistMbIds.
@@ -166,18 +166,18 @@ public Play(CBORObject obj)
/// Gets the ATRecord Type.
///
[JsonPropertyName("$type")]
- public override string Type => "fm.teal.alpha.play";
+ public override string Type => "fm.teal.alpha.feed.play";
- public const string RecordType = "fm.teal.alpha.play";
+ public const string RecordType = "fm.teal.alpha.feed.play";
public override string ToJson()
{
- return JsonSerializer.Serialize(this, (JsonTypeInfo)SourceGenerationContext.Default.FmTealAlphaPlay)!;
+ return JsonSerializer.Serialize(this, (JsonTypeInfo)SourceGenerationContext.Default.FmTealAlphaFeedPlay)!;
}
public static Play FromJson(string json)
{
- return JsonSerializer.Deserialize(json, (JsonTypeInfo)SourceGenerationContext.Default.FmTealAlphaPlay)!;
+ return JsonSerializer.Deserialize(json, (JsonTypeInfo)SourceGenerationContext.Default.FmTealAlphaFeedPlay)!;
}
}
}
diff --git a/src/FishyFlip/Lexicon/Fm/Teal/Alpha/Feed/PlayView.g.cs b/src/FishyFlip/Lexicon/Fm/Teal/Alpha/Feed/PlayView.g.cs
new file mode 100644
index 0000000..358975d
--- /dev/null
+++ b/src/FishyFlip/Lexicon/Fm/Teal/Alpha/Feed/PlayView.g.cs
@@ -0,0 +1,186 @@
+//
+// This file was generated by FFSourceGen.
+// Do not modify this file.
+
+#nullable enable
+
+namespace FishyFlip.Lexicon.Fm.Teal.Alpha.Feed
+{
+ public partial class PlayView : ATObject
+ {
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The name of the track
+ /// The Musicbrainz ID of the track
+ /// The Musicbrainz recording ID of the track
+ /// The length of the track in seconds
+ /// Array of artist names in order of original appearance.
+ /// Array of Musicbrainz artist IDs
+ /// The name of the release/album
+ /// The Musicbrainz release ID
+ /// The ISRC code associated with the recording
+ /// The URL associated with this track
+ /// The base domain of the music service. e.g. music.apple.com, tidal.com, spotify.com. Defaults to 'local' if not provided.
+ /// A user-agent style string specifying the user agent. e.g. tealtracker/0.0.1b (Linux; Android 13; SM-A715F). Defaults to 'manual/unknown' if not provided.
+ /// The unix timestamp of when the track was played
+ public PlayView(string? trackName = default, string? trackMbId = default, string? recordingMbId = default, long? duration = default, List? artistNames = default, List? artistMbIds = default, string? releaseName = default, string? releaseMbId = default, string? isrc = default, string? originUrl = default, string? musicServiceBaseDomain = default, string? submissionClientAgent = default, DateTime? playedTime = default)
+ {
+ this.TrackName = trackName;
+ this.TrackMbId = trackMbId;
+ this.RecordingMbId = recordingMbId;
+ this.Duration = duration;
+ this.ArtistNames = artistNames;
+ this.ArtistMbIds = artistMbIds;
+ this.ReleaseName = releaseName;
+ this.ReleaseMbId = releaseMbId;
+ this.Isrc = isrc;
+ this.OriginUrl = originUrl;
+ this.MusicServiceBaseDomain = musicServiceBaseDomain;
+ this.SubmissionClientAgent = submissionClientAgent;
+ this.PlayedTime = playedTime;
+ }
+
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ public PlayView()
+ {
+ }
+
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ public PlayView(CBORObject obj)
+ {
+ if (obj["trackName"] is not null) this.TrackName = obj["trackName"].AsString();
+ if (obj["trackMbId"] is not null) this.TrackMbId = obj["trackMbId"].AsString();
+ if (obj["recordingMbId"] is not null) this.RecordingMbId = obj["recordingMbId"].AsString();
+ if (obj["duration"] is not null) this.Duration = obj["duration"].AsInt64Value();
+ if (obj["artistNames"] is not null) this.ArtistNames = obj["artistNames"].Values.Select(n =>n.AsString()).ToList();
+ if (obj["artistMbIds"] is not null) this.ArtistMbIds = obj["artistMbIds"].Values.Select(n =>n.AsString()).ToList();
+ if (obj["releaseName"] is not null) this.ReleaseName = obj["releaseName"].AsString();
+ if (obj["releaseMbId"] is not null) this.ReleaseMbId = obj["releaseMbId"].AsString();
+ if (obj["isrc"] is not null) this.Isrc = obj["isrc"].AsString();
+ if (obj["originUrl"] is not null) this.OriginUrl = obj["originUrl"].AsString();
+ if (obj["musicServiceBaseDomain"] is not null) this.MusicServiceBaseDomain = obj["musicServiceBaseDomain"].AsString();
+ if (obj["submissionClientAgent"] is not null) this.SubmissionClientAgent = obj["submissionClientAgent"].AsString();
+ if (obj["playedTime"] is not null) this.PlayedTime = obj["playedTime"].ToDateTime();
+ }
+
+ ///
+ /// Gets or sets the trackName.
+ ///
The name of the track
+ ///
+ [JsonPropertyName("trackName")]
+ [JsonRequired]
+ public string? TrackName { get; set; }
+
+ ///
+ /// Gets or sets the trackMbId.
+ ///
The Musicbrainz ID of the track
+ ///
+ [JsonPropertyName("trackMbId")]
+ public string? TrackMbId { get; set; }
+
+ ///
+ /// Gets or sets the recordingMbId.
+ ///
The Musicbrainz recording ID of the track
+ ///
+ [JsonPropertyName("recordingMbId")]
+ public string? RecordingMbId { get; set; }
+
+ ///
+ /// Gets or sets the duration.
+ ///
The length of the track in seconds
+ ///
+ [JsonPropertyName("duration")]
+ public long? Duration { get; set; }
+
+ ///
+ /// Gets or sets the artistNames.
+ ///
Array of artist names in order of original appearance.
+ ///
+ [JsonPropertyName("artistNames")]
+ [JsonRequired]
+ public List? ArtistNames { get; set; }
+
+ ///
+ /// Gets or sets the artistMbIds.
+ ///
Array of Musicbrainz artist IDs
+ ///
+ [JsonPropertyName("artistMbIds")]
+ public List? ArtistMbIds { get; set; }
+
+ ///
+ /// Gets or sets the releaseName.
+ ///
The name of the release/album
+ ///
+ [JsonPropertyName("releaseName")]
+ public string? ReleaseName { get; set; }
+
+ ///
+ /// Gets or sets the releaseMbId.
+ ///
The Musicbrainz release ID
+ ///
+ [JsonPropertyName("releaseMbId")]
+ public string? ReleaseMbId { get; set; }
+
+ ///
+ /// Gets or sets the isrc.
+ ///
The ISRC code associated with the recording
+ ///
+ [JsonPropertyName("isrc")]
+ public string? Isrc { get; set; }
+
+ ///
+ /// Gets or sets the originUrl.
+ ///
The URL associated with this track
+ ///
+ [JsonPropertyName("originUrl")]
+ public string? OriginUrl { get; set; }
+
+ ///
+ /// Gets or sets the musicServiceBaseDomain.
+ ///
The base domain of the music service. e.g. music.apple.com, tidal.com, spotify.com. Defaults to 'local' if not provided.
+ ///
+ [JsonPropertyName("musicServiceBaseDomain")]
+ public string? MusicServiceBaseDomain { get; set; }
+
+ ///
+ /// Gets or sets the submissionClientAgent.
+ ///
A user-agent style string specifying the user agent. e.g. tealtracker/0.0.1b (Linux; Android 13; SM-A715F). Defaults to 'manual/unknown' if not provided.
+ ///
+ [JsonPropertyName("submissionClientAgent")]
+ public string? SubmissionClientAgent { get; set; }
+
+ ///
+ /// Gets or sets the playedTime.
+ ///
The unix timestamp of when the track was played
+ ///
+ [JsonPropertyName("playedTime")]
+ public DateTime? PlayedTime { get; set; }
+
+ ///
+ /// Gets the ATRecord Type.
+ ///
+ [JsonPropertyName("$type")]
+ public override string Type => "fm.teal.alpha.feed.defs#playView";
+
+ public const string RecordType = "fm.teal.alpha.feed.defs#playView";
+
+ public override string ToJson()
+ {
+ return JsonSerializer.Serialize(this, (JsonTypeInfo)SourceGenerationContext.Default.FmTealAlphaFeedPlayView)!;
+ }
+
+ public static PlayView FromJson(string json)
+ {
+ return JsonSerializer.Deserialize(json, (JsonTypeInfo)SourceGenerationContext.Default.FmTealAlphaFeedPlayView)!;
+ }
+ }
+}
+
diff --git a/src/FishyFlip/Lexicon/SourceGenerationContext.g.cs b/src/FishyFlip/Lexicon/SourceGenerationContext.g.cs
index fed5ed4..ca84e17 100644
--- a/src/FishyFlip/Lexicon/SourceGenerationContext.g.cs
+++ b/src/FishyFlip/Lexicon/SourceGenerationContext.g.cs
@@ -235,6 +235,8 @@ namespace FishyFlip.Lexicon
[JsonSerializable(typeof(List), TypeInfoPropertyName = "ListComAtprotoServerGetAccountInviteCodesOutput")]
[JsonSerializable(typeof(FishyFlip.Lexicon.Community.Lexicon.Bookmarks.GetActorBookmarksOutput), TypeInfoPropertyName = "CommunityLexiconBookmarksGetActorBookmarksOutput")]
[JsonSerializable(typeof(List), TypeInfoPropertyName = "ListCommunityLexiconBookmarksGetActorBookmarksOutput")]
+ [JsonSerializable(typeof(FishyFlip.Lexicon.Fm.Teal.Alpha.Feed.GetActorFeedOutput), TypeInfoPropertyName = "FmTealAlphaFeedGetActorFeedOutput")]
+ [JsonSerializable(typeof(List), TypeInfoPropertyName = "ListFmTealAlphaFeedGetActorFeedOutput")]
[JsonSerializable(typeof(FishyFlip.Lexicon.App.Bsky.Feed.GetActorFeedsOutput), TypeInfoPropertyName = "AppBskyFeedGetActorFeedsOutput")]
[JsonSerializable(typeof(List), TypeInfoPropertyName = "ListAppBskyFeedGetActorFeedsOutput")]
[JsonSerializable(typeof(FishyFlip.Lexicon.App.Bsky.Feed.GetActorLikesOutput), TypeInfoPropertyName = "AppBskyFeedGetActorLikesOutput")]
@@ -313,6 +315,8 @@ namespace FishyFlip.Lexicon
[JsonSerializable(typeof(List), TypeInfoPropertyName = "ListComShinolabsPinkseaGetOekakiOutput")]
[JsonSerializable(typeof(FishyFlip.Lexicon.Com.Shinolabs.Pinksea.GetParentForReplyOutput), TypeInfoPropertyName = "ComShinolabsPinkseaGetParentForReplyOutput")]
[JsonSerializable(typeof(List), TypeInfoPropertyName = "ListComShinolabsPinkseaGetParentForReplyOutput")]
+ [JsonSerializable(typeof(FishyFlip.Lexicon.Fm.Teal.Alpha.Feed.GetPlayOutput), TypeInfoPropertyName = "FmTealAlphaFeedGetPlayOutput")]
+ [JsonSerializable(typeof(List), TypeInfoPropertyName = "ListFmTealAlphaFeedGetPlayOutput")]
[JsonSerializable(typeof(FishyFlip.Lexicon.App.Bsky.Unspecced.GetPopularFeedGeneratorsOutput), TypeInfoPropertyName = "AppBskyUnspeccedGetPopularFeedGeneratorsOutput")]
[JsonSerializable(typeof(List), TypeInfoPropertyName = "ListAppBskyUnspeccedGetPopularFeedGeneratorsOutput")]
[JsonSerializable(typeof(FishyFlip.Lexicon.App.Bsky.Feed.GetPostsOutput), TypeInfoPropertyName = "AppBskyFeedGetPostsOutput")]
@@ -591,8 +595,10 @@ namespace FishyFlip.Lexicon
[JsonSerializable(typeof(List), TypeInfoPropertyName = "ListToolsOzoneSettingOption")]
[JsonSerializable(typeof(FishyFlip.Lexicon.App.Bsky.Actor.PersonalDetailsPref), TypeInfoPropertyName = "AppBskyActorPersonalDetailsPref")]
[JsonSerializable(typeof(List), TypeInfoPropertyName = "ListAppBskyActorPersonalDetailsPref")]
- [JsonSerializable(typeof(FishyFlip.Lexicon.Fm.Teal.Alpha.Play), TypeInfoPropertyName = "FmTealAlphaPlay")]
- [JsonSerializable(typeof(List), TypeInfoPropertyName = "ListFmTealAlphaPlay")]
+ [JsonSerializable(typeof(FishyFlip.Lexicon.Fm.Teal.Alpha.Feed.Play), TypeInfoPropertyName = "FmTealAlphaFeedPlay")]
+ [JsonSerializable(typeof(List), TypeInfoPropertyName = "ListFmTealAlphaFeedPlay")]
+ [JsonSerializable(typeof(FishyFlip.Lexicon.Fm.Teal.Alpha.Feed.PlayView), TypeInfoPropertyName = "FmTealAlphaFeedPlayView")]
+ [JsonSerializable(typeof(List), TypeInfoPropertyName = "ListFmTealAlphaFeedPlayView")]
[JsonSerializable(typeof(FishyFlip.Lexicon.App.Bsky.Feed.Post), TypeInfoPropertyName = "AppBskyFeedPost")]
[JsonSerializable(typeof(List), TypeInfoPropertyName = "ListAppBskyFeedPost")]
[JsonSerializable(typeof(FishyFlip.Lexicon.Fyi.Unravel.Frontpage.Post), TypeInfoPropertyName = "FyiUnravelFrontpagePost")]
@@ -797,8 +803,6 @@ namespace FishyFlip.Lexicon
[JsonSerializable(typeof(List), TypeInfoPropertyName = "ListAppBskyGraphStarterPackViewBasic")]
[JsonSerializable(typeof(FishyFlip.Lexicon.App.Netlify.Aniblue.Status), TypeInfoPropertyName = "AppNetlifyAniblueStatus")]
[JsonSerializable(typeof(List), TypeInfoPropertyName = "ListAppNetlifyAniblueStatus")]
- [JsonSerializable(typeof(FishyFlip.Lexicon.Xyz.Statusphere.Status), TypeInfoPropertyName = "XyzStatusphereStatus")]
- [JsonSerializable(typeof(List), TypeInfoPropertyName = "ListXyzStatusphereStatus")]
[JsonSerializable(typeof(FishyFlip.Lexicon.Fm.Teal.Alpha.Actor.Status), TypeInfoPropertyName = "FmTealAlphaActorStatus")]
[JsonSerializable(typeof(List), TypeInfoPropertyName = "ListFmTealAlphaActorStatus")]
[JsonSerializable(typeof(FishyFlip.Lexicon.Com.Atproto.Admin.StatusAttr), TypeInfoPropertyName = "ComAtprotoAdminStatusAttr")]
diff --git a/src/FishyFlip/Lexicon/Xyz/Statusphere/ATProtoStatusphereExtensions.g.cs b/src/FishyFlip/Lexicon/Xyz/Statusphere/ATProtoStatusphereExtensions.g.cs
deleted file mode 100644
index e088412..0000000
--- a/src/FishyFlip/Lexicon/Xyz/Statusphere/ATProtoStatusphereExtensions.g.cs
+++ /dev/null
@@ -1,133 +0,0 @@
-//
-// This file was generated by FFSourceGen.
-// Do not modify this file.
-
-#nullable enable
-
-using FishyFlip.Lexicon.Com.Atproto.Repo;
-
-namespace FishyFlip.Lexicon.Xyz.Statusphere
-{
-
- ///
- /// Extension methods for xyz.statusphere.
- ///
- public static class ATProtoStatusphereExtensions
- {
-
- ///
- /// Create a Status record.
- ///
- ///
- ///
- ///
- ///
- ///
- ///
- public static Task> CreateStatusAsync(this FishyFlip.ATProtocol atp, Xyz.Statusphere.Status record, string? rkey = default, bool? validate = default, string? swapCommit = default, CancellationToken cancellationToken = default)
- {
- return atp.CreateRecordAsync(atp.SessionManager.Session?.Did ?? throw new InvalidOperationException("Session did is required."), "xyz.statusphere.status", record, rkey, validate, swapCommit, cancellationToken);
- }
-
- ///
- /// Create a Status record.
- ///
- ///
- ///
- ///
- ///
- ///
- ///
- ///
- public static Task> CreateStatusAsync(this FishyFlip.ATProtocol atp, string? status, DateTime? createdAt = default, string? rkey = default, bool? validate = default, string? swapCommit = default, CancellationToken cancellationToken = default)
- {
- var record = new FishyFlip.Lexicon.Xyz.Statusphere.Status();
- record.StatusValue = status;
- record.CreatedAt = createdAt ?? DateTime.UtcNow;
- return atp.CreateRecordAsync(atp.SessionManager.Session?.Did ?? throw new InvalidOperationException("Session did is required."), "xyz.statusphere.status", record, rkey, validate, swapCommit, cancellationToken);
- }
-
- ///
- /// Delete a Status record.
- ///
- ///
- ///
- ///
- ///
- ///
- ///
- public static Task> DeleteStatusAsync(this FishyFlip.ATProtocol atp, FishyFlip.Models.ATIdentifier repo, string rkey, string? swapRecord = default, string? swapCommit = default, CancellationToken cancellationToken = default)
- {
- return atp.DeleteRecordAsync(repo, "xyz.statusphere.status", rkey, swapRecord, swapCommit, cancellationToken);
- }
-
- ///
- /// Put a Status record.
- ///
- ///
- ///
- ///
- ///
- ///
- ///
- ///
- ///
- public static Task> PutStatusAsync(this FishyFlip.ATProtocol atp, FishyFlip.Models.ATIdentifier repo, string rkey, Xyz.Statusphere.Status record, bool? validate = default, string? swapRecord = default, string? swapCommit = default, CancellationToken cancellationToken = default)
- {
- return atp.PutRecordAsync(repo, "xyz.statusphere.status", rkey, record, validate, swapRecord, swapCommit, cancellationToken);
- }
-
- ///
- /// List Status records.
- ///
- ///
- ///
- ///
- ///
- ///
- ///
- public static Task> ListStatusAsync(this FishyFlip.ATProtocol atp, FishyFlip.Models.ATIdentifier repo, int? limit = 50, string? cursor = default, bool? reverse = default, CancellationToken cancellationToken = default)
- {
- return atp.ListRecordsAsync(repo, "xyz.statusphere.status", limit, cursor, reverse, cancellationToken);
- }
-
- ///
- /// List Status records.
- ///
- ///
- ///
- ///
- ///
- ///
- public static Task> ListStatusAsync(this FishyFlip.ATProtocol atp, int? limit = 50, string? cursor = default, bool? reverse = default, CancellationToken cancellationToken = default)
- {
- return atp.ListRecordsAsync(atp.SessionManager.Session?.Did ?? throw new InvalidOperationException("Session did is required."), "xyz.statusphere.status", limit, cursor, reverse, cancellationToken);
- }
-
- ///
- /// Get Status records.
- ///
- ///
- ///
- ///
- ///
- ///
- public static Task> GetStatusAsync(this FishyFlip.ATProtocol atp, FishyFlip.Models.ATIdentifier repo, string rkey, string? cid = default, CancellationToken cancellationToken = default)
- {
- return atp.GetRecordAsync(repo, "xyz.statusphere.status", rkey, cid, cancellationToken);
- }
-
- ///
- /// Get Status records.
- ///
- ///
- ///
- ///
- ///
- public static Task> GetStatusAsync(this FishyFlip.ATProtocol atp, string rkey, string? cid = default, CancellationToken cancellationToken = default)
- {
- return atp.GetRecordAsync(atp.SessionManager.Session?.Did ?? throw new InvalidOperationException("Session did is required."), "xyz.statusphere.status", rkey, cid, cancellationToken);
- }
- }
-}
-
diff --git a/src/FishyFlip/Lexicon/Xyz/Statusphere/Status.g.cs b/src/FishyFlip/Lexicon/Xyz/Statusphere/Status.g.cs
deleted file mode 100644
index b41a07b..0000000
--- a/src/FishyFlip/Lexicon/Xyz/Statusphere/Status.g.cs
+++ /dev/null
@@ -1,72 +0,0 @@
-//
-// This file was generated by FFSourceGen.
-// Do not modify this file.
-
-#nullable enable
-
-namespace FishyFlip.Lexicon.Xyz.Statusphere
-{
- public partial class Status : ATObject
- {
-
- ///
- /// Initializes a new instance of the class.
- ///
- ///
- ///
- public Status(string? status, DateTime? createdAt = default)
- {
- this.StatusValue = status;
- this.CreatedAt = createdAt ?? DateTime.UtcNow;
- }
-
-
- ///
- /// Initializes a new instance of the class.
- ///
- public Status()
- {
- }
-
-
- ///
- /// Initializes a new instance of the class.
- ///
- public Status(CBORObject obj)
- {
- if (obj["status"] is not null) this.StatusValue = obj["status"].AsString();
- if (obj["createdAt"] is not null) this.CreatedAt = obj["createdAt"].ToDateTime();
- }
-
- ///
- /// Gets or sets the status.
- ///
- [JsonPropertyName("status")]
- public string? StatusValue { get; set; }
-
- ///
- /// Gets or sets the createdAt.
- ///
- [JsonPropertyName("createdAt")]
- public DateTime? CreatedAt { get; set; } = DateTime.UtcNow;
-
- ///
- /// Gets the ATRecord Type.
- ///
- [JsonPropertyName("$type")]
- public override string Type => "xyz.statusphere.status";
-
- public const string RecordType = "xyz.statusphere.status";
-
- public override string ToJson()
- {
- return JsonSerializer.Serialize(this, (JsonTypeInfo)SourceGenerationContext.Default.XyzStatusphereStatus)!;
- }
-
- public static Status FromJson(string json)
- {
- return JsonSerializer.Deserialize(json, (JsonTypeInfo)SourceGenerationContext.Default.XyzStatusphereStatus)!;
- }
- }
-}
-