Finished internal cross-linking between tags.

pull/699/head
Daniel J. Lewis 2025-04-08 18:09:50 -04:00
rodzic 98d848db77
commit a5cac156a7
17 zmienionych plików z 36 dodań i 36 usunięć

Wyświetl plik

@ -2,15 +2,15 @@
`<podcast:chat>` `<podcast:chat>`
This element allows a podcaster to attach information to either the `<channel>`, `<item>` or `<podcast:liveItem>` about where the "official" chat for either the podcast or a specific episode or live event is to be found. Just like `<podcast:socialInteract>` functions for social media, the `<podcast:chat>` tag will function for ephemeral chat. There are many protocols in use across the internet for chat based communication. This tag is meant to be flexible enough to adapt to whichever protocol the podcaster wants to use. This element allows a podcaster to attach information to either the `<channel>`, `<item>` or [`<podcast:liveItem>`](liveItem.md) about where the "official" chat for either the podcast or a specific episode or live event is to be found. Just like [`<podcast:socialInteract>`](socialInteract.md) functions for social media, the `<podcast:chat>` tag will function for ephemeral chat. There are many protocols in use across the internet for chat based communication. This tag is meant to be flexible enough to adapt to whichever protocol the podcaster wants to use.
This element's presence at a particular level governs how it should be treated. If found at the `<item>` or `<podcast:liveItem>` level, this should be treated as the information for that specific episode, overriding what is at the `<channel>` level. If this tag is found at the `<channel>` level, it would be considered the chat for the entire podcast and is recommended to be an "always on" chat room experience. This element's presence at a particular level governs how it should be treated. If found at the `<item>` or [`<podcast:liveItem>`](liveItem.md) level, this should be treated as the information for that specific episode, overriding what is at the `<channel>` level. If this tag is found at the `<channel>` level, it would be considered the chat for the entire podcast and is recommended to be an "always on" chat room experience.
If a podcast has an "always on" style chat service it is recommended to link that at the `<channel>` level and do not use the `<podcast:chat>` tag at the `<item>` or `<podcast:liveItem>` level. If a podcast has an "always on" style chat service it is recommended to link that at the `<channel>` level and do not use the `<podcast:chat>` tag at the `<item>` or [`<podcast:liveItem>`](liveItem.md) level.
### Parent ### Parent
`<channel>` or `<item>` or `<podcast:liveItem>` `<channel>` or `<item>` or [`<podcast:liveItem>`](liveItem.md)
### Count ### Count

Wyświetl plik

@ -4,11 +4,11 @@
The `contentLink` tag is used to indicate that the content being delivered by the parent element can be found at an external location instead of, or in addition to, the tag itself within an app. In most instances it is used as a fallback link for the user to use when the app itself can't handle a certain content delivery directly. The `contentLink` tag is used to indicate that the content being delivered by the parent element can be found at an external location instead of, or in addition to, the tag itself within an app. In most instances it is used as a fallback link for the user to use when the app itself can't handle a certain content delivery directly.
For instance, perhaps a podcast feed specifies a `<podcast:liveItem>` to deliver a live stream to apps. The feed may also give a `<podcast:contentLink>` pointing to YouTube and Twitch versions of the live stream as well, just in case the listener uses an app that doesn't fully support live streaming content. For instance, perhaps a podcast feed specifies a [`<podcast:liveItem>`](liveItem.md) to deliver a live stream to apps. The feed may also give a `<podcast:contentLink>` pointing to YouTube and Twitch versions of the live stream as well, just in case the listener uses an app that doesn't fully support live streaming content.
### Parent ### Parent
`<item>` or `<podcast:liveItem>` `<item>` or [`<podcast:liveItem>`](liveItem.md)
### Count ### Count
@ -30,7 +30,7 @@ The node value is a free-form string meant to explain to the user where this con
<podcast:contentLink href="https://www.youtube.com/watch?v=8c7HWZROxD8">Watch this episode on YouTube!</podcast:contentLink> <podcast:contentLink href="https://www.youtube.com/watch?v=8c7HWZROxD8">Watch this episode on YouTube!</podcast:contentLink>
``` ```
(under `<podcast:liveItem>`) (under [`<podcast:liveItem>`](liveItem.md))
```xml ```xml
<podcast:contentLink href="https://youtube.com/blahblah/livestream">Live on YouTube!</podcast:contentLink> <podcast:contentLink href="https://youtube.com/blahblah/livestream">Live on YouTube!</podcast:contentLink>

