voc / voctoweb

voctoweb – the frontend and backend software behind media.ccc.de
GNU General Public License v3.0
189 stars 58 forks source link

Define ActivityPub represenation of an talk/event/lecture #735

Open saerdnaer opened 10 months ago

saerdnaer commented 10 months ago

As of now each item in voctoweb is only available in following representations:

Where the web version includes following in the head:

<script type='application/ld+json'>
{
  "@context": "https://schema.org",
  "@type": "VideoObject",
  "name": "Breaking \"DRM\" in Polish trains",
  "description": "We've all been there: the trains you're servicing for a customer suddenly brick themselves and the manufacturer claims that's because you...",
  "thumbnailUrl": "https://static.media.ccc.de/media/congress/2023/12142-68160267-a6a5-4a41-8a51-d8735c8aa338_preview.jpg",
  "uploadDate": "2023-12-28 00:00:00 +0100",
  "duration": "PT3705S",
  "publisher": {
    "@type": "Organization",
    "name": "media.ccc.de",
      "logo": {
      "@type": "ImageObject",
      "url": "/apple-touch-icon.png",
      "width": 180,
      "height": 180
    }
  },
  "contentUrl": "37c3-12142-eng-Breaking_DRM_in_Polish_trains.mp4",
  "embedUrl": "https://media.ccc.de/public/oembed?url=https%3A%2F%2Fmedia.ccc.de%2Fv%2F37c3-12142-breaking_drm_in_polish_trains"
}
</script>

Peertube inspired:

