Giter VIP home page Giter VIP logo

podex-demo-app's Introduction

PodX

A project to extend the podcast specification to make it easier to make enhanced podcasts

https://www.theguardian.com/info/2019/jun/12/why-we-want-to-make-podcasts-better

A better podcast app, with a goal to improve listener revenue.

A potential mockup of the UI and some of the supported events:

PodX Feed Specification

What is PodX?

PodX is an extension for a podcast’s RSS 2.0 feed.

PodX is an XML namespace designed to be consumed by a podcast client application. PodX event data consists of elements which specify information or interactions to display to a listener of a podcast. Valid elements are identified by name, and contain a set common child elements which specify a time to display information, as well as text descriptions of displayed information to be shown through the client application.

All PodX event elements are expected to be children of item elements, where the item encapsulates an episode of a podcast in a feed.

PodX Event Elements

Element Description
web A web link event contains a href attribute that points to a URL a user can choose to navigate to during the display of en event.

Example:

<podx:web url=”https://www.example.com”>
  <podx:start>1:01</podx:start>
  <podx:end>1:31</podx:end>
  <podx:caption>Check out this relevant web link</podx:caption>
  <podx:notification>Example link</podx:notification>
</podx:web>
image An event contains a href attribute that points to the URL of an image that the user can navigate to, or the PodX client can display

Example:

<podx:image href=”https://www.example.com/example.png ''>
  <podx:start>1:01</podx:start>
  <podx:end>1:31</podx:end>
  <podx:caption>Check out this cool image</podx:caption>
  <podx:notification>Example image</podx:notification>
</podx:image>
socialPrompt An event that contains a list of urls and social media services so that users can choose from a range of options for engaging with podcast producers.

Example:

<podx:socialPrompt>
  <podx:start>1:01</podx:start>
  <podx:end>1:31</podx:end>
  <podx:caption>Follow us on these</podx:caption>
  <podx:notification>Follow us</podx:notification>
  <podx:socialLink url=”https://www.facebook.com/theguardianaustralia”/>
  <podx:socialLink url=”https://www.instagram.com/guardianaustralia”/>
</podx:socialPrompt>
text An event to show text from the caption element without additional unique elements or attributes.

Example:

<podx:text>
  <podx:start>1:01</podx:start>
  <podx:end>1:31</podx:end>
  <podx:caption>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</podx:caption>
  <podx:notification>Lorem ipsum</podx:notification>
</podx:text>
support A web link event pointing to a site that allows a listener to support podcast producers. Identical to the web link event in structure and function, but enables the podcast client application to differentiate for display.

Example:

<podx:support url=”https://support.theguardian.com/au/support”>
  <podx:start>1:01</podx:start>
  <podx:end>1:31</podx:end>
  <podx:caption>Support our efforts to podcast</podx:caption>
  <podx:notification>Support us</podx:notification>
</podx:support>
feedLink A web link event with an additional attribute to point to an item element or episode of a podcast feed pointed to by the URL. A third optional attribute specifies a point in normal play time from the start of playback to begin playing. This way the user can be taken to a specific point in a different podcast episode and begin playback at that point.

Example:

<podx:feedLink>
  <podx:start>1:01</podx:start>
  <podx:end>1:31</podx:end>
  <podx:caption>Support our efforts to podcast</podx:caption>
  <podx:notification>Support us</podx:notification>
  <podx:feedUrl>https://interactive.guim.co.uk/podx/podcast.xml</podx:feedUrl>
  <podx:feedItemTitle> A whole lot of images </podx:feedItemTitle>
  <podx:feedItemPubDate>Fri, 08 Nov 2019 19:00:43 GMT</podx:feedItemPubDate>
  <podx:feedItemGuid>5dc4f4838f08c2d1f80dbe45</podx:feedItemGuid>
  <podx:feedItemEnclosureUrl>https://flex.acast.com/audio.guim.co.uk/2019/11/08-18765-APLlaborreport.mp3</podx:feedItemEnclosureUrl>
  <podx:feedItemAudioTimeStamp>1:11</podx:feedItemAudioTimeStamp>
</podx:FeedLink>
callPrompt Contact details to initiate a call or text to a predefined contact number. The number to contact is specified as an attribute.

Example:

<podx:callPrompt number=”01189998819991197253”>
  <podx:start>1:01</podx:start>
  <podx:end>1:31</podx:end>
  <podx:caption>Call out chat line</podx:caption>
  <podx:notification>Call us</podx:notification>
</podx:callPrompt>
newsletterSignup A web link event pointing to a form to enter details required to sign up to a newsletter. Identical to the web link event in structure and function, but enables the podcast client application to differentiate for display.

Example:

<podx:newsletterSignup url=”https://www.theguardian.com/world/guardian-australia-morning-mail/2014/jun/24/-sp-guardian-australias-morning-mail-subscribe-by-email”>
  <podx:start>1:01</podx:start>
  <podx:end>1:31</podx:end>
  <podx:caption>Sign up to the morning mail</podx:caption>
  <podx:notification>Morning mail</podx:notification>
</podx:newsletterSignup>
feedback A web link event pointing to a form to submit feedback to podcast producers. Identical to the web link event in structure and function, but enables the podcast client application to differentiate for display.

Example:

