How to Send a Podping

in HiveDevs16 hours ago

tiles.podping.org

Polling is over: send a Podping!

If you want to hear Adam Curry, the Podfather, explain Podping here he is: No Agenda
1682 - "Natalism"

If you're running a podcast hosting platform that publishes RSS feeds you need to be sending podpings.

A Podping is a tiny little signal which gets written to the Hive Blockchain and tells the whole world that one of your RSS feeds has an update. That can trigger hundreds or thousands of clients to check the RSS feed and take appropriate action.

Sending podpings is the replacement for the repetitive and wasteful "polling" or speculatively checking of RSS feeds which has been the normal way to detect changes since the invention of RSS and Podcasting.

How to send a Podping

Easiest: Podping.Cloud

By far the easiest way for any web based service to send a podping is to use the podping.cloud service hosted service run by @podcastindex. This service requires you to get an authorization key from Dave at Podcastindex dot org.

Once you have that, alerting the whole world that one of your RSS feeds has changed is as simple as this:

GET https://podping.cloud/?url=https://feeds.example.org/podcast/rss

You can also append 2 additional parameters (reason and/or medium):

GET https://podping.cloud/?url=https://feeds.example.org/livestream/rss&reason=live&medium=music

If reason is not present, the default is "update". If medium is not present, the default is "podcast". A full explanation of these options and what they mean is here.

Most Sovereign: Direct to Hive

Why would you not choose to do the easiest thing? Because sometimes sovereignty is worth it.

Whilst Adam and Dave have done a heroic job in setting up @podcastindex and the entire Podcasting 2.0 project, podping is built to be fully self supporting and sovereign. It is easier to use their podping.cloud service but not necessary.

The most self sustaining way to write a podping is to have your own Hive account and keys and directly write the podping to the Hive Blockchain yourself.

There are a many ways to get Hive Keys, I'll just highlight two:

Get a Hive Account

If you want help, reach out to me, brian at v4v dot app.

You might want a specific Hive account for sending podpings from. The podping.cloud for example uses five accounts, podping.aaa, podping.bbb, podping.ccc, podping.ddd and podping.eee.

Send a Custom Json

Feed Updates

This is a typical podping. In this case it has 4 RSS feed iris (urls).

  • version is 1.1 as of the time of this post.
  • medium and reason are explained here in the docs but in most cases you'll be using podcast and update.
  • The iris field in the JSON object is a list of one or more RSS feed IRIs (Internationalized Resource Identifiers), which are URLs pointing to the RSS feeds. Each entry in the list represents the location of an RSS feed that is being updated or referenced by the podping.
  • timestampNs field in the JSON object represents a timestamp in nanoseconds since the Unix epoch (January 1, 1970).
  • sessionId is an optional identifier which can be used to track multiple instances or processes which send successive podpings.

There is a maximum limit of around 200 iris per custom_json and this is set by Hive's blocksize. In practice you should avoid getting close to this limit and sending one at a time is practical if that represents the rate at which you publish updates.

Hive produces new blocks every 3 seconds: in practice you might want to consider batching and sending updates once a minute or so.

id: pp_podcast_update
json: {
  "version": "1.1",
  "medium": "podcast",
  "reason": "update",
  "iris": [
    "https://feeds.audiomeans.fr/feed/0ec7708b-cbf0-4048-971d-955b8d05bc31.xml",
    "https://feeds.audiomeans.fr/feed/6be8a533-aa0f-45c9-86a1-1187bfbc4461.xml",
    "https://feeds.audiomeans.fr/feed/b4de9333-deb0-4c99-82e3-3c21cfac3f2a.xml",
    "https://www.spreaker.com/show/6096975/episodes/feed"
  ],
  "timestampNs": 1726734767069026000,
  "sessionId": 10631874232419994000
}
required_auths: []
required_posting_auths: [
  "podping.eee"
]

If you want to see thousands of examples of this, open up a Hive block explorer like this one for account @podping.bbb and look!

Live Items
  • live and liveEnd these special reason codes are for indicating a live broadcast. These will usually be sent with precise timing and quickly so as to alert watching apps.
id: pp_video_live
json: {
  "version": "1.1",
  "medium": "video",
  "reason": "live",
  "iris": [
    "https://tv.mattchristiansenmedia.com/plugins/podcast2/router/podcast2?channel=matt_christiansen"
  ],
  "timestampNs": 1726707654177263000,
  "sessionId": 10708055723163822000
}
required_auths: []
required_posting_auths: [
 "podping.bbb"
]

I won't lay out here all the ways to write to the Hive Blockchain but that may be a future post.

Uses Podping

There is also a small tag you can put in all the RSS feeds which you will use podping on to signal that your RSS feed uses podping.

This allows indexing systems and clients to know that they only need to watch podping and no longer need to check all the RSS feeds under your control.

Conclusion

Sending Podpings is easy and censorship resistant. Once you have a Hive account (which needs a minimal amount of Hive's Resource Credits) nobody can stop you sending podpings.

If you want a fun visualisation of all the podcasts updating in real time via podping just take a look at tiles.podping.org.