{
  "type": "Video",
  "id": "https://media.ccc.de/v/37c3-12142-breaking_drm_in_polish_trains",
  "uuid": "68160267-a6a5-4a41-8a51-d8735c8aa338",
  "to": ["https://www.w3.org/ns/activitystreams#Public"],
  "cc": ["https://social.media.ccc.de/accounts/37c3/followers"],

  "name": "Breaking \"DRM\" in Polish trains",
  "attributedTo": [
    {"type": "Person", "name": "Redford", "id": "acct:redford@dragonsector.pl"},
    {"type": "Person", "name": "q3k", "id": "acct:q3k@hackerspace.pl"},
    {"type": "Person", "name": "MrTick"},
    {"type": "Group",  "name": "Dragon Sector", "id": "https://dragonsector.pl"}
  ],
  "mediaType": "text/markdown",
  "content": "We've all been there: the trains you're servicing for a customer suddenly brick themselves and the manufacturer claims that's because you've interfered with a security system.\n\nThis talk will tell the story of a series of Polish EMUs (Electric Multiple Unit) that all refused to move a few days after arriving at an “unauthorized” service company. We'll go over how a train control system actually works, how we reverse-engineered one and what sort of magical “security” systems we actually found inside of it.\n\nReality sometimes is stranger than the wildest CTF task. Reality sometimes is running `unlock.py` on a dozen trains.\n\nThe talk will be a mix of technical and non-technical aspects of analysis which should be understandable for anyone with a technical background. We’ll briefly explain how modern EMUs look like inside, how the Train Control & Monitoring System works, and how to analyze TriCore machine code.",
  "duration": "PT3705S",

  "originallyPublishedAt": null,
  "published": "2023-12-28T00:00:00.000+01:00",
  "updated": "2024-01-10T23:30:04.074+01:00",

  "category": {"identifier": "13", "name": "Education"},
  "licence":  {"identifier":  "?", "name": "CreativeCommons BY 4.0 DEED", "href": "https://creativecommons.org/licenses/by/4.0/"},
  "language": {"identifier": "en", "name": "English"},
  "subtitleLanguage": [
    /* TBD */
  ],

  "views": 87978,

  "sensitive": false,
  "isLiveBroadcast": false,
  "commentsEnabled": false,
  "downloadEnabled": true,

  "tag": [
    {"type": "Hashtag", "name": "37c3"},
    {"type": "Hashtag", "name": "Hardware & Making"}
  ],

  "icon": [
    {
      "type": "Image",
      "url": "https://static.media.ccc.de/media/congress/2023/12142-68160267-a6a5-4a41-8a51-d8735c8aa338.jpg",
      "mediaType": "image/jpeg",
      "width": 400, "height": 225
    },
    {
      "type": "Image",
      "url": "https://static.media.ccc.de/media/congress/2023/12142-68160267-a6a5-4a41-8a51-d8735c8aa338_preview.jpg",
      "mediaType": "image/jpeg",
      "width": 1920, "height": 1080
    }
  ],

  "url": [
    {
      "type": "Link",
      "mediaType": "text/html",
      "href": "https://media.ccc.de/v/37c3-12142-breaking_drm_in_polish_trains"
    },
    {
      "type": "Link",
      "rel": ["metadata"],
      "mediaType": "application/json",
      "href": "https://api.media.ccc.de/public/events/68160267-a6a5-4a41-8a51-d8735c8aa338"
    },
    {
      "type": "Link",
      "mediaType": "video/mp4",
      "href": "https://cdn.media.ccc.de/congress/2023/h264-hd/37c3-12142-fra-Breaking_DRM_in_Polish_trains.mp4",
      "height": 1080,
      "size": 587000,
      "fps": 25
    },
    {
      "type": "Link",
      "mediaType": "video/mp4",
      "href": "https://cdn.media.ccc.de/congress/2023/h264-sd/37c3-12142-eng-deu-fra-Breaking_DRM_in_Polish_trains_sd.mp4",
      "height": 720,
      "size": 71380357,
      "fps": 25
    },
    {
      "type": "Link",
      "rel": ["metadata", "video/mp4"],
      "height": 720,
      "fps": 25,
      "mediaType": "application/json",
      "href": "https://media.ccc.de/public/recordings/72245"
    }
    …
  ],

  "@context": [
    "https://www.w3.org/ns/activitystreams",
    "https://w3id.org/security/v1",
    {
      "pt": "https://joinpeertube.org/ns#",
      "sc": "http://schema.org#",
      "Hashtag": "as:Hashtag",
      "uuid": "sc:identifier",
      "category": "sc:category",
      "licence": "sc:license",
      "subtitleLanguage": "sc:subtitleLanguage",
      "sensitive": "as:sensitive",
      "language": "sc:inLanguage",
      "isLiveBroadcast": "sc:isLiveBroadcast",
      "liveSaveReplay": {"@type": "sc:Boolean", "@id": "pt:liveSaveReplay"},
      "permanentLive": {"@type": "sc:Boolean", "@id": "pt:permanentLive"},
      "Infohash": "pt:Infohash",
      "Playlist": "pt:Playlist",
      "PlaylistElement": "pt:PlaylistElement",
      "originallyPublishedAt": "sc:datePublished",
      "views": {"@type": "sc:Number", "@id": "pt:views"},
      "state": {"@type": "sc:Number", "@id": "pt:state"},
      "size": {"@type": "sc:Number", "@id": "pt:size"},
      "fps": {"@type": "sc:Number", "@id": "pt:fps"},
      "startTimestamp": {"@type": "sc:Number", "@id": "pt:startTimestamp"},
      "stopTimestamp": {"@type": "sc:Number", "@id": "pt:stopTimestamp"},
      "position": {"@type": "sc:Number", "@id": "pt:position"},
      "downloadEnabled": {"@type": "sc:Boolean", "@id": "pt:downloadEnabled"}
    }
  ]
}

Podcasting 2.0 TBD

Our current json representation in the public api:

