podlove / podlove-specifications

Specfications by the Podlove Project in MultiMarkdown format
20 stars 7 forks source link

Contributors #23

Open saerdnaer opened 4 years ago

saerdnaer commented 4 years ago

A feed generated by Podlove Publisher exports contributors of an item using the atom:contributor element from RFC4287, currently only using the atom:name and atom:uri elements, where atom:uri is typically not filled in by users :-( .

For example, current state often looks like that:

<item>
  <title>FG072 Verantwortung in der Informatik</title>
  <link>https://forschergeist.de/podcast/fg072-verantwortung-in-der-informatik/</link>
  <pubDate>Tue, 01 Oct 2019 09:00:44 +0000</pubDate>
  <guid isPermaLink="false">podlove-2019-09-25t07:03:05+00:00-ae9b4afff088687</guid>
  …
  <atom:contributor>
    <atom:name>Tim Pritlove</atom:name>
  </atom:contributor>
  <atom:contributor>
    <atom:name>Peter Purgathofer</atom:name>
  </atom:contributor>
</item>

In my option there should be an own document about that usage, optionally extending it with fields for the role of the contributor (host, guest etc.) other external IDs e.g. Twitter handle, Facebook ID, etc.

The Atom spec even allows that using the extensionElement, see definitions below:

atomContributor = element atom:contributor { atomPersonConstruct }
atomPersonConstruct =
      atomCommonAttributes,
      (element atom:name { text }
       & element atom:uri { atomUri }?
       & element atom:email { atomEmailAddress }?
       & extensionElement*)

extensionElement =
      simpleExtensionElement | structuredExtensionElemen
simpleExtensionElement =
      element * - atom:* {
         text
      }
 structuredExtensionElement =
      element * - atom:* {
         (attribute * { text }+,
            (text|anyElement)*)
       | (attribute * { text }*,
          (text?, anyElement+, (text|anyElement)*))
      }

Then the example above could be something like that:

  <atom:contributor>
    <atom:name>Tim Pritlove</atom:name>
    <atom:uri>http://tim.pritlove.org/</atom:uri>
    <atom:role type="host" />
    <atom:id type="twitter">timpritlove</atom:id>
  </atom:contributor>
  <atom:contributor>
    <atom:name>Peter Purgathofer</atom:name>
    <atom:role type="guest" />
    <atom:id type="twitter">peterpur</atom:id>
  </atom:contributor>

Other specs also define contributors on the feed level (which is actually also allowed by the Atom, also compare https://blog.podchaser.com/rss-spec/v1/

saerdnaer commented 3 years ago

Podlove Publisher 3.4.0 introduced usage of <podcast:person> from https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md#person – but guid / uri is not exposed, yet.