Files
SocialPub/PrivaPub/Models/Post/PostMedia.cs
T
thepraandClaude Opus 5.5 fc111d8c46
Build / Build (push) Successful in 35s
Deploy / privapub.thepra.dev (push) Successful in 52s
P5: remote objects are read in every shape, and videos, events, audio and links keep their own details
- ObjectShapes reads `url`, `icon` and `image` as a value, a Link or an array; Markdown `content` (PeerTube) is
  rendered; a missing `mediaType` is inferred from the extension or the attachment type (Bridgy); alt text comes from
  `name`, `summary` or their language maps; thumbnails come from attachment `icon`, object `icon[]`, `image` or a Loops
  `preview`; durations are ISO 8601 or seconds; per-attachment `sensitive` is kept; the language falls back to
  `@context` `@language` (Pleroma); titles and excerpts are plain text; hashtags normalise with NFKC like Mastodon.
- Typed details on Post: Link (Lemmy link posts, Mbin `source` URLs, Mastodon 4.7 Link attachments with an FEP-8967
  publisher preview), Video (PeerTube files with their streams, HLS playlist, poster, captions, chapters, licence,
  channel, live state, comment policy), Audio (Funkwhale), Event (Mobilizon, Gancio, Hubzilla: times, zone, floating
  time, places and addresses, online link, capacity, status), the cover image, and the author's own source text.
- Mastodon API: a card built from those details without fetching anything, an event's "when · where" line, attachment
  thumbnails and durations, and no media file offered as a preview image.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012CzABvBkbcFqoHdmi8b9WB
2026-10-01 17:53:59 +02:00

24 lines
845 B
C#

namespace PrivaPub.Models.Post
{
public class PostMedia
{
public Guid Id { get; set; } = Guid.NewGuid();
public string ContentType { get; set; }
public string FileName { get; set; }
public string Extension { get; set; }
public string Path { get; set; }
public string URL { get; set; }
public string RemoteURL { get; set; }
public string PreviewURL { get; set; }
public string AttachmentId { get; set; }
public string Description { get; set; }
public string Blurhash { get; set; }
public int? Width { get; set; }
public int? Height { get; set; }
public float[] Focus { get; set; }
public string RemotePreviewURL { get; set; }//the remote thumbnail (attachment icon), served through the proxy
public double? DurationSeconds { get; set; }
public bool? Sensitive { get; set; }//Misskey marks each attachment
}
}