pull/221/head
Dave Jones 2021-04-01 11:44:58 -05:00
rodzic 8c71b98081
commit 6986119901
1 zmienionych plików z 41 dodań i 145 usunięć

186
README.md
Wyświetl plik

@ -15,7 +15,9 @@ will become the framework that the independent podcast community needs to delive
**Phase 2** - [Closed] Comment period closed on `1/31/21` and 4 tags were adopted.
**Phase 3** - [Open] Proposals welcome. No dates assigned.
**Phase 3** - [Open] Proposals welcome. This phase will close on June 1st, 2021. At that time, any tags with full agreement will be reviewed for
formalization. Any tags with concerns or questions will be pushed forward to the next phase. Current tag proposals under
consideration are listed [here](#phase-3-open).
<br><br>
@ -138,169 +140,63 @@ full implementation details.
<br><br>
### <u>Phase 3 (Open)</u>
### <u>Phase 3 (Open - Closes 6/1/21)</u>
The following tags should be considered purely as proposals. They should not be relied upon or implemented except for testing purposes and experimentation.
The following tags should be considered purely as work in progress proposals. They should not be relied upon or implemented except for testing purposes and experimentation.
<br>
- **<podcast:license url="[https://urlofdetailledlicense]">**[license slug]**\</podcast:license>**
<b>
Channel or Item
```
<podcast:trailer
pubdate="[date of release(RFC 2822)]"
url="[uri of audio/video file(string)]"
length="[file size in bytes(number)]"
type="[mime type(string)]"
season="[season number(number)]"
>
[Title of Trailer(string)]
</podcast:trailer>
```
(optional | single)
</b>
This element defines the license that is applied to the audio content of the episode or the audio of the podcast as a whole. The node value
should be a reference to a slug defined in the license slug file.
Channel
- `url` (optional) This is a url that points to the full license details for this license.
(optional | multiple)
Example: <podcast:license url="https://creativecommons.org/licenses/by/4.0/">cc-by-4.0</podcast:license>
This element is used to define the location of an audio or video file to be used as a trailer for the entire podcast or a specific season. There can be more than one trailer present in the channel of the feed. If there is more than one listed, the most recent one according to it's `pubdate` should be chosen by default within podcast apps. If the `season` attribute is present, then the `<podcast:season>` element it references must also be present within the feed.
<br>
- `pubdate` (required) The date the trailer was published.
- `url` (required) This is a url that points to the audio or video file to be played.
- `length` (recommended) The length of the file in bytes.
- `type` (recommended) The mime type of the file.
- `season` (optional) If this attribute is present it specifies that this trailer is for a particular season number.
- **\<podcast:id platform="[service slug]" id="[platform id]" url="[link to the podcast page on the service]" />**
Example:
```
<podcast:trailer pubdate="Thu, 01 Apr 2021 08:00:00 EST" url="https://example.org/trailers/teaser" length="12345678" type="audio/mp3">Coming April 1st, 2021</podcast:trailer>
```
Channel
Example with Season Linkage:
```
<podcast:trailer pubdate="Thu, 01 Apr 2021 08:00:00 EST" url="https://example.org/trailers/season4teaser" length="12345678" type="video/mp4" season="4">Season 4: Race for the Whitehouse</podcast:trailer>
(optional | multiple)
(combined with)
See "[IDs](#user-content-ids)" in this document for an explanation.
- `platform` (required) This is the service slug of the platform.
- `id` (required) This is the unique identifier for this podcast on the respective platform.
- `url` (optional) A url to the page for this podcast on the respective platform.
<br>
- **\<podcast:social platform="[service slug]" url="[link to social media account]">**[social media handle]**\</podcast:social>**
Channel or Item
(optional | multiple)
This element lists social media accounts for this podcast. The service slugs should be community written into the accompanying serviceslugs.txt file.
The maximum recommended string length of the node value is 128 characters.
<br>
- **\<podcast:category>**[category Name]**\</podcast:category>**
Channel
(optional | multiple)
See "Categories" in this document for an explanation. There can be up to a total of 9 categories defined.
There can be a maximum of 9 category elements defined in a feed. Any number greater than that should be discarded.
Category names are defined in the accompanying "categories.json" file in this repository. They should be referenced in the element by their textual name.
The characters can be in any case. This list of categories aims to replicate the current standard but also eliminate as much as possible compound, heirarchical
naming and the use of ampersands. Thus, "Health & Fitness" becomes "Health" and "Fitness" as two distinct categories. And, "Religion & Spirituality" becomes
two separate categories. Again, they are different things that don't always go together. Splitting them allows for more flexible combinations. And, avoiding
ampersands makes xml encoding errors less likely.
<br>
- **\<podcast:contentRating>**[rating letter]**\</podcast:contentRating>**
Channel or Item
(optional | single)
Specifies the generally accepted rating letter of G, PG, PG-13, R or X. Or, perhaps an age rating system like all, 14, 19, adult. Needs discussion.
<br>
- **\<podcast:previousUrl>**[url this feed was imported from]**\</podcast:previousUrl>**
Channel
(optional | multiple)
Lists the previous url of this feed before it was imported. Any time a feed is moved, an additional **\<podcast:previousUrl>** element
should be added to the channel, to create a paper trail of all the previous urls this feed has lived at. This way, aggregators can easily deduplicate their feed lists.
<br>
- **\<podcast:alternateEnclosure url="[url of media asset]" type="[mime type]" length="[(int)]" bitrate="[(float)]" title="[(string)]" rel="[(string)]" />**
Channel (optional | single)
Item (optional | multiple)
This element is meant to provide alternate versions of an enclosure, such as low or high bitrate, or alternate formats or alternate uri schemes, like IPFS or live streaming.
There may be multiple alternateEnclosure elements in an item, but there must be no more than one in a channel. The presence of this element at the channel level would be
useful for adding a video/audio trailer or intro media that introduces the listener to the podcast. For instance, in a podcast of an audiobook, this could be the book's
introduction or preface. The alternateEnclosure element always refers to an "alternate" media version. The standard RSS enclosure element is always the default media to be played.
An `<enclosure>` tag must be present along with this tag within the item.
- `url` (required) This is the url to the media asset.
- `type` (required) Mime type of the media asset.
- `length` (required) Length of the file in bytes.
- `bitrate` (optional) Encoding bitrate of media asset.
- `title` (required) Alternate assets need a title since main title will apply to primary asset.
- `rel` (optional) Indicates what the purpose of this enclosure is. Like "lowbitrate" for a small file to use over cellular.
<br>
- **\<podcast:indexers>** + **\<podcast:block>[domain, bot or service slug]\</podcast:block>**
Channel (optional | single)
The "indexers" element is meant as a container for one or more `<podcast:block>` elements which send a signal to podcast aggregators whether they are allowed to pull and parse
this feed. If the aggregator is listed as blocked, it should take that as a signal by the feed owner to not index/aggregate this feed.
*Note: this element needs a lot more discussion and work. This is just a placeholder for discussion.*
<br>
- **\<podcast:images srcset="[url to image] [pixelwidth(int)]w,
[url to image] [pixelwidth(int)]w,
[url to image] [pixelwidth(int)]w,
[url to image] [pixelwidth(int)]w" />**
Channel or Item
(optional | single)
This points to a group of images, separated by commas - each with a pixel width declared after them. It is highly recommended that the images referenced
be square (1:1 ratio), as this is the industry standard for podcast album art, and what podcast apps expect to work with. The srcset attribute is designed
to work like the ```srcset``` attribute in the HTML5 specification. Suggested widths are 1500px, 600px, 300px and 150px. See the example feed in this
repo for an example of how this looks in practice.
All attributes are required.
<br>
- **\<podcast:contact type="[feedback or advertising or abuse]">**[email address or url]**\</podcast:contact>**
Channel
(optional | multiple)
This element allows for listing different contact methods for the podcast owner. This could be for general feedback, advertising inquiries, abuse reports, etc. Only one element of each "type"
is allowed.
All attributes are required.
<br>
- **\<podcast:value>**[one or more "valueRecipient" elements]**\</podcast:value>**
Details for this tag are now located in dedicated documentation [here](value/value.md).
- **\<podcast:valueRecipient />**
Details for this tag are now located in dedicated documentation [here](value/value.md).
<podcast:season name="Race for the Whitehouse">4</podcast:trailer>
```
<br><br>
## Current Proposals
A list of the current proposed tags can be found in the issues section [here](/labels/proposal).
## Verification for Importing and Transferring