Merge branch 'main' into main

pull/58/head
Tom Rossi 2020-10-19 12:28:10 -04:00 zatwierdzone przez GitHub
commit 0a23f577ab
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 4AEE18F83AFDEB23
8 zmienionych plików z 230 dodań i 147 usunięć

145
README.md
Wyświetl plik

@ -1,8 +1,8 @@
# The "podcast" Namespace
A wholistic rss namespace for podcasting that is meant to synthesize the fragmented world of podcast namespaces. The broad goal is to create one namespace
to rule them all, that is easily extensible, community controlled/authored and addresses the needs of the independent podcast industry now and in the future.
The large podcast platforms have shown virtually no interest in extending their namespaces for new functionality in many years. Our hope is that this namespace
A wholistic rss namespace for podcasting that is meant to synthesize the fragmented world of podcast namespaces. The broad goal is to create a single, compact, efficient
namespace that is easily extensible, community controlled/authored and addresses the needs of the independent podcast industry now and in the future.
Our hope is that this namespace
will become the framework that the independent podcast community needs to deliver new functionality to apps and aggregators.
@ -15,27 +15,20 @@ There is significant overlap amongst the many existing podcast namespaces. Each
system and audience the metadata they need in the way they want it delivered.
## Goal #2 - Minimize Attributes and Sub-elements
Attributes in xml elements should be used only where absolutely needed. The preference is to create a new element type, rather than reuse the same element with
different attributes. For example, instead of using **\<podcast:image type="Large">**, we would use **\<podcast:imageLarge>**. This makes the corresponding
aggregator code easier and more linear. Sub-elements should be avoided if at all possible.
## Goal #3 - Keep "required" tags minimal
## Goal #2 - Keep "required" tags and attributes minimal
The only required tags should be those that solve an overwhelming need in the industry. Requiring tags is a roadblock to adoption and should be avoided. Attributes
should also only be required when they are key to the functionality of the tag.
## Goal #4 - Keep Exisiting Conventions
## Goal #3 - Keep Exisiting Conventions
Reinventing the wheel helps nobody. When at all possible, existing conventions should be maintained. For example, it would make sense to turn **\<podcast:explicit>** into
a unary element, where it's existence is taken as a "yes" and it's absence as a "no". But, that has never been the standard. And, given as how this namespace will probably
sit alongside at least one other namespace, it makes sense to keep existing conventions in place.
## Goal #5 - Be General... to a point
## Goal #4 - Be General... to a point
There is no way to address every possible metadata point that each platform would want. That is not the aim. Instead we focus on defining the elements that would be useful
to the broadest set of apps, publishers, platforms and aggregators. Individual parties can keep their respective supplemental namespaces small and targeted as an adjunct to
@ -44,7 +37,26 @@ this larger namespace. But, we don't want to be so general that the spec become
## The Guiding Principles
Our guiding principles for development of this namespace are the "[Rules for Standards Makers](http://scripting.com/2017/05/09/rulesForStandardsmakers.html)" by Dave Winer. Please read it before contributing if you aren't familiar with it.
Our guiding principles for development of this namespace are the "[Rules for Standards Makers](http://scripting.com/2017/05/09/rulesForStandardsmakers.html)" by Dave Winer.
Please read it before contributing if you aren't familiar with it.
## Official XMLNS Definition
To see the formalized tags, the official definition file is [here](docs/1.0.md).
## Supporting Platforms and Apps
To see a list of platforms and apps that currently implement some or all of these tags, see the list [here](docs/element-support.md).
## Example Feed
There is an example feed [example.xml](example.xml) in this repository showing the podcastindex namespace side by side with the Apple itunes namespace. There is also
a "sandbox" feed where we experiment with tags while they are being hashed out.
The url for that feed is: [https://noagendaassets.com/enc/pc20sandbox.xml](https://noagendaassets.com/enc/pc20sandbox.xml).
<br><br>
@ -54,7 +66,7 @@ Our guiding principles for development of this namespace are the "[Rules for Sta
<br>
- **\<podcast:locked owner="[podcast owner email address]">**[yes or no]**\</podcast:locked>**
- **\<podcast:locked owner="[podcast owner email address]">**[yes or no]**\</podcast:locked>** (formalized)
Channel
@ -71,7 +83,7 @@ Our guiding principles for development of this namespace are the "[Rules for Sta
<br>
- **\<podcast:transcript url="[url to a file or website]" type="[mime type]" rel="captions" language="[language code]" />**
- **\<podcast:transcript url="[url to a file or website]" type="[mime type]" rel="captions" language="[language code]" />** (formalized)
Item
@ -84,26 +96,21 @@ Our guiding principles for development of this namespace are the "[Rules for Sta
<br>
- **\<podcast:chapter start="[(int or float)]" title="[(string)]" href="[uri to content]" type="[mime type]"/>**
- **\<podcast:chapters url="[url to chapter data file]" type="[mime type]" />**
Item
(optional | multiple)
(optional)
This element specifies a point in time during the podcast that can be linked to directly and optionally supplemented with additional content.
Attributes:
- `start` (required) Used to identify the starting point of the chapter within the podcast. Start time is expressed as seconds since the start time of the podcast.
- `title` (optional) Used as a user facing identifier for this chapter.
- `href` (optional) Points to a url containing additional user facing content, like an image or wiki entry.
- `type` (optional) This attribute is strongly encouraged if `href` is used so that apps can handle the external chapter content appropriately.
Links to an external file (see example file) containing chapter data for the episode. The mime type of the file should be given - JSON prefered, `application/json`. See
the [jsonChapters.md](chapters/jsonChapters.md) file for a description of the chapter file syntax. And, see the [example.json](chapters/example.json) example file for
a real world example.
<br>
- **\<podcast:location latlon="[latitude,longitude]" (osmid="[OSM type][OSM id]")>**[CountryCode(|Locality)]**\</podcast:location>**
Channel (required | single)
Channel (optional | single)
Item (optional | multiple)
@ -116,9 +123,11 @@ Our guiding principles for development of this namespace are the "[Rules for Sta
- CountryCode: (required) The ISO 3166-1 alpha-2 country code, eg 'US'. (Note that the United Kingdom is 'GB', not 'UK'.)
- Locality: (recommended) With a pipe separator from the countrycode, this is a humanly-readable place name as preferred by the podcast publisher.
The maximum recommended string length of the node value is 128 characters.
<br>
- **\<podcast:person name="[(string)]" role="[host or guest]" img="[(uri of content)]" href="[(uri to website/wiki/blog)]"/>**
- **\<podcast:person role="[host or guest]" img="[(uri of content)]" href="[(uri to website/wiki/blog)]">**[name of person]**</podcast:person>**
Channel or Item (optional | multiple)
@ -129,6 +138,8 @@ Our guiding principles for development of this namespace are the "[Rules for Sta
- `img` (optional) This is the url of a picture or avatar of the person.
- `href` (optional) Link to a relevant resource of information about the person. (eg. website, blog or wiki entry).
The maximum recommended string length of the node value is 128 characters.
<br>
- **\<podcast:contact type="[feedback or advertising or abuse]" method="[email or link]">**[email address or url]**\</podcast:contact>**
@ -143,22 +154,24 @@ Our guiding principles for development of this namespace are the "[Rules for Sta
<br>
- **\<podcast:alternateEnclosure type="[mime type]" length="[(int)]" bitrate="[(float)]" title="[(string)]" stream>**[uri of media asset]**\</podcast:alternateEnclosure>**
- **\<podcast:alternateEnclosure url="[url of media asset]" type="[mime type]" length="[(int)]" bitrate="[(float)]" title="[(string)]" stream />**
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.
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.
All attributes are required except for "stream". "stream" is a boolean attribute that indicates the uri points to a streaming media that is not downloadable.
- `url` (required) This is the url to the media asset.
- `type` (required) Mime type of the media asset.
- `length` (required) Duration of media asset in seconds.
- `bitrate` (optional) Encoding bitrate of media asset.
- `title` (required) Alternate assets need a title since main title will apply to primary asset.
- `stream` (optional) Boolean attribute that indicates the uri points to a streaming media that is not downloadable.
<br>
- **\<podcast:id platform="[service slug]">**[the id string]**\</podcast:id>**
- **\<podcast:id platform="[service slug]" id="[platform id]" url="[link to the podcast page on the service]" />**
Channel
@ -166,61 +179,45 @@ Our guiding principles for development of this namespace are the "[Rules for Sta
See "ID's" in this document for an explanation.
All attributes are required.
- `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:imageLarge size="[pixel width]">**[url to a large image file]**\</podcast:imageLarge>**
- **\<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 is assumed to point to an image that is 1000px or larger in size. The image must be square (1:1 ratio). The image content may differ from other images specified in
the feed where appropriate.
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:imageMedium size="[pixel width]">**[url to a medium image file]**\</podcast:imageMedium>**
Channel or Item
(optional | single)
This is assumed to point to an image that is 300px to 999px in size.
The image must be square (1:1 ratio). The image content may differ from other images specified in the feed where appropriate.
All attributes are required.
<br>
- **\<podcast:imageSmall size="[pixel width]">**[url to a small image file]**\</podcast:imageSmall>**
Channel or Item
(optional | single)
This is assumed to point to an image that is 299px or less in size.
The image must be square (1:1 ratio). The image content may differ from other images specified in the feed where appropriate.
All attributes are required.
<br>
- **\<podcast:funding platform="[service slug]" title="[user provided note (string)]">**[url for the show at the platform]**\</podcast:funding>**
- **\<podcast:funding url="[url for the show at the platform] platform="[service slug]">**[user provided content to link]**\</podcast:funding>**
Channel or Item
(optional | multiple)
This element lists multiple possible donation/funding links for the podcast. The node value should contain the full url of the donation page.
This element lists multiple possible donation/funding links for the podcast.
Attributes:
- `url` (required) Full url to the specific show on the funding platform.
- `platform` (required) Identifies a payment or funding platform for the podcast. Service slugs should be recorded here in the repository.
- `title` (optional) Used as free form string from the podcast owner to show to the listeners. Ex. "Support us on Patreon!"
- `node value` (required) Used as free form string from the podcast owner to show to the listeners. Ex. "Support us on Patreon!"
The maximum recommended string length of the node value is 128 characters.
<br><br>
@ -236,6 +233,8 @@ Our guiding principles for development of this namespace are the "[Rules for Sta
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>**
@ -317,12 +316,4 @@ representing the platform, directory, host, app or service. The slugs will look
- anchor
- overcast
More should be added by the community as needed. This is just a starter list.
<br><br>
## Example feed
There is an example feed (example.xml) in this repository showing the podcastindex namespace side by side with the Apple itunes namespace.
More should be added by the community as needed. This is just a starter list. The full list is [here](serviceslugs.txt).

Wyświetl plik

@ -0,0 +1,42 @@
{
"version": "1.0.0",
"chapters":
[
{
"startTime": 0,
"title": "Intro"
},
{
"startTime": 168,
"title": "Hearing Aids"
},
{
"startTime": 260,
"title": "Progress Report"
},
{
"startTime": 410,
"title": "Namespace",
"img": "https://noagendaassets.com/enc/1602976942.638_pc20feedss.jpg",
"url": "https://github.com/Podcastindex-org/podcast-namespace"
},
{
"startTime": 3990,
"title": "Just Break Up",
"img": "https://noagendaassets.com/enc/1602977264.567_80ad58e16124df27.png",
"url": "https://twitter.com/justbreakuppod"
},
{
"startTime": 5510,
"title": "The Big Players"
},
{
"startTime": 5854,
"title": "Spread the Word"
},
{
"startTime": 6089,
"title": "Outro"
}
]
}

Wyświetl plik

@ -0,0 +1,19 @@
This is the initial spec for a json chapter format that can be referenced in an RSS feed using the "podcast" namespace.
The "chapters" property is an array of "chapter" objects taking this form:
```
{
"startTime": 94,
"title": "Donation Segment",
"img": "http://example.com/podcast/episode/chapter_art2.jpg",
"url": "http://example.com/link/to/funding_platform"
}
```
Attributes:
- `startTime` (required - float) The time, expressed in seconds with float precision for fractions of a second.
- `title` (required - string) The title of this chapter.
- `img` (optional - string) The url of an image to use as chapter art.
- `url` (optional - string) The url of a web page or supporting document that's related to the topic of this chapter.

Wyświetl plik

@ -10,5 +10,8 @@ Todd Cochrane
@PhoneBoy
Ben Slinger
Martin Mouritzen
Andy Beard
... add your name as you contribute!

Wyświetl plik

@ -1,7 +1,9 @@
# RSS Namespace Extension for Podcast (xmlns:podcast DTD)
# RSS Namespace Extension for Podcast
A wholistic RSS namespace for podcasting that is meant to synthesize the fragmented world of podcast namespaces. As elements are canonized, they will be added to this document so developers can begin implementation. The specifications below are considered locked and the team will prioritize backward compatibility. We are operating under the [Rules for Standards-Makers](http://scripting.com/2017/05/09/rulesForStandardsmakers.html).
A wholistic RSS namespace for podcasting that is meant to synthesize the fragmented world of podcast namespaces. The broad goal is to create one namespace to rule them all, that is easily extensible, community controlled/authored and addresses the needs of the independent podcast industry now and in the future. The large podcast platforms have shown virtually no interest in extending their namespaces for new functionality in many years. Our hope is that this namespace will become the framework that the independent podcast community needs to deliver new functionality to apps and aggregators.
If your application generates RSS feeds and you implement one or more elements below, you will need to link this DTD in your XML.
`<rss version="2.0" xmlns:podcast="https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md">`
# Podcast Tags
Each tag below exists in the podcast namespace within the specified parent. All attributes are required unless explicitly specified as optional.

Wyświetl plik

@ -0,0 +1,15 @@
# Application Support by Element
For elements that are included in the official [DTD](https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md), we will highlight applications offering production support.
# Elements
## Transcript `<podcast:transcript>`
1. [Buzzsprout](https://www.buzzsprout.com/blog/transcription-tools)
2. [Podcast Addict](https://podcastaddict.com/changelog/2020_14#section1)
3. [Podfriend](https://twitter.com/GoPodfriend/status/1316847938828742656)
4. [Podnews](https://podnews.net/rss)
## Locked `<podcast:locked>`
1. [Buzzsprout](https://www.buzzsprout.com/)
2. [Podnews](https://podnews.net/rss)

Wyświetl plik

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:podcast="https://github.com/Podcastindex-org/podcastindex-namespace" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0">
<rss xmlns:podcast="https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0">
<channel>
<title>Podcast Feed Template</title>
<description>This is a fake show that exists only as an example of the "podcastindex" namespace.</description>
<description>This is a fake show that exists only as an example of the "podcast" namespace.</description>
<link>http://podcastindex.org</link>
<docs>http://blogs.law.harvard.edu/tech/rss</docs>
<language>en-US</language>
@ -12,19 +12,23 @@
<managingEditor>dave@podcastindex.org (Dave Jones)</managingEditor>
<webMaster>support@podcastindex.org (Tech Support)</webMaster>
<image>
<url>https://raw.githubusercontent.com/Podcastindex-org/art-graphics-logos/master/pci_avatar.jpg</url>
<url>https://example.com/images/pci_avatar-massive.jpg</url>
<title>Podcast Feed Template</title>
<link>https://podcastindex.org</link>
</image>
<podcast:locked owner="podcastowner@domain.com">yes</podcast:locked>
<podcast:location latlon="39.9622,83.0007" osmid="R182706">US|Columbus, OH</podcast:location>
<itunes:author>Dave Jones</itunes:author>
<itunes:explicit>no</itunes:explicit>
<itunes:type>episodic</itunes:type>
<podcast:location latlon="39.9622,83.0007" osmid="R182706">US|Columbus, OH</podcast:location>
<itunes:image>https://raw.githubusercontent.com/Podcastindex-org/art-graphics-logos/master/pci_avatar.jpg</itunes:image>
<podcast:imageLarge>https://raw.githubusercontent.com/Podcastindex-org/art-graphics-logos/master/pci_avatar.jpg</podcast:imageLarge>
<podcast:imageMedium>https://raw.githubusercontent.com/Podcastindex-org/art-graphics-logos/master/pci_avatar.jpg</podcast:imageMedium>
<podcast:imageSmall>https://raw.githubusercontent.com/Podcastindex-org/art-graphics-logos/master/pci_avatar.jpg</podcast:imageSmall>
<itunes:image>https://example.com/images/pci_avatar-massive.jpg</itunes:image>
<podcast:images srcset="https://example.com/images/pci_avatar-massive.jpg 1500w,
https://example.com/images/pci_avatar-middle.jpg 600w,
https://example.com/images/pci_avatar-small.jpg 300w,
https://example.com/images/pci_avatar-tiny.jpg 150w" />
<podcast:category>News</podcast:category>
<podcast:category>Commentary</podcast:category>
@ -42,9 +46,9 @@
<podcast:previousUrl>https://yeoldhostingprovider.com/podcast479923</podcast:previousUrl>
<podcast:previousUrl>https://myveryfirstpodcasthost.com/show251.xml</podcast:previousUrl>
<podcast:id>1348299</podcast:id>
<podcast:id platform="itunes">39423340445</podcast:id>
<podcast:id platform="blubrry">83043423</podcast:id>
<podcast:id platform="podcastindex" id="920666" />
<podcast:id platform="apple" id="23409402344" url="https://podcasts.apple.com/us/shows/id23409402344" />
<podcast:alternateEnclosure type="video/mp4" length="11540076" bitrate="512" title="Trailer">https://example.com/pc20trailer.mp4</podcast:alternateEnclosure>
<item>
@ -55,16 +59,18 @@
<pubDate>Fri, 09 Oct 2020 04:30:38 GMT</pubDate>
<author>adam@podcastindex.org (Adam Curry)</author>
<itunes:image>https://podcastindex.org/ep0003/artMd.jpg</itunes:image>
<podcast:imageLarge>https://podcastindex.org/ep0003/artLg.jpg</podcast:imageLarge>
<podcast:imageMedium>https://podcastindex.org/ep0003/artMd.jpg</podcast:imageMedium>
<podcast:imageSmall>https://podcastindex.org/ep0003/artSm.jpg</podcast:imageSmall>
<podcast:images srcset="https://example.com/images/ep3/pci_avatar-massive.jpg 1500w,
https://example.com/images/ep3/pci_avatar-middle.jpg 600w,
https://example.com/images/ep3/pci_avatar-small.jpg 300w,
https://example.com/images/ep3/pci_avatar-tiny.jpg 150w" />
<itunes:explicit>no</itunes:explicit>
<podcast:transcript type="text/plain">https://podcastindex.org/ep0003/transcript.txt</podcast:transcript>
<podcast:transcript url="https://example.com/ep3/transcript.txt" type="text/plain" />
<podcast:host href="http://example.com/adamcurry" img="http://example.com/images/adamcurry.jpg">Adam Curry</podcast:host>
<podcast:guest href="http://example.com/davejones" img="http://example.com/images/davejones.jpg">Dave Jones</podcast:guest>
<enclosure url="https://mp3s.nashownotes.com/PC20-03-2020-09-18-Final.mp3" length="62407829" type="audio/mpeg"/>
<podcast:alternateEnclosure type="audio/x-m4a" length="1540076" bitrate="80" title="Audio - low bitrate">https://podcastindex.org/ep0003/audio/podnews201009.m4a</podcast:alternateEnclosure>
<podcast:alternateEnclosure type="audio/mpeg" length="2534548" bitrate="160" title="Audio - high bitrate">https://podcastindex.org/ep0003/audio/podnews201009.mp3</podcast:alternateEnclosure>
<podcast:chapters url="https://example.com/ep3_chapters.json" type="application/json"/>
</item>
<item>
@ -75,9 +81,10 @@
<pubDate>Thu, 08 Oct 2020 04:30:38 GMT</pubDate>
<author>adam@podcastindex.org (Adam Curry)</author>
<itunes:image>https://podcastindex.org/ep0002/artMd.jpg</itunes:image>
<podcast:imageLarge>https://podcastindex.org/ep0002/artLg.jpg</podcast:imageLarge>
<podcast:imageMedium>https://podcastindex.org/ep0002/artMd.jpg</podcast:imageMedium>
<podcast:imageSmall>https://podcastindex.org/ep0002/artSm.jpg</podcast:imageSmall>
<podcast:images srcset="https://example.com/images/ep2/pci_avatar-massive.jpg 1500w,
https://example.com/images/ep2/pci_avatar-middle.jpg 600w,
https://example.com/images/ep2/pci_avatar-small.jpg 300w,
https://example.com/images/ep2/pci_avatar-tiny.jpg 150w" />
<itunes:explicit>no</itunes:explicit>
<podcast:transcript type="application/json" language="es" rel="captions">https://podcastindex.org/ep0002/transcript_es.json</podcast:transcript>
<podcast:transcript type="application/srt">https://podcastindex.org/ep0002/transcript.srt</podcast:transcript>
@ -86,6 +93,7 @@
<enclosure url="https://mp3s.nashownotes.com/PC20-02-2020-09-11-Final.mp3" length="59902895" type="audio/mpeg"/>
<podcast:alternateEnclosure type="audio/x-m4a" length="1540076" bitrate="80" title="Audio - low bitrate">https://podcastindex.org/ep0002/audio/podnews201009.m4a</podcast:alternateEnclosure>
<podcast:alternateEnclosure type="audio/mpeg" length="2534548" bitrate="160" title="Audio - high bitrate">https://podcastindex.org/ep0002/audio/podnews201009.mp3</podcast:alternateEnclosure>
<podcast:chapters url="https://example.com/ep2_chapters.json" type="application/json"/>
</item>
<item>
@ -96,16 +104,19 @@
<pubDate>Wed, 07 Nov 2020 04:29:49 GMT</pubDate>
<author>adam@podcastindex.org (Adam Curry)</author>
<itunes:image>https://podcastindex.org/ep0001/artMd.jpg</itunes:image>
<podcast:imageLarge>https://podcastindex.org/ep0001/artLg.jpg</podcast:imageLarge>
<podcast:imageMedium>https://podcastindex.org/ep0001/artMd.jpg</podcast:imageMedium>
<podcast:imageSmall>https://podcastindex.org/ep0001/artSm.jpg</podcast:imageSmall>
<podcast:images srcset="https://example.com/images/ep2/pci_avatar-massive.jpg 1500w,
https://example.com/images/ep2/pci_avatar-middle.jpg 600w,
https://example.com/images/ep2/pci_avatar-small.jpg 300w,
https://example.com/images/ep2/pci_avatar-tiny.jpg 150w" />
<itunes:explicit>no</itunes:explicit>
<podcast:transcript type="text/html">https://podcastindex.org/ep0001/transcript.html</podcast:transcript>
<podcast:transcript url="https://example.com/ep1/transcript.html" type="text/html" />
<podcast:transcript url="https://example.com/ep1/transcript_es.html" type="text/html" language="es" />
<podcast:host href="http://example.com/adamcurry" img="http://example.com/images/adamcurry.jpg">Adam Curry</podcast:host>
<podcast:guest href="http://example.com/davejones" img="http://example.com/images/davejones.jpg">Dave Jones</podcast:guest>
<enclosure url="https://mp3s.nashownotes.com/PC20-01-2020-08-28-Final.mp3" length="61222288" type="audio/mpeg"/>
<podcast:alternateEnclosure type="audio/x-m4a" length="1540076" bitrate="80" title="Audio - low bitrate">https://podcastindex.org/ep0001/audio/podnews201009.m4a</podcast:alternateEnclosure>
<podcast:alternateEnclosure type="audio/mpeg" length="2534548" bitrate="160" title="Audio - high bitrate">https://podcastindex.org/ep0001/audio/podnews201009.mp3</podcast:alternateEnclosure>
<podcast:chapters url="https://example.com/ep1_chapters.json" type="application/json"/>
</item>
</channel>
</rss>

Wyświetl plik

@ -1,48 +1,48 @@
podcastindex
blubrry
captivate
rss.com
fireside
transistor
libsyn
overcast
podcastaddict
hypercatcher
acast
amazon
anchor
apple
google
podverse
podfriend
spotify
amazon
bitcoin
paypal
twitter
mastodon
slack
relayfm
buzzsprout
castos
podbean
simplecast
resonate
soundcloud
spreaker
podserve
podiant
backtracks
audioboom
megaphone
whooshkaa
acast
redcircle
podcasts.com
omnystudio
podigee
shoutengine
pinecast
podomatic
zencast
podchaser
podiant
backtracks
bitcoin
blubrry
buzzsprout
captivate
castos
fireside
google
hypercatcher
libsyn
mastodon
megafono
megaphone
omnystudio
overcast
paypal
pinecast
podbean
podcastaddict
podcastindex
podcasts.com
podchaser
podfriend
podiant
podigee
podnews
podomatic
podserve
podverse
redcircle
relayfm
resonate
rss.com
shoutengine
simplecast
slack
soundcloud
spotify
spreaker
transistor
twitter
whooshkaa
zencast