I’m trying to figure out how to get the comments of a post given a link to it using ActivityPub.

Based on reading the ActivityPub spec, I thought comments were federated via the replies key of the ActivityPub Object.

This works for Mastodon posts, but not for Lemmy (nor Pleroma). As an example

curl -H "Accept: application/activity+json" https://lemmy.my.id/post/79514 | jq

doesn’t contain a replies key. Yet the comments are federated to Mastodon somehow.

What is going on? How can I get the comment?

  • quest@lemmy.worldOP
    link
    fedilink
    English
    arrow-up
    6
    ·
    edit-2
    1 year ago

    Unfortunately I think you’re right. I tested it by trying to load the Lemmy post up on a couple of single-user Mastodon instances, and they failed to load it.

    It looks like only Mastodon and PeerTube and maybe a couple others list replies alongside the post. It would be nice if more did because I’m relying on the feature for this project of mine: https://github.com/BentonEdmondson/servitor

    • r00ty@kbin.life
      link
      fedilink
      arrow-up
      1
      ·
      1 year ago

      The public links with post and comment in are used specifically for federation and can only really be used to build a hierarchy upwards. The use case for this probably will make it make more sense.

      Say I subscribe to a remote community from my instance. I won’t get anything specifically until an activity happens. The first activity I get is a like for a comment. But I don’t have the comment. But luckily the like message has a link to the comment URL. So now I can fetch that. But how can I just show a comment out of context? I cannot, but the comment json tells me what it is in reply to. Maybe a post, maybe another comment. I can just keep fetching up the tree until I get to the post. Once I have all that I have something that can be rendered, the whole hierarchy from the liked comment to the post.

      That’s why it works that way. It’s probably just to save on DB queries, why query the DB for all the comments if in normal federation use case it already has the comment(s) it wants if it reached the post.

      • quest@lemmy.worldOP
        link
        fedilink
        arrow-up
        1
        ·
        1 year ago

        But in the use case you give, how could you view the replies below the liked comment? If the replies key is absent you can’t. So you can only see those for Mastodon/PeerTube in that case, not Lemmy/Pleroma.

        • r00ty@kbin.life
          link
          fedilink
          arrow-up
          1
          arrow-down
          1
          ·
          1 year ago

          You can see the hierarchy above not below.

          You might get a like. It looks like:

          like: [
              "id" => "https://lemmy.one/activities/like/7d0ef24f-755f-48dd-9b37-ea42041cb34e",
              "actor" => "https://lemmy.one/u/Matt",
              "object" => "https://lemmy.procrastinati.org/comment/146844",
              "type" => "Like",
              "audience" => "https://lemdro.id/c/android"
          ]
          
          

          In the object property you see the comment. If you visit that you’ll get among the rest of the json for the comment

          "inReplyTo": "https://lemmy.world/comment/1269475",

          And again

          "inReplyTo": "https://lemdro.id/post/77457",

          Now you have the hierarchy from the like’s comment to the post. Not the rest of the tree, enough to render the comment in context though.

          • quest@lemmy.worldOP
            link
            fedilink
            arrow-up
            1
            ·
            1 year ago

            I understand exactly what you’re saying; you can get the parents but not the replies in that situation.

            I’m just saying that in your situation (e.g. someone I follow on Mastodon likes a Lemmy post) it would be convenient for me as a user to be able to view the replies to that Lemmy post, but I cannot necessarily do that because Lemmy does not include replies.

            • r00ty@kbin.life
              link
              fedilink
              arrow-up
              1
              arrow-down
              1
              ·
              1 year ago

              I expect it does, from the lemmy API. But from the ActivityPub api, it doesn’t make sense to.