<podx:feedback url=”https://www.theguardian.com/info/2013/may/26/contact-guardian-australia”>
  <podx:start>1:01</podx:start>
  <podx:end>1:31</podx:end>
  <podx:caption>Contact us to let us know what you think</podx:caption>
  <podx:notification>Contact us</podx:notification>
</podx:feedback>
poll A web link event pointing to a poll or survey. Identical to the web link event in structure and function, but enables the podcast client application to differentiate for display.

Example:

<podx:poll url=”https://www.theguardian.com/environment/ng-interactive/2019/oct/27/australian-bird-of-the-year-2019-vote-for-your-favourite”>
  <podx:start>1:01</podx:start>
  <podx:end>1:31</podx:end>
  <podx:caption>Vote in this poll</podx:caption>
  <podx:notification>Vote here</podx:notification>
</podx:poll>

PodX Common Elements

Common elements are elements that are available or required children for PodX event elements.

Element Description
start A point in playback of a podcast expressed in normal play time relative to the start of an audio file in the parent item. The expected format is HH:MM:SS.mmm or MM:SS.mmm or SS.mmm Leading and trailing zero values can be trimmed, and milliseconds are optional.

The parent event is to be displayed from this timestamp.

Example:

<podx:start>1:30</podx:start>
end The point in playback of a podcast expressed in normal play time relative to the start of an audio file in the parent item. The expected format is the same as the format.

Display of the parent event is to end at this timestamp. It is expected for the end time to a after the start time.

Example:

<podx:end>1:10:30.55</podx:end>
caption Text to display to a listener along with an event.

Example:

<podx:caption>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</podx:caption>
notification A condensed version of the caption, to be displayed in notifications associated with the event.

Example

<podx:notification>Lorem ipsum</podx:notification>

web attributes and elements

Attributes

Attribute Description
url A generic url that is to be opened in a browser

image attributes and elements

Attributes

Attribute Description
href A uri for an image to be displayed during playback

socialPrompt attributes and elements

Elements

Element Description
socialLink A link to a social media profile. The url and type are stored as attributes.

Example:

<podx:socialLink url=”https://www.instagram.com/guardianaustralia”/>

socialPrompt attributes and elements

Attributes

Attribute Description
url A url that points to a social network profile. The podcast client can also identify which know social media sites are present using the url.

support attributes and elements

Attributes

Attribute Description
url A url that points to a page that allows listeners to financially support podcast producers.

feedLink attributes and elements

Elements

Element Description
feedUrl The url of an rss feed that describes a podcast.
feedItemTitle The title field of an item element to be used to identify the item that describes the linked episode to begin playing.
feedItemPubDate The published date field of an item element to be used to identify the item that describes the linked episode to begin playing.
feedItemGuid The guid field of an item element to be used to identify the item that describes the linked episode to begin playing. Guids may not be set in feeds.
feedItemEnclosureUrl The the url attribute of the enclosure field of an item element to be used to identify the item that describes the linked episode to begin playing. This could be used to begin playback if other data is missing or malformed.
feedItemAudioTimeStamp A timestamp to start playing an episode at in normal play time relative to the start of an audio file in the parent item. The expected format is HH:MM:SS.mmm or MM:SS.mmm or SS.mmm Leading and trailing zero values can be trimmed, and milliseconds are optional.

callPrompt attributes and elements

Attributes

Attribute Description
number A phone number that a listener can call

newsletterSignup attributes and elements

Attributes

Attribute Description
url A url that points to a newsletter signup form to be opened in a browser.

feedback attributes and elements

Attributes

Attribute Description
url A url that points to contact details or a feedback form to be opened in the browser.

poll attributes and elements

Attributes

Attribute Description
url A url that points to a poll to be opened in the browser.

podex-demo-app's People

Contributors

rohanspencer avatar nickjevershed avatar

Stargazers

Dino Su avatar Rahul avatar tg-z avatar Vito Belgiorno-Zegna avatar chonamdoo avatar

Watchers

James Padolsey avatar Francis Rhys-Jones avatar scott wolfe avatar theguardian.com continuous integration avatar Francis avatar Bill Montgomery avatar Alvin Chang avatar  avatar Luke Hoyland avatar James Cloos avatar Nathaniel Bennett avatar Garry Blight avatar Alex Breuer avatar James Mockett avatar Ollie avatar George Haberis avatar Flavian Alexandru avatar C Moran avatar Andy Ball avatar Josh Holder avatar Richard Bangay avatar Reetta Vaahtoranta avatar Ada Wojtukowicz avatar Peter Andringa avatar Zeek Ikomoni avatar Guy Dawson avatar Pablo Gutierrez avatar Brendan avatar Lee Rodgers avatar Trent Nixon avatar Simon Roberts avatar CABarr avatar Juan Vaccari avatar Fedor Shabashev avatar Mohammad Haque avatar Frank Sloan avatar Emma Hunt avatar Natalia Baltazar avatar Colin King avatar Luke Taylor avatar Sakib Supple avatar Jack Podmore avatar Prout avatar Ashley Kirk avatar Dominik Lander avatar Ron Sibayan avatar Andrew Magee avatar Dave Allison avatar Martin Kuzdowicz avatar Jonny Weeks avatar Anna Vissens avatar Antonio Voce avatar Rashida avatar Zef avatar Alice Morris avatar Marjan Kalanaki avatar Lucius Vorenus avatar  avatar Ioanna Kokkini avatar Francesca Hammond avatar Yusuf Parkar avatar Amo Khan avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.