{
    "guid": "68160267-a6a5-4a41-8a51-d8735c8aa338",
    "title": "Breaking \"DRM\" in Polish trains",
    "subtitle": "Reverse engineering a train to analyze a suspicious malfunction",
    "slug": "37c3-12142-breaking_drm_in_polish_trains",
    "link": "https://events.ccc.de/congress/2023/hub/event/breaking_drm_in_polish_trains/",
    "description": "We've all been there: the trains you're servicing for a customer suddenly brick themselves and the manufacturer claims that's because you've interfered with a security system.\n\nThis talk will tell the story of a series of Polish EMUs (Electric Multiple Unit) that all refused to move a few days after arriving at an “unauthorized” service company. We'll go over how a train control system actually works, how we reverse-engineered one and what sort of magical “security” systems we actually found inside of it.\n\nReality sometimes is stranger than the wildest CTF task. Reality sometimes is running `unlock.py` on a dozen trains.\n\nThe talk will be a mix of technical and non-technical aspects of analysis which should be understandable for anyone with a technical background. We’ll briefly explain how modern EMUs look like inside, how the Train Control & Monitoring System works, and how to analyze TriCore machine code.",
    "original_language": "eng",
    "persons": [
        "Redford",
        "q3k",
        "MrTick"
    ],
    "tags": [
        "37c3",
        "12142",
        "2023",
        "Hardware & Making",
        ""
    ],
    "view_count": 87978,
    "promoted": true,
    "date": "2023-12-27T23:00:00.000+01:00",
    "release_date": "2023-12-28T00:00:00.000+01:00",
    "updated_at": "2024-01-10T23:30:04.074+01:00",
    "length": 3705,
    "duration": 3705,
    "thumb_url": "https://static.media.ccc.de/media/congress/2023/12142-68160267-a6a5-4a41-8a51-d8735c8aa338.jpg",
    "poster_url": "https://static.media.ccc.de/media/congress/2023/12142-68160267-a6a5-4a41-8a51-d8735c8aa338_preview.jpg",
    "timeline_url": "https://static.media.ccc.de/media/congress/2023/12142-68160267-a6a5-4a41-8a51-d8735c8aa338.timeline.jpg",
    "thumbnails_url": "https://static.media.ccc.de/media/congress/2023/12142-68160267-a6a5-4a41-8a51-d8735c8aa338.thumbnails.vtt",
    "frontend_link": "https://media.ccc.de/v/37c3-12142-breaking_drm_in_polish_trains",
    "url": "https://media.ccc.de/public/events/68160267-a6a5-4a41-8a51-d8735c8aa338",
    "conference_title": "37C3: Unlocked",
    "conference_url": "https://media.ccc.de/public/conferences/37c3",
    "related": [],
    "recordings": [
        {
            "size": 600,
            "length": 3705,
            "mime_type": "video/webm",
            "language": "eng-deu-fra",
            "filename": "37c3-12142-eng-deu-fra-Breaking_DRM_in_Polish_trains_webm-hd.webm",
            "state": "new",
            "folder": "webm-hd",
            "high_quality": true,
            "width": 1920,
            "height": 1080,
            "updated_at": "2023-12-28T13:28:42.909+01:00",
            "recording_url": "https://cdn.media.ccc.de/congress/2023/webm-hd/37c3-12142-eng-deu-fra-Breaking_DRM_in_Polish_trains_webm-hd.webm",
            "url": "https://media.ccc.de/public/recordings/72249",
            "event_url": "https://media.ccc.de/public/events/68160267-a6a5-4a41-8a51-d8735c8aa338",
            "conference_url": "https://media.ccc.de/public/conferences/37c3"
        },
        {
            "size": 276,
            "length": 3705,
            "mime_type": "video/webm",
            "language": "eng-deu-fra",
            "filename": "37c3-12142-eng-deu-fra-Breaking_DRM_in_Polish_trains_webm-sd.webm",
            "state": "new",
            "folder": "webm-sd",
            "high_quality": false,
            "width": 720,
            "height": 576,
            "updated_at": "2023-12-28T11:08:19.001+01:00",
            "recording_url": "https://cdn.media.ccc.de/congress/2023/webm-sd/37c3-12142-eng-deu-fra-Breaking_DRM_in_Polish_trains_webm-sd.webm",
            "url": "https://media.ccc.de/public/recordings/72247",
            "event_url": "https://media.ccc.de/public/events/68160267-a6a5-4a41-8a51-d8735c8aa338",
            "conference_url": "https://media.ccc.de/public/conferences/37c3"
        },
        {
            "size": 277,
            "length": 3705,
            "mime_type": "video/mp4",
            "language": "eng-deu-fra",
            "filename": "37c3-12142-eng-deu-fra-Breaking_DRM_in_Polish_trains_sd.mp4",
            "state": "new",
            "folder": "h264-sd",
            "high_quality": false,
            "width": 720,
            "height": 576,
            "updated_at": "2023-12-28T10:18:49.116+01:00",
            "recording_url": "https://cdn.media.ccc.de/congress/2023/h264-sd/37c3-12142-eng-deu-fra-Breaking_DRM_in_Polish_trains_sd.mp4",
            "url": "https://media.ccc.de/public/recordings/72245",
            "event_url": "https://media.ccc.de/public/events/68160267-a6a5-4a41-8a51-d8735c8aa338",
            "conference_url": "https://media.ccc.de/public/conferences/37c3"
        },
        {
            "size": 56,
            "length": 3705,
            "mime_type": "audio/mpeg",
            "language": "deu",
            "filename": "37c3-12142-deu-Breaking_DRM_in_Polish_trains_mp3-2.mp3",
            "state": "new",
            "folder": "mp3-translated",
            "high_quality": false,
            "width": 0,
            "height": 0,
            "updated_at": "2023-12-28T10:18:28.766+01:00",
            "recording_url": "https://cdn.media.ccc.de/congress/2023/mp3-translated/37c3-12142-deu-Breaking_DRM_in_Polish_trains_mp3-2.mp3",
            "url": "https://media.ccc.de/public/recordings/72244",
            "event_url": "https://media.ccc.de/public/events/68160267-a6a5-4a41-8a51-d8735c8aa338",
            "conference_url": "https://media.ccc.de/public/conferences/37c3"
        },
        {
            "size": 37,
            "length": 3705,
            "mime_type": "audio/opus",
            "language": "deu",
            "filename": "37c3-12142-deu-Breaking_DRM_in_Polish_trains_opus-2.opus",
            "state": "new",
            "folder": "opus-translation",
            "high_quality": false,
            "width": 0,
            "height": 0,
            "updated_at": "2023-12-28T10:18:04.478+01:00",
            "recording_url": "https://cdn.media.ccc.de/congress/2023/opus-translation/37c3-12142-deu-Breaking_DRM_in_Polish_trains_opus-2.opus",
            "url": "https://media.ccc.de/public/recordings/72243",
            "event_url": "https://media.ccc.de/public/events/68160267-a6a5-4a41-8a51-d8735c8aa338",
            "conference_url": "https://media.ccc.de/public/conferences/37c3"
        },
        {
            "size": 56,
            "length": 3705,
            "mime_type": "audio/mpeg",
            "language": "eng",
            "filename": "37c3-12142-eng-Breaking_DRM_in_Polish_trains_mp3.mp3",
            "state": "new",
            "folder": "mp3",
            "high_quality": false,
            "width": 0,
            "height": 0,
            "updated_at": "2023-12-28T10:16:10.363+01:00",
            "recording_url": "https://cdn.media.ccc.de/congress/2023/mp3/37c3-12142-eng-Breaking_DRM_in_Polish_trains_mp3.mp3",
            "url": "https://media.ccc.de/public/recordings/72239",
            "event_url": "https://media.ccc.de/public/events/68160267-a6a5-4a41-8a51-d8735c8aa338",
            "conference_url": "https://media.ccc.de/public/conferences/37c3"
        },
        {
            "size": 38,
            "length": 3705,
            "mime_type": "audio/opus",
            "language": "eng",
            "filename": "37c3-12142-eng-Breaking_DRM_in_Polish_trains_opus.opus",
            "state": "new",
            "folder": "opus",
            "high_quality": false,
            "width": 0,
            "height": 0,
            "updated_at": "2023-12-28T10:15:50.875+01:00",
            "recording_url": "https://cdn.media.ccc.de/congress/2023/opus/37c3-12142-eng-Breaking_DRM_in_Polish_trains_opus.opus",
            "url": "https://media.ccc.de/public/recordings/72238",
            "event_url": "https://media.ccc.de/public/events/68160267-a6a5-4a41-8a51-d8735c8aa338",
            "conference_url": "https://media.ccc.de/public/conferences/37c3"
        },
        {
            "size": 703,
            "length": 3705,
            "mime_type": "video/mp4",
            "language": "eng-deu-fra",
            "filename": "37c3-12142-eng-deu-fra-Breaking_DRM_in_Polish_trains_hd.mp4",
            "state": "new",
            "folder": "h264-hd",
            "high_quality": true,
            "width": 1920,
            "height": 1080,
            "updated_at": "2023-12-28T10:09:54.294+01:00",
            "recording_url": "https://cdn.media.ccc.de/congress/2023/h264-hd/37c3-12142-eng-deu-fra-Breaking_DRM_in_Polish_trains_hd.mp4",
            "url": "https://media.ccc.de/public/recordings/72232",
            "event_url": "https://media.ccc.de/public/events/68160267-a6a5-4a41-8a51-d8735c8aa338",
            "conference_url": "https://media.ccc.de/public/conferences/37c3"
        },
        {
            "size": 587,
            "length": 3705,
            "mime_type": "video/mp4",
            "language": "fra",
            "filename": "37c3-12142-fra-Breaking_DRM_in_Polish_trains.mp4",
            "state": "new",
            "folder": "h264-hd",
            "high_quality": true,
            "width": 1920,
            "height": 1080,
            "updated_at": "2023-12-28T10:09:38.100+01:00",
            "recording_url": "https://cdn.media.ccc.de/congress/2023/h264-hd/37c3-12142-fra-Breaking_DRM_in_Polish_trains.mp4",
            "url": "https://media.ccc.de/public/recordings/72231",
            "event_url": "https://media.ccc.de/public/events/68160267-a6a5-4a41-8a51-d8735c8aa338",
            "conference_url": "https://media.ccc.de/public/conferences/37c3"
        },
        {
            "size": 587,
            "length": 3705,
            "mime_type": "video/mp4",
            "language": "deu",
            "filename": "37c3-12142-deu-Breaking_DRM_in_Polish_trains.mp4",
            "state": "new",
            "folder": "h264-hd",
            "high_quality": true,
            "width": 1920,
            "height": 1080,
            "updated_at": "2023-12-28T10:09:22.984+01:00",
            "recording_url": "https://cdn.media.ccc.de/congress/2023/h264-hd/37c3-12142-deu-Breaking_DRM_in_Polish_trains.mp4",
            "url": "https://media.ccc.de/public/recordings/72230",
            "event_url": "https://media.ccc.de/public/events/68160267-a6a5-4a41-8a51-d8735c8aa338",
            "conference_url": "https://media.ccc.de/public/conferences/37c3"
        },
        {
            "size": 587,
            "length": 3705,
            "mime_type": "video/mp4",
            "language": "eng",
            "filename": "37c3-12142-eng-Breaking_DRM_in_Polish_trains.mp4",
            "state": "new",
            "folder": "h264-hd",
            "high_quality": true,
            "width": 1920,
            "height": 1080,
            "updated_at": "2023-12-28T10:09:08.096+01:00",
            "recording_url": "https://cdn.media.ccc.de/congress/2023/h264-hd/37c3-12142-eng-Breaking_DRM_in_Polish_trains.mp4",
            "url": "https://media.ccc.de/public/recordings/72229",
            "event_url": "https://media.ccc.de/public/events/68160267-a6a5-4a41-8a51-d8735c8aa338",
            "conference_url": "https://media.ccc.de/public/conferences/37c3"
        }
    ]
}