feat: twitter OG tags

This commit is contained in:
Kieran 2024-01-15 11:59:54 +00:00
parent 52b308967f
commit ccd1f7f2a7
No known key found for this signature in database
GPG Key ID: DE71CEB3925BE941

View File

@ -86,7 +86,11 @@ public class OpenGraphController : Controller
new("og:title", meta?.Title ?? ""),
new("og:description", meta?.Description ?? ""),
new("og:image", meta?.Image ?? $"https://robohash.v0l.io/{nid.Special}.png"),
new("og:profile:username", meta?.Profile?.Name ?? "")
new("og:profile:username", meta?.Profile?.Name ?? ""),
new("twitter:card", "summary"),
new("twitter:title", meta?.Title ?? ""),
new("twitter:description", meta?.Description ?? ""),
new("twitter:image", meta?.Image ?? $"https://robohash.v0l.io/{nid.Special}.png"),
]);
AddCanonical(tags, profile?.ToIdentifier() ?? new NostrProfileIdentifier(nid.Special, null));
@ -118,16 +122,23 @@ public class OpenGraphController : Controller
var hostProfile = await _redisStore.GetProfile(host);
var hostName = hostProfile?.Name ?? profile?.Name ?? "Nostrich";
var stream = ev.GetFirstTagValue("streaming") ?? ev.GetFirstTagValue("recording") ?? "";
var image = ev.GetFirstTagValue("image") ?? hostProfile?.Picture ?? $"https://robohash.v0l.io/{ev.PubKey.ToHex()}.png";
ret.AddRange(new KeyValuePair<string, string>[]
{
new("og:type", "video.other"),
new("og:title", $"{hostName} is streaming"),
new("og:description", ev.GetFirstTagValue("title") ?? ""),
new("og:image",
ev.GetFirstTagValue("image") ?? hostProfile?.Picture ?? $"https://robohash.v0l.io/{ev.PubKey.ToHex()}.png"),
new("og:image", image),
new("og:video", stream),
new("og:video:secure_url", stream),
new("og:video:type", "application/vnd.apple.mpegurl"),
new("twitter:card", "player"),
new("twitter:title", $"{hostName} is streaming"),
new("twitter:description", ev.GetFirstTagValue("title") ?? ""),
new("twitter:image", image),
new("twitter:site", "zap_stream"),
new("twitter:player", $"https://zap.stream/embed/{ev.ToIdentifier().ToBech32()}"),
new("twitter:player:width", "1280")
});
break;
@ -135,16 +146,20 @@ public class OpenGraphController : Controller
case 1_313: // stream clip
{
var stream = ev.GetFirstTagValue("r")!;
var image = ev.GetFirstTagValue("image") ?? profile?.Picture ?? $"https://robohash.v0l.io/{ev.PubKey.ToHex()}.png";
ret.AddRange(new KeyValuePair<string, string>[]
{
new("og:type", "video.other"),
new("og:title", $"{name} created a clip"),
new("og:description", ev.GetFirstTagValue("title") ?? ""),
new("og:image",
ev.GetFirstTagValue("image") ?? profile?.Picture ?? $"https://robohash.v0l.io/{ev.PubKey.ToHex()}.png"),
new("og:image", image),
new("og:video", stream),
new("og:video:secure_url", stream),
new("og:video:type", "video/mp4"),
new("twitter:card", "summary_large_image"),
new("twitter:title", $"{name} created a clip"),
new("twitter:description", ev.GetFirstTagValue("title") ?? ""),
new("twitter:image", image),
});
break;
@ -154,14 +169,19 @@ public class OpenGraphController : Controller
const int maxLen = 160;
var trimmedContent = ev.Content.Length > maxLen ? ev.Content[..maxLen] : ev.Content;
var titleContent = $"{profile}: {trimmedContent}";
var image = profile?.Picture ?? $"https://robohash.v0l.io/{ev.PubKey.ToHex()}.png";
ret.AddRange(new KeyValuePair<string, string>[]
{
new("og:type", "article"),
new("og:title", titleContent),
new("og:description", ""),
new("og:image", profile?.Picture ?? $"https://robohash.v0l.io/{ev.PubKey.ToHex()}.png"),
new("og:image", image),
new("og:article:published_time", ev.Created.ToString("o")),
new("og:article:author:username", profile?.Name ?? ""),
new("twitter:card", "summary"),
new("twitter:title", titleContent),
new("twitter:description", ""),
new("twitter:image", image),
});
break;