I've created a livestream with socket.io <podcast:liveValue>
for apps to test live updates (images, titles, value blocks, etc.).
Feed: "A Very Blue Podcast" (URL = https://feeds.rssblue.com/rss-blue-podcast, GUID = 5824fced-d16c-5e64-be0f-24296f13efea
)
Live item: "Live VTS Test for Apps" (GUID = a4ab9f14-4fc3-5265-8292-543e3feffcae
)
socket.io URL: https://sockets.rssblue.com/livestream/dynamic-chapter?slug=rss-blue-podcast&identifier=live-vts-test-for-apps
You can observe socket.io changes in your browser here: https://rssblue.com/socket.io?url=https%3A%2F%2Fsockets.rssblue.com%2Flivestream%2Fdynamic-chapter%3Fslug%3Drss-blue-podcast%26identifier%3Dlive-vts-test-for-apps
{
"blockGuid": "{randomV4Uuid}",
"image": "https://media.rssblue.com/podcasts/rss-blue-podcast/live-vts-test-for-apps/cover-art.img.png",
"title": "#1 - Simple chapter",
"type": "chapter",
"value": {
"destinations": [
{
"address": "030a58b8653d32b99200a2334cfe913e51dc7d155aa0116c176657a4f1722677a3",
"customKey": "696969",
"customValue": "4JKu621Pe89nNdP0G4ah",
"fee": false,
"name": "Dovydas",
"split": 100
},
{
"address": "030a58b8653d32b99200a2334cfe913e51dc7d155aa0116c176657a4f1722677a3",
"customKey": "696969",
"customValue": "JNhG48KDpK6UH6AjmhhJ",
"fee": true,
"name": "RSS Blue",
"split": 2
}
],
"method": "keysend",
"model": {
"method": "keysend",
"type": "lightning"
},
"type": "lightning"
}
}
{
"blockGuid": "{randomV4Uuid}",
"image": "https://media.rssblue.com/podcasts/rss-blue-podcast/cover-art.rssblue-square.png",
"link": {
"url": "https://example.com"
},
"title": "#2 - simple chapter with link",
"type": "chapter",
"value": {
"destinations": [
{
"address": "030a58b8653d32b99200a2334cfe913e51dc7d155aa0116c176657a4f1722677a3",
"customKey": "696969",
"customValue": "4JKu621Pe89nNdP0G4ah",
"fee": false,
"name": "Dovydas",
"split": 100
},
{
"address": "030a58b8653d32b99200a2334cfe913e51dc7d155aa0116c176657a4f1722677a3",
"customKey": "696969",
"customValue": "JNhG48KDpK6UH6AjmhhJ",
"fee": true,
"name": "RSS Blue",
"split": 2
}
],
"method": "keysend",
"model": {
"method": "keysend",
"type": "lightning"
},
"type": "lightning"
}
}
{
"blockGuid": "{randomV4Uuid}",
"feedGuid": "c58e87a0-dc16-5b1f-9987-5089e0c3d146",
"image": "https://media.rssblue.com/podcasts/rss-blue-podcast/live-vts-test-for-apps/cover-art.cf37fc78-e1a2-40e4-8151-dc1db8e8cdf0.jpg",
"itemGuid": "ee9833ef-b1da-53cf-bfce-0842b5e17423",
"title": "#3 - remote item - Love Letter by Ainsley Costello",
"type": "chapter",
"value": {
"destinations": [
{
"address": "030a58b8653d32b99200a2334cfe913e51dc7d155aa0116c176657a4f1722677a3",
"customKey": "696969",
"customValue": "4JKu621Pe89nNdP0G4ah",
"fee": false,
"name": "Dovydas",
"split": 100
},
{
"address": "030a58b8653d32b99200a2334cfe913e51dc7d155aa0116c176657a4f1722677a3",
"customKey": "696969",
"customValue": "N8eb5S6YAcbI55uRKwOm",
"fee": false,
"name": "ainsleycostello@getalby.com",
"split": 97
},
{
"address": "030a58b8653d32b99200a2334cfe913e51dc7d155aa0116c176657a4f1722677a3",
"customKey": "696969",
"customValue": "JNhG48KDpK6UH6AjmhhJ",
"fee": false,
"name": "RSS Blue",
"split": 2
},
{
"address": "030a58b8653d32b99200a2334cfe913e51dc7d155aa0116c176657a4f1722677a3",
"customKey": "696969",
"customValue": "x3VXZtbcfIBVLIUqzWKV",
"fee": false,
"name": "OP3 and reflex.livewire.io",
"split": 1
},
{
"address": "030a58b8653d32b99200a2334cfe913e51dc7d155aa0116c176657a4f1722677a3",
"customKey": "696969",
"customValue": "JNhG48KDpK6UH6AjmhhJ",
"fee": true,
"name": "RSS Blue",
"split": 2
},
{
"address": "03ae9f91a0cb8ff43840e3c322c4c61f019d8c1c3cea15a25cfc425ac605e61a4a",
"fee": true,
"name": "Podcastindex.org",
"split": 1
}
],
"method": "keysend",
"model": {
"method": "keysend",
"type": "lightning"
},
"type": "lightning"
}
}
{
"blockGuid": "{randomV4Uuid}",
"feedGuid": "cb28401c-716a-51df-8de5-e90527546a12",
"image": "https://media.rssblue.com/podcasts/rss-blue-podcast/live-vts-test-for-apps/cover-art.fe4baae6-4ae4-4647-b590-3e3c7c561f19.jpg",
"itemGuid": "5a885815-6752-5612-b96b-4964b95b86ae",
"link": {
"url": "https://www.herbivoreband.com"
},
"title": "#4 - remote item - I've Tried by Herbivore",
"type": "chapter",
"value": {
"destinations": [
{
"address": "030a58b8653d32b99200a2334cfe913e51dc7d155aa0116c176657a4f1722677a3",
"customKey": "696969",
"customValue": "4JKu621Pe89nNdP0G4ah",
"fee": false,
"name": "Dovydas",
"split": 50
},
{
"address": "030a58b8653d32b99200a2334cfe913e51dc7d155aa0116c176657a4f1722677a3",
"customKey": "696969",
"customValue": "gfzMTk6xSLbFzSaY5jVh",
"fee": false,
"name": "Herbivore",
"split": 50
},
{
"address": "030a58b8653d32b99200a2334cfe913e51dc7d155aa0116c176657a4f1722677a3",
"customKey": "696969",
"customValue": "JNhG48KDpK6UH6AjmhhJ",
"fee": true,
"name": "RSS Blue",
"split": 2
},
{
"address": "03ae9f91a0cb8ff43840e3c322c4c61f019d8c1c3cea15a25cfc425ac605e61a4a",
"fee": true,
"name": "Podcastindex.org",
"split": 1
}
],
"method": "keysend",
"model": {
"method": "keysend",
"type": "lightning"
},
"type": "lightning"
}
}
{}
Similar to how item metadata overrides feed metadata, podcast:liveValue
metadata can override item metadata.
If podcast:liveValue
is just an empty block, use the item metadata.
If podcast:liveValue
has value
field, use those value recipients instead of the ones at the item or feed level.
If podcast:liveValue
has title
field and the type
is chapter
, you can interpret this block as a "live chapter".
If podcast:liveValue
has feedGuid
and itemGuid
fields, assume that a remote item is being referenced. If someone boosts during this block, include remote item information in the TLV record.
And so on.
Note: JSONs have redundant method
, type
, and model
fields for backwards compatibility purposes. model
should be sufficient, but, if I remember correctly, one of the apps uses method
and type
.