remote_(feed|item)_guid and title display in helipad
Closed this issue · 3 comments
Background
https://podcastindex.social/@adam/112105747070927448 is a screenshot of a payment made during a valueTimeSplit (VTS) in Podcasting 2.0 Episode 170. Here's the XML for the VTS from the pc20 feed
<podcast:valueTimeSplit startTime="4575" duration="185.051" remotePercentage="90">
<podcast:remoteItem feedGuid="90f06077-971d-5aaf-b553-6e94e3f204b4" itemGuid="e63c203b-7bf8-5d19-827e-3ca69db3fef3"/>
</podcast:valueTimeSplit>
The screenshot shows "Millenium - Millenium" in the title bar. To get this to work, I had to add remote_feed_guid=90f06077-971d-5aaf-b553-6e94e3f204b4 and remote_item_guid=e63c203b-7bf8-5d19-827e-3ca69db3fef3 to the TLV record for the payment to PC20. Good right? Sort of.
What the spec says
Spec: https://github.com/Podcastindex-org/podcast-namespace/blob/main/value/blip-0010.md#fields
For our purposes we can just focus on the spec text for remote_feed_guid since the text is similar for both feed and item:
Sometimes a payment will be sent to a feed's value block because a different feed referenced it in a podcast:valueTimeSplit tag. When that happens, this field will contain the guid of the referencing feed.
What I actually implemented, that worked
Let's call PC20's feed the "host feed". It's the one that has the valueTimeSplit, whereas "Millenium - Millenium" is the remoteItem.
In order to get the remoteItem's info to appear in helipad, I had to set remote_(feed|item)_guid in the payment to the host feed's value block. This doesn't match the spec text. To be more specific, to get things working:
- A payment was sent to PC20's valueBlock, not because some other feed referenced it, but rather because the payment occurred during PC20 itself, in a VTS in which PC20 got a positive split.
- The remote_(feed|item)_guid fields did not contain the guid of a referencing feed -- there was no different feed referring to PC20. The fields instead contained the VTS feed/item guid that was active at the time of the payment.
A confounding wrinkle which we should be able to clear up
Just to make things fun, "Millenium - Millenium"'s value block contains a fee for ... wait for it... PC20! That means PC20 actually got two payments, one as a host split and one as a remote item fee. Here's what it actually looks like for a 1000 sat payment
[864] The Trusted
[77] Podcastindex.org
[27] Phantom Power Music
[10] Sovereign Feeds
[10] Podcastindex.org (fee)
[9] OP3
[5] Dreb Scott (Chapters)
[5] Reflex.io
[1] Boostagram Monitor
[1] Saturn Test
[1] Fountain Boost bot
The first, 77 sat payment is the host split. The second, 10 sat payment is the fee from the remote item block . The latter contains an element of referencing, because "Millenium - Millenium" references PC20 in its own value block, but this referencing didn't happen inside a valueTimeSplit in Millenium's block (and for that matter the VTS spec indicates that VTS's should be ignored in remote value blocks).
But in any case, previous failed attempts were indeed sending the TLV records for this 10 sat payment. We only got things working by sending the TLVs to the 77 sat "host" payment.
Not sure yet what if any next steps are, let's see if the above makes sense :-) Until then some additional thoughts
- When it comes to giving helipad a way to display for the Host which VTS was active, we should be able to derive that from the hosts own feed plus the ts/time values in the TLV.
- The spec'ed use case is actually a good one! But that use case only applies to the recipients in the remoteItem's block (ie the 10 sat payment and not the 77 sat payment).
- OR...we could just send the remote info to all valueRecipients in full breakout, and just modify the spec text accordingly to say that.
Helipad just displays the remote feed and item information that it's sent in the TLV. The TLV can contain any random feed and item guid and it will happily present that to the user.
I think adjusting the spec and simplifying it makes the most sense.