Wyświetl plik

@ -2,7 +2,7 @@
`<podcast:episode>` `<podcast:episode>`
This element exists largely for compatibility with the `season` tag. But, it also allows for a similar idea to what "name" functions as in that element. This element exists largely for compatibility with the [`<podcast:season>`](season.md) tag. But, it also allows for a similar idea to what "name" functions as in that element.
### Parent ### Parent

Wyświetl plik

@ -6,7 +6,7 @@ This tag lists possible donation/funding links for the podcast. The content of t
### Parent ### Parent
`<channel>`, `<item>` or `<podcast:liveItem>` `<channel>`, `<item>` or [`<podcast:liveItem>`](liveItem.md)
### Count ### Count

Wyświetl plik

@ -59,4 +59,4 @@ A working example is https://podnews.net/podcast/i8xe9/listen#fastfollow-podcast
When scanned on a mobile phone's camera app, this link will go to the specified podcast website. Behavior of this website is up to the creator: some may use a default homepage, others may sniff the useragent and open a default podcast app on a device. In the working example, above, an iPhone user may be taken to Apple Podcasts; an Android user may be taken to Google Podcasts; and another device will be given a page with a player. When scanned on a mobile phone's camera app, this link will go to the specified podcast website. Behavior of this website is up to the creator: some may use a default homepage, others may sniff the useragent and open a default podcast app on a device. In the working example, above, an iPhone user may be taken to Apple Podcasts; an Android user may be taken to Google Podcasts; and another device will be given a page with a player.
When scanned on a QR code reader inside a podcast app, like [CurioCaster](https://curiocaster.com/), the app can parse the `podcast:guid` value from the URL, allowing the podcast to be opened within the application. When scanned on a QR code reader inside a podcast app, like [CurioCaster](https://curiocaster.com/), the app can parse the `<podcast:guid>` value from the URL, allowing the podcast to be opened within the application.

Wyświetl plik

@ -2,11 +2,11 @@
`<podcast:integrity>` `<podcast:integrity>`
This element defines a method of verifying integrity of the media given either an [SRI-compliant integrity string](https://www.w3.org/TR/SRI/) (preferred) or a base64 encoded PGP signature. This element is optional within a `<podcast:alternateEnclosure>` element. It allows to ensure that the file has not been tampered with. This element defines a method of verifying integrity of the media given either an [SRI-compliant integrity string](https://www.w3.org/TR/SRI/) (preferred) or a base64 encoded PGP signature. This element is optional within a [`<podcast:alternateEnclosure>`](alternateEnclosure.md) element. It allows to ensure that the file has not been tampered with.
### Parent ### Parent
`<podcast:alternateEnclosure>` [`<podcast:alternateEnclosure>`](alternateEnclosure.md)
### Count ### Count

Wyświetl plik

@ -25,7 +25,7 @@ The node value is a string denoting one of the following possible values:
- `audiobook` - Specific types of audio with one item per feed, or where items represent chapters within the book. - `audiobook` - Specific types of audio with one item per feed, or where items represent chapters within the book.
- `newsletter` - Describes a feed of curated written articles. Newsletter articles now sometimes have an spoken version audio enclosure attached. - `newsletter` - Describes a feed of curated written articles. Newsletter articles now sometimes have an spoken version audio enclosure attached.
- `blog` - Describes a feed of informally written articles. Similar to `newsletter` but more informal as in a traditional blog platform style. - `blog` - Describes a feed of informally written articles. Similar to `newsletter` but more informal as in a traditional blog platform style.
- `publisher` - Describes a feed that links to other feeds a publisher owns using the `<podcast:remoteItem>` element. To understand the structure of how "publisher" feeds work, please see the dedicated document [here](../../publishers/publishers.md) and the `<podcast:publisher>` tag [here](./publisher.md). - `publisher` - Describes a feed that links to other feeds a publisher owns using the [`<podcast:remoteItem>`](remoteItem.md) element. To understand the structure of how "publisher" feeds work, please see the dedicated document [here](../../publishers/publishers.md) and the [`<podcast:publisher>`](publisher.md) tag [here](./publisher.md).
- `course` - A feed of training material (audio or video courses) with each item being a session or chapter of the course or conference track. - `course` - A feed of training material (audio or video courses) with each item being a session or chapter of the course or conference track.
### List Mediums ### List Mediums
@ -34,9 +34,9 @@ In addition to the above mediums, each medium also has a counterpart "list" vari
There is also a dedicated list medium for mixed content: There is also a dedicated list medium for mixed content:
- `mixed` - This list medium type describes a feed of `<podcast:remoteItem>`'s that point to different remote medium types. For instance, a single list feed might point to music, podcast and audiobook items in other feeds. An example would be a personal consumption history feed. - `mixed` - This list medium type describes a feed of [`<podcast:remoteItem>`](remoteItem.md)'s that point to different remote medium types. For instance, a single list feed might point to music, podcast and audiobook items in other feeds. An example would be a personal consumption history feed.
A "list" medium feed should not be expected to have regular `<item>`'s,`<podcast:liveItem>`'s, or any future similar new item type. Rather, a "List" feed is intended to exclusively contain one or more `<podcast:remoteItem>`'s, allowing one to reference a feed by its `<podcast:guid>` and the guid of an item. A "list" medium feed should not be expected to have regular `<item>`'s,[`<podcast:liveItem>`](liveItem.md)'s, or any future similar new item type. Rather, a "List" feed is intended to exclusively contain one or more [`<podcast:remoteItem>`](remoteItem.md)'s, allowing one to reference a feed by its [`<podcast:guid>`](guid.md) and the guid of an item.
### Examples ### Examples

Wyświetl plik

@ -10,9 +10,9 @@ This element specifies a person of interest to the podcast. It is primarily inte
It is suggested that `<channel>` is always populated, and `<item>` is populated where needed for an individual episode. Where present, people information in `<item>` wholly replaces all information from the `<channel>`. It is suggested that `<channel>` is always populated, and `<item>` is populated where needed for an individual episode. Where present, people information in `<item>` wholly replaces all information from the `<channel>`.
Publishers are expected to use the `podcast:person` element in the `<channel>` parent to set the _regular_ people involved in the podcast: the detail that would be expected to be seen in an overview of the show. Publishers are expected to use the `<podcast:person>` element in the `<channel>` parent to set the _regular_ people involved in the podcast: the detail that would be expected to be seen in an overview of the show.
Publishers are expected to use the `podcast:person` in the `<item>` parent to **replace** all existing information for an individual episode. Publishers are expected to use the `<podcast:person>` in the `<item>` parent to **replace** all existing information for an individual episode.
#### For example: _Terry and June_ #### For example: _Terry and June_

Wyświetl plik

@ -14,7 +14,7 @@ Single
### Node value ### Node value
The node value must be one or more `<podcast:remoteItem>` elements. The node value must be one or more [`<podcast:remoteItem>`](remoteItem.md) elements.
### Example ### Example

Wyświetl plik

@ -2,7 +2,7 @@
`<podcast:publisher>` `<podcast:publisher>`
This element allows a podcast feed to link to it's "publisher feed" parent. This is useful when a parent publishing entity wants to attest ownership over all of the podcast feeds it owns/publishes. This element must contain exactly one `<podcast:remoteItem medium="publisher">` element pointing to the publisher feed. For widest compatibility, it is highly recommended to use the `feedUrl` attribute of the `<podcast:remoteItem>` element in this capacity. This element allows a podcast feed to link to it's "publisher feed" parent. This is useful when a parent publishing entity wants to attest ownership over all of the podcast feeds it owns/publishes. This element must contain exactly one `<podcast:remoteItem medium="publisher">` element pointing to the publisher feed. For widest compatibility, it is highly recommended to use the `feedUrl` attribute of the [`<podcast:remoteItem>`](remoteItem.md) element in this capacity.
For complete implementation details regarding publisher feeds and how to create them, please see the full publisher feed [documentation](../../publishers/publishers.md) and the `publisher` medium [here](./medium.md#medium). For complete implementation details regarding publisher feeds and how to create them, please see the full publisher feed [documentation](../../publishers/publishers.md) and the `publisher` medium [here](./medium.md#medium).

Wyświetl plik

@ -2,13 +2,13 @@
`<podcast:remoteItem>` `<podcast:remoteItem>`
This element provides a way to "point" to another feed or an `<item>` in another feed in order to obtain some sort of data that the other feed or feed item has. This allows a podcast app to know where to go and fetch the data being requested. What data is being requested is determined by the parent item. For instance, if the parent item is a `<podcast:podroll>` element, then the remote feed's `<channel>` metadata is needed. This element provides a way to "point" to another feed or an `<item>` in another feed in order to obtain some sort of data that the other feed or feed item has. This allows a podcast app to know where to go and fetch the data being requested. What data is being requested is determined by the parent item. For instance, if the parent item is a [`<podcast:podroll>`](podroll.md) element, then the remote feed's `<channel>` metadata is needed.
Using the `feedGuid` attribute is the preferred way to address a remote feed since, but there are times when an app may not have access to a list of resolvable `<podcast:guid>`'s. In that case, it can be beneficial to include the `feedUrl` attribute for those cases as a fallback. If both are present and the app is capable the `feedGuid` should be resolved and used. Using the `feedGuid` attribute is the preferred way to address a remote feed since, but there are times when an app may not have access to a list of resolvable [`<podcast:guid>`](guid.md)'s. In that case, it can be beneficial to include the `feedUrl` attribute for those cases as a fallback. If both are present and the app is capable the `feedGuid` should be resolved and used.
### Parent ### Parent
`<channel>` or `<podcast:podroll>` or `<podcast:valueTimeSplit>` or `<podcast:publisher>` `<channel>` or [`<podcast:podroll>`](podroll.md) or [`<podcast:valueTimeSplit>`](valueTimeSplit.md) or [`<podcast:publisher>`](publisher.md)
### Count ### Count
@ -16,10 +16,10 @@ Multiple
### Attributes ### Attributes
- **feedGuid** (required) The `<podcast:guid>` of the remote feed being pointed to. - **feedGuid** (required) The [`<podcast:guid>`](guid.md) of the remote feed being pointed to.
- **feedUrl** (optional) The url of the remote feed being pointed to. - **feedUrl** (optional) The url of the remote feed being pointed to.
- **itemGuid** (optional) If this remote item element is intended to point to an `<item>` in the remote feed, this attribute should contain the value of the `<guid>` of that `<item>`. - **itemGuid** (optional) If this remote item element is intended to point to an `<item>` in the remote feed, this attribute should contain the value of the `<guid>` of that `<item>`.
- **medium** (optional) If the feed being pointed to is not of medium type 'podcast', this attribute should contain it's `<podcast:medium>` type from the [list](./medium.md#medium) of types available in this document. The reason this is helpful is to give the app a heads up on what type of data this is expected to be since that may affect the way it approaches fetch and display. - **medium** (optional) If the feed being pointed to is not of medium type 'podcast', this attribute should contain it's [`<podcast:medium>`](medium.md) type from the [list](./medium.md#medium) of types available in this document. The reason this is helpful is to give the app a heads up on what type of data this is expected to be since that may affect the way it approaches fetch and display.
- **title** (optional) A string that represents the title of the remote item. The purpose of this attribute is to give a hint to apps so that they can display the title without having to do a remote lookup. - **title** (optional) A string that represents the title of the remote item. The purpose of this attribute is to give a hint to apps so that they can display the title without having to do a remote lookup.
### Examples ### Examples

Wyświetl plik

@ -2,11 +2,11 @@
`<podcast:source>` `<podcast:source>`
This element defines a uri location for a `<podcast:alternateEnclosure>` media file. It is meant to be used as a child of the `<podcast:alternateEnclosure>` element. At least one `<podcast:source>` element must be present within every `<podcast:alternateEnclosure>` element. This element defines a uri location for a [`<podcast:alternateEnclosure>`](alternateEnclosure.md) media file. It is meant to be used as a child of the [`<podcast:alternateEnclosure>`](alternateEnclosure.md) element. At least one `<podcast:source>` element must be present within every [`<podcast:alternateEnclosure>`](alternateEnclosure.md) element.
### Parent ### Parent
`<podcast:alternateEnclosure>` [`<podcast:alternateEnclosure>`](alternateEnclosure.md)
### Count ### Count

Wyświetl plik

@ -26,7 +26,7 @@ The node value is a string, which is the title of the trailer. It is required. P
- **type:** (recommended) The mime type of the file. This attribute is a string. - **type:** (recommended) The mime type of the file. This attribute is a string.
- **season:** (optional) If this attribute is present it specifies that this trailer is for a particular season number. This attribute is a number. - **season:** (optional) If this attribute is present it specifies that this trailer is for a particular season number. This attribute is a number.
If the `season` attribute is present, it must be a number that matches the format of the `<podcast:season>` tag. So, for a podcast that has 3 published seasons, a new `<podcast:trailer season="4">` tag can be put in the channel to later be matched up with a `<podcast:season>4<podcast:season>` tag when it is published within a new `<item>`. If the `season` attribute is present, it must be a number that matches the format of the [`<podcast:season>`](season.md) tag. So, for a podcast that has 3 published seasons, a new `<podcast:trailer season="4">` tag can be put in the channel to later be matched up with a `<podcast:season>4<podcast:season>` tag when it is published within a new `<item>`.
#### Examples #### Examples

Wyświetl plik

@ -18,7 +18,7 @@ Multiple
### Node Value ### Node Value
The node value must be one or more `<podcast:valueRecipient>` elements. The node value must be one or more [`<podcast:valueRecipient>`](valueRecipient.md) elements.
### Attributes ### Attributes

Wyświetl plik

@ -4,15 +4,15 @@
The `valueRecipient` tag designates various destinations for payments to be sent to during consumption of the enclosed media. Each recipient is considered to receive a "split" of the total payment according to the number of shares given in the `split` attribute. The `valueRecipient` tag designates various destinations for payments to be sent to during consumption of the enclosed media. Each recipient is considered to receive a "split" of the total payment according to the number of shares given in the `split` attribute.
This element may only exist within a parent `<podcast:value>` element. This element may only exist within a parent [`<podcast:value>`](value.md) element.
There is no limit on how many `valueRecipient` elements can be present in a given `<podcast:value>` element. There is no limit on how many `valueRecipient` elements can be present in a given [`<podcast:value>`](value.md) element.
This is a complex tag, so implementors are HIGHLY encouraged to read the companion [document](https://github.com/Podcastindex-org/podcast-namespace/blob/main/value/value.md) for a complete understanding of how this tag works and what it is capable of. This is a complex tag, so implementors are HIGHLY encouraged to read the companion [document](https://github.com/Podcastindex-org/podcast-namespace/blob/main/value/value.md) for a complete understanding of how this tag works and what it is capable of.
### Parent ### Parent
`<podcast:value>` [`<podcast:value>`](value.md)
### Count ### Count

Wyświetl plik

@ -2,15 +2,15 @@
`<podcast:valueTimeSplit>` `<podcast:valueTimeSplit>`
This element allows different value splits for a certain period of time. It is a combination of the concept of <podcast:soundbite> and <podcast:remoteItem> where a start time and a duration is supplied with alternative value recipients. The alternative value recipients are not required to be remote, as the recipients may not have an RSS feed/item of their own to reference. This element allows different value splits for a certain period of time. It is a combination of the concept of [`<podcast:soundbite>`](soundbite.md) and [`<podcast:remoteItem>`](remoteItem.md) where a start time and a duration is supplied with alternative value recipients. The alternative value recipients are not required to be remote, as the recipients may not have an RSS feed/item of their own to reference.
The `<podcast:valueTimeSplit>` element allows time-based changes of value recipient information during playback of a feed's enclosure content. The `<podcast:valueTimeSplit>` element allows time-based changes of value recipient information during playback of a feed's enclosure content.
This can either contain one or more `<podcast:valueRecipient>` tags _or_ exactly one `<podcast:remoteItem>` tag. If a `<podcast:remoteItem>` tag is present, the `remotePercentage` attribute can be defined to control how much the remote value block's `<podcast:valueRecipient>` tags will receive as a whole on top of the default, non-fee `<podcast:valueRecipient>` tags. This can either contain one or more [`<podcast:valueRecipient>`](valueRecipient.md) tags _or_ exactly one [`<podcast:remoteItem>`](remoteItem.md) tag. If a [`<podcast:remoteItem>`](remoteItem.md) tag is present, the `remotePercentage` attribute can be defined to control how much the remote value block's [`<podcast:valueRecipient>`](valueRecipient.md) tags will receive as a whole on top of the default, non-fee [`<podcast:valueRecipient>`](valueRecipient.md) tags.
If the remote value block contains any `<podcast:valueTimeSplit>` tags, they should be ignored even if the `remoteStartTime` indicates it's in a position that would invoke them. When referencing a remote value block, only the root level block splits should be used and any `<podcast:valueTimeSplit>` children are to be ignored. If the remote value block contains any `<podcast:valueTimeSplit>` tags, they should be ignored even if the `remoteStartTime` indicates it's in a position that would invoke them. When referencing a remote value block, only the root level block splits should be used and any `<podcast:valueTimeSplit>` children are to be ignored.
Fees from the default `<podcast:valueRecipient>` tags should remain to be calculated before anything is taken out from `<podcast:valueTimeSplit>`. Fees from the default [`<podcast:valueRecipient>`](valueRecipient.md) tags should remain to be calculated before anything is taken out from `<podcast:valueTimeSplit>`.
### Parent ### Parent
@ -22,14 +22,14 @@ Multiple
### Node Value ### Node Value
A single `<podcast:remoteItem>` element OR one or more `<podcast:valueRecipient>` elements. A single [`<podcast:remoteItem>`](remoteItem.md) element OR one or more [`<podcast:valueRecipient>`](valueRecipient.md) elements.
### Attributes ### Attributes
- `startTime` (required) - The time, in seconds, to stop using the currently active value recipient information and start using the value recipient information contained in this element. - `startTime` (required) - The time, in seconds, to stop using the currently active value recipient information and start using the value recipient information contained in this element.
- `duration` (required) - How many seconds the playback app should use this element's value recipient information before switching back to the value recipient information of the parent feed. - `duration` (required) - How many seconds the playback app should use this element's value recipient information before switching back to the value recipient information of the parent feed.
- `remoteStartTime` (optional) - The time in the remote item where the value split begins. Allows the timestamp to be set correctly in value metadata. If not defined, defaults to 0. - `remoteStartTime` (optional) - The time in the remote item where the value split begins. Allows the timestamp to be set correctly in value metadata. If not defined, defaults to 0.
- `remotePercentage` (optional) - The percentage of the payment the remote recipients will receive if a `<podcast:remoteItem>` is present. If not defined, defaults to 100. If the value is less than 0, 0 is assumed. If the value is greater than 100, 100 is assumed. - `remotePercentage` (optional) - The percentage of the payment the remote recipients will receive if a [`<podcast:remoteItem>`](remoteItem.md) is present. If not defined, defaults to 100. If the value is less than 0, 0 is assumed. If the value is greater than 100, 100 is assumed.
### Example (Remote Item) ### Example (Remote Item)