2020-06-04 Fred Gleason <fredg@paravelsystems.com>

* Added an 'iTunes + Superfeed' RSS schema.

Signed-off-by: Fred Gleason <fredg@paravelsystems.com>
This commit is contained in:
Fred Gleason 2020-06-04 15:10:45 -04:00
parent 52c86055eb
commit 7ff0b9626f
10 changed files with 276 additions and 13 deletions

2
.gitignore vendored
View File

@ -35,6 +35,8 @@ configure
depcomp
docs/apis/*.html
docs/apis/*.pdf
docs/dtds/superfeed.html
docs/dtds/superfeed.pdf
docs/opsguide/*.html
docs/opsguide/*.pdf
docs/opsguide/chain.png

View File

@ -19998,3 +19998,5 @@
2020-05-21 Fred Gleason <fredg@paravelsystems.com>
* Added '<itunes:author>' tags to the 'Apple' RSS schema.
* Added '<itunes:summary>' tags to the 'Apple' RSS schema.
2020-06-04 Fred Gleason <fredg@paravelsystems.com>
* Added an 'iTunes + Superfeed' RSS schema.

View File

@ -515,6 +515,7 @@ AC_CONFIG_FILES([rivendell.spec \
conf/Makefile \
docs/Makefile \
docs/apis/Makefile \
docs/dtds/Makefile \
docs/examples/Makefile \
docs/manpages/Makefile \
docs/misc/Makefile \

View File

@ -2,7 +2,7 @@
##
## docs/automake.am for Rivendell
##
## (C) Copyright 2002-2017 Fred Gleason <fredg@paravelsystems.com>
## (C) Copyright 2002-2020 Fred Gleason <fredg@paravelsystems.com>
##
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License version 2 as
@ -20,7 +20,7 @@
## Use automake to process this into a Makefile.in
if DOCBOOK_AM
DOCBOOK_AM_OPT = stylesheets apis manpages opsguide rivwebcapi
DOCBOOK_AM_OPT = stylesheets apis manpages opsguide rivwebcapi dtds
endif
SUBDIRS = $(DOCBOOK_AM_OPT) examples\

45
docs/dtds/Makefile.am Normal file
View File

@ -0,0 +1,45 @@
## Makefile.am
##
## docs/dtds/Makefile.am for Rivendell
##
## (C) Copyright 2020 Fred Gleason <fredg@paravelsystems.com>
##
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License version 2 as
## published by the Free Software Foundation.
##
## This program is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
## GNU General Public License for more details.
##
## You should have received a copy of the GNU General Public
## License along with this program; if not, write to the Free Software
## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
##
## Use automake to process this into a Makefile.in
##
## Build Dependencies
##
%.html: %.xml
xsltproc -o $@ $(DOCBOOK_STYLESHEETS)/xhtml/docbook.xsl $<
%.pdf: %.xml
xsltproc $(DOCBOOK_STYLESHEETS)/fo/docbook.xsl $< | fop - -pdf $@
all-local: superfeed.html\
superfeed.pdf
EXTRA_DIST = superfeed.html\
superfeed.pdf\
superfeed.xml
CLEANFILES = *~
MAINTAINERCLEANFILES = *~\
*.1\
*.8\
*.html\
*.pdf\
aclocal.m4\
configure\
Makefile.in

188
docs/dtds/superfeed.xml Normal file
View File

@ -0,0 +1,188 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<article xmlns="http://docbook.org/ns/docbook" version="5.0">
<info>
<title>The Rivendell &quot;superfeed&quot; Namespace</title>
<subtitle>Version 0.1</subtitle>
<revnumber>v0.1</revnumber>
<author>
<personname>
<firstname>Fred</firstname>
<surname>Gleason</surname>
<email>fredg@paravelsystems.com</email>
</personname>
</author>
<edition>
v0.1
</edition>
<copyright><year>2020</year><holder>Fred Gleason</holder></copyright>
<legalnotice>
<para>
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
or any later version published by the Free Software Foundation;
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
</para>
</legalnotice>
</info>
<sect1 xml:id="overview">
<title>Overview</title>
<para>
The &quot;superfeed&quot; XML namespace adds support for additional
fields used by Rivendell Superfeed RSS podcasting functionality.
</para>
</sect1>
<sect1 xml:id="namespace_declaration">
<title>Namespace Declaration</title>
<para>
The namespace declaration is:
</para>
<para>
<code>xmlns:superfeed=&quot;http://www.rivendellaudio.org/dtds/superfeed-0.1.dtd&quot;</code>
</para>
</sect1>
<sect1 xml:id="fields">
<title>Fields</title>
<para>
The namespace adds the following fields:
</para>
<variablelist>
<varlistentry>
<term>
<code>&lt;channelTitle&gt;</code>
</term>
<listitem>
<para>
The value of the <code>&lt;title&gt;</code> field from the
<code>&lt;channel&gt;</code> section of the underlying elemental
feed.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<code>&lt;channelDescription&gt;</code>
</term>
<listitem>
<para>
The value of the <code>&lt;description&gt;</code> field from the
<code>&lt;channel&gt;</code> section of the underlying elemental
feed.
</para>
</listitem>
</varlistentry>
</variablelist>
</sect1>
<sect1 xml:id="example">
<title>Example</title>
<para>
The following example posits the existence of two elemental feeds,
<computeroutput>AIRPLAY</computeroutput>,
<computeroutput>CARTSLTS</computeroutput> and
<computeroutput>LIBRARY</computeroutput>; each containing a single
post. A superfeed, called <computeroutput>RIVENDEL</computeroutput>
and consisting of those three elemental fields would look like this:
</para>
<literallayout>
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;rss version=&quot;2.0&quot; xmlns:itunes=&quot;http://www.itunes.com/dtds/podcast-1.0.dtd&quot; xmlns:content=&quot;http://purl.org/rss/1.0/modules/content/&quot; xmlns:atom=&quot;http://www.w3.org/2005/Atom&quot; xmlns:superfeed=&quot;http://www.rivendellaudio.org/dtds/superfeed-0.1.dtd&quot;&gt;
&lt;channel&gt;
&lt;title&gt;Rivendell Radio Automation&lt;/title&gt;
&lt;description&gt;All about the Rivendell Radio Automation System&lt;/description&gt;
&lt;itunes:summary&gt;All about the Rivendell Radio Automation System&lt;/itunes:summary&gt;
&lt;category&gt;Technology&lt;/category&gt;
&lt;link&gt;http://feeds.example.com/rivendel&lt;/link&gt;
&lt;language&gt;en-us&lt;/language&gt;
&lt;copyright&gt;© 2020 John Q. Author&lt;/copyright&gt;
&lt;lastBuildDate&gt;Thu, 4 Jun 2020 12:18:54 GMT&lt;/lastBuildDate&gt;
&lt;pubDate&gt;Thu, 21 May 2020 10:43:55 GMT&lt;/pubDate&gt;
&lt;managingEditor&gt;editor@example.com&lt;/managingEditor&gt;
&lt;webMaster&gt;webmaster@example.com&lt;/webMaster&gt;
&lt;generator&gt;Rivendell 3.3.0int1&lt;/generator&gt;
&lt;image&gt;
&lt;url&gt;http://feeds.example.com/rivendel/img000022_000038.png&lt;/url&gt;
&lt;title&gt;Rivendell Radio Automation&lt;/title&gt;
&lt;link&gt;http://feeds.example.com/rivendel&lt;/link&gt;
&lt;width&gt;2048&lt;/width&gt;
&lt;height&gt;2048&lt;/height&gt;
&lt;description&gt;The Rivendell Icon&lt;/description&gt;
&lt;/image&gt;
&lt;atom:link href=&quot;http://feeds.example.com/rivendel/RIVENDEL.rss&quot; rel=&quot;self&quot; type=&quot;application/rss+xml&quot; /&gt;
&lt;itunes:author&gt;author@example.com&lt;/itunes:author&gt;
&lt;itunes:type&gt;episodic&lt;/itunes:type&gt;
&lt;itunes:owner&gt;
&lt;itunes:name&gt;John Q. Author&lt;/itunes:name&gt;
&lt;itunes:email&gt;fredg@paravelsystems.com&lt;/itunes:email&gt;
&lt;/itunes:owner&gt;
&lt;itunes:image href=&quot;http://feeds.example.com/rivendel/img000022_000038.png&quot; /&gt;
&lt;itunes:category text=&quot;Technology&quot; /&gt;
&lt;itunes:explicit&gt;false&lt;/itunes:explicit&gt;
&lt;item&gt;
&lt;superfeed:channelTitle&gt;RDAirPlay&lt;/superfeed:channelTitle&gt;
&lt;superfeed:channelDescription&gt;All about RDAirPlay in Rivendell&lt;/superfeed:channelDescription&gt;
&lt;title&gt;Thurber Jewelers&lt;/title&gt;
&lt;itunes:title&gt;Thurber Jewelers&lt;/itunes:title&gt;
&lt;link&gt;http://feeds.example.com/airplay&lt;/link&gt;
&lt;guid isPermaLink=&quot;false&quot;&gt;http://feeds.example.com/airplay/000019_000026.mp3_000019_000026&lt;/guid&gt;
&lt;description&gt;All about RDAirPlay in Rivendell&lt;/description&gt;
&lt;itunes:summary&gt;All about RDAirPlay in Rivendell&lt;/itunes:summary&gt;
&lt;author&gt;someone@example.com (John Q. Author)&lt;/author&gt;
&lt;itunes:author&gt;someone@example.com (John Q. Author)&lt;/itunes:author&gt;
&lt;comments&gt;http://feeds.example.com/airplay&lt;/comments&gt;
&lt;source url=&quot;http://feeds.example.com/airplay/RIVENDEL&quot;&gt;Rivendell Radio Automation&lt;/source&gt;
&lt;enclosure url=&quot;http://feeds.example.com/airplay/000019_000026.mp3&quot; length=&quot;170496&quot; type=&quot;audio/mpeg&quot; /&gt;
&lt;category&gt;Technology&lt;/category&gt;
&lt;pubDate&gt;Thu, 21 May 2020 20:31:26 GMT&lt;/pubDate&gt;
&lt;itunes:duration&gt;14&lt;/itunes:duration&gt;
&lt;itunes:image href=&quot;http://feeds.example.com/airplay/img000019_000024.png&quot; /&gt;
&lt;itunes:explicit&gt;false&lt;/itunes:explicit&gt;
&lt;/item&gt;
&lt;item&gt;
&lt;superfeed:channelTitle&gt;RDCartSlots&lt;/superfeed:channelTitle&gt;
&lt;superfeed:channelDescription&gt;All channel all about RDCartSlots!&lt;/superfeed:channelDescription&gt;
&lt;title&gt;Liberty Tax&lt;/title&gt;
&lt;itunes:title&gt;Liberty Tax&lt;/itunes:title&gt;
&lt;link&gt;http://feeds.example.com&lt;/link&gt;
&lt;guid isPermaLink=&quot;false&quot;&gt;http://feeds.example.com/cartslts/000025_000025.mp3_000025_000025&lt;/guid&gt;
&lt;description&gt;The Liberty tax advisors.&lt;/description&gt;
&lt;itunes:summary&gt;The Liberty tax advisors.&lt;/itunes:summary&gt;
&lt;author&gt;someone@example.com (John Q. Author)&lt;/author&gt;
&lt;itunes:author&gt;someone@example.com (John Q. Author)&lt;/itunes:author&gt;
&lt;comments&gt;http://feeds.example.com/cartslts&lt;/comments&gt;
&lt;source url=&quot;http://feeds.example.com/cartslts/RIVENDEL&quot;&gt;Rivendell Radio Automation&lt;/source&gt;
&lt;enclosure url=&quot;http://feeds.example.com/cartslts/000025_000025.mp3&quot; length=&quot;369216&quot; type=&quot;audio/mpeg&quot; /&gt;
&lt;category&gt;Technology&lt;/category&gt;
&lt;pubDate&gt;Thu, 21 May 2020 19:17:26 GMT&lt;/pubDate&gt;
&lt;itunes:duration&gt;15&lt;/itunes:duration&gt;
&lt;itunes:image href=&quot;http://feeds.example.com/cartslts/img000025_000037.png&quot; /&gt;
&lt;itunes:explicit&gt;false&lt;/itunes:explicit&gt;
&lt;/item&gt;
&lt;item&gt;
&lt;superfeed:channelTitle&gt;RDLibrary&lt;/superfeed:channelTitle&gt;
&lt;superfeed:channelDescription&gt;A channel all about RDLibrary&lt;/superfeed:channelDescription&gt;
&lt;title&gt;The Peanut Shoppe&lt;/title&gt;
&lt;itunes:title&gt;The Peanut Shoppe&lt;/itunes:title&gt;
&lt;link&gt;http://feeds.example.com/library&lt;/link&gt;
&lt;guid isPermaLink=&quot;false&quot;&gt;http://feeds.example.com/library/000024_000024.mp3_000024_000024&lt;/guid&gt;
&lt;description&gt;A trip to a peanut and candy shop in downtown Wadsworth OH.&lt;/description&gt;
&lt;itunes:summary&gt;A trip to a peanut and candy shop in downtown Wadsworth OH.&lt;/itunes:summary&gt;
&lt;author&gt;someone@example.com (John Q. Author)&lt;/author&gt;
&lt;itunes:author&gt;someone@example.com (John Q. Author)&lt;/itunes:author&gt;
&lt;comments&gt;http://feeds.example.com/library&lt;/comments&gt;
&lt;source url=&quot;http://feeds.example.com/library/RIVENDEL&quot;&gt;Rivendell Radio Automation&lt;/source&gt;
&lt;enclosure url=&quot;http://feeds.example.com/library/000024_000024.mp3&quot; length=&quot;196992&quot; type=&quot;audio/mpeg&quot; /&gt;
&lt;category&gt;Technology&lt;/category&gt;
&lt;pubDate&gt;Thu, 21 May 2020 19:14:53 GMT&lt;/pubDate&gt;
&lt;itunes:duration&gt;16&lt;/itunes:duration&gt;
&lt;itunes:image href=&quot;http://feeds.example.com/library/img000024_000036.png&quot; /&gt;
&lt;itunes:explicit&gt;false&lt;/itunes:explicit&gt;
&lt;/item&gt;
&lt;/channel&gt;
&lt;/rss&gt;
</literallayout>
</sect1>
</article>

View File

@ -1377,11 +1377,13 @@ QString RDFeed::rssXml(QString *err_msg,bool *ok)
"PODCASTS.EFFECTIVE_DATETIME,"+ // 13
"PODCASTS.ID,"+ // 14
"FEEDS.BASE_URL,"+ // 15
"FEED_IMAGES.ID,"+ // 16
"FEED_IMAGES.WIDTH,"+ // 17
"FEED_IMAGES.HEIGHT,"+ // 18
"FEED_IMAGES.DESCRIPTION,"+ // 19
"FEED_IMAGES.FILE_EXTENSION "+ // 20
"FEEDS.CHANNEL_TITLE,"+ // 16
"FEEDS.CHANNEL_DESCRIPTION,"+ // 17
"FEED_IMAGES.ID,"+ // 18
"FEED_IMAGES.WIDTH,"+ // 19
"FEED_IMAGES.HEIGHT,"+ // 20
"FEED_IMAGES.DESCRIPTION,"+ // 21
"FEED_IMAGES.FILE_EXTENSION "+ // 22
"from PODCASTS left join FEEDS "+
"on PODCASTS.FEED_ID=FEEDS.ID "+
"left join FEED_IMAGES "+
@ -1775,6 +1777,10 @@ QString RDFeed::ResolveItemWildcards(const QString &tmplt,RDSqlQuery *item_q,
QString ret=" "+tmplt;
ret.replace("\n","\r\n ");
ret.replace("%ITEM_CHANNEL_TITLE%",RDXmlEscape(item_q->value(16).toString()));
ret.replace("%ITEM_CHANNEL_DESCRIPTION%",
RDXmlEscape(item_q->value(17).toString()));
ret.replace("%ITEM_TITLE%",RDXmlEscape(item_q->value(1).toString()));
ret.replace("%ITEM_DESCRIPTION%",
RDXmlEscape(item_q->value(2).toString()));
@ -1824,8 +1830,8 @@ QString RDFeed::ResolveItemWildcards(const QString &tmplt,RDSqlQuery *item_q,
item_q->value(14).toUInt()));
ret.replace("%ITEM_IMAGE_URL%",item_q->value(15).toString()+"/"+
RDFeed::imageFilename(item_q->value(0).toInt(),
item_q->value(16).toInt(),
item_q->value(20).toString()));
item_q->value(18).toInt(),
item_q->value(22).toString()));
return ret;
}

View File

@ -25,9 +25,10 @@ RDRssSchemas::RDRssSchemas()
//
// Names
//
c_names.push_back("Custom"); // CustomSchema
c_names.push_back("RSS 2.0.2"); // Rss202Schema
c_names.push_back("Apple"); // AppleSchema
c_names.push_back("Custom"); // CustomSchema
c_names.push_back("RSS 2.0.2"); // Rss202Schema
c_names.push_back("Apple iTunes"); // AppleSchema
c_names.push_back("Apple iTunes + Superfeed"); // AppleSuperfeedSchema
//
@ -36,6 +37,7 @@ RDRssSchemas::RDRssSchemas()
c_minimum_image_sizes.push_back(QSize(0,0)); // CustomSchema
c_minimum_image_sizes.push_back(QSize(88,31)); // Rss202Schema
c_minimum_image_sizes.push_back(QSize(1400,1400)); // AppleSchema
c_minimum_image_sizes.push_back(QSize(1400,1400)); // AppleSuperfeedSchema
//
@ -44,6 +46,7 @@ RDRssSchemas::RDRssSchemas()
c_maximum_image_sizes.push_back(QSize(0,0)); // CustomSchema
c_maximum_image_sizes.push_back(QSize(144,400)); // Rss202Schema
c_maximum_image_sizes.push_back(QSize(3000,3000)); // AppleSchema
c_maximum_image_sizes.push_back(QSize(3000,3000)); // AppleSuperfeedSchema
//
@ -58,6 +61,9 @@ RDRssSchemas::RDRssSchemas()
// AppleSchema
c_header_templates.push_back("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<rss version=\"2.0\" xmlns:itunes=\"http://www.itunes.com/dtds/podcast-1.0.dtd\" xmlns:content=\"http://purl.org/rss/1.0/modules/content/\" xmlns:atom=\"http://www.w3.org/2005/Atom\">");
// AppleSuperfeedSchema
c_header_templates.push_back("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<rss version=\"2.0\" xmlns:itunes=\"http://www.itunes.com/dtds/podcast-1.0.dtd\" xmlns:content=\"http://purl.org/rss/1.0/modules/content/\" xmlns:atom=\"http://www.w3.org/2005/Atom\" xmlns:superfeed=\"http://www.rivendellaudio.org/dtds/superfeed-0.1.dtd\">");
//
// Channel Templates
//
@ -70,6 +76,9 @@ RDRssSchemas::RDRssSchemas()
// AppleSchema
c_channel_templates.push_back("<title>%TITLE%</title>\n<description>%DESCRIPTION%</description>\n<itunes:summary>%DESCRIPTION%</itunes:summary>\n<category>%CATEGORY%</category>\n<link>%LINK%</link>\n<language>%LANGUAGE%</language>\n<copyright>%COPYRIGHT%</copyright>\n<lastBuildDate>%BUILD_DATE%</lastBuildDate>\n<pubDate>%PUBLISH_DATE%</pubDate>\n<managingEditor>%EDITOR%</managingEditor>\n<webMaster>%WEBMASTER%</webMaster>\n<generator>%GENERATOR%</generator>\n<image>\n <url>%IMAGE_URL%</url>\n <title>%TITLE%</title>\n <link>%LINK%</link>\n <width>%IMAGE_WIDTH%</width>\n <height>%IMAGE_HEIGHT%</height>\n <description>%IMAGE_DESCRIPTION%</description>\n</image>\n<atom:link href=\"%FEED_URL%\" rel=\"self\" type=\"application/rss+xml\" />\n<itunes:author>%AUTHOR%</itunes:author>\n<itunes:type>episodic</itunes:type>\n<itunes:owner>\n <itunes:name>%OWNER_NAME%</itunes:name>\n <itunes:email>%OWNER_EMAIL%</itunes:email>\n</itunes:owner>\n<itunes:image href=\"%IMAGE_URL%\" />\n<itunes:category text=\"%CATEGORY%\" />\n<itunes:explicit>%EXPLICIT%</itunes:explicit>");
// AppleSuperfeedSchema
c_channel_templates.push_back("<title>%TITLE%</title>\n<description>%DESCRIPTION%</description>\n<itunes:summary>%DESCRIPTION%</itunes:summary>\n<category>%CATEGORY%</category>\n<link>%LINK%</link>\n<language>%LANGUAGE%</language>\n<copyright>%COPYRIGHT%</copyright>\n<lastBuildDate>%BUILD_DATE%</lastBuildDate>\n<pubDate>%PUBLISH_DATE%</pubDate>\n<managingEditor>%EDITOR%</managingEditor>\n<webMaster>%WEBMASTER%</webMaster>\n<generator>%GENERATOR%</generator>\n<image>\n <url>%IMAGE_URL%</url>\n <title>%TITLE%</title>\n <link>%LINK%</link>\n <width>%IMAGE_WIDTH%</width>\n <height>%IMAGE_HEIGHT%</height>\n <description>%IMAGE_DESCRIPTION%</description>\n</image>\n<atom:link href=\"%FEED_URL%\" rel=\"self\" type=\"application/rss+xml\" />\n<itunes:author>%AUTHOR%</itunes:author>\n<itunes:type>episodic</itunes:type>\n<itunes:owner>\n <itunes:name>%OWNER_NAME%</itunes:name>\n <itunes:email>%OWNER_EMAIL%</itunes:email>\n</itunes:owner>\n<itunes:image href=\"%IMAGE_URL%\" />\n<itunes:category text=\"%CATEGORY%\" />\n<itunes:explicit>%EXPLICIT%</itunes:explicit>");
//
// Item Image Support
@ -83,6 +92,9 @@ RDRssSchemas::RDRssSchemas()
// AppleSchema
c_supports_item_images.push_back(true);
// AppleSuperfeedSchema
c_supports_item_images.push_back(true);
//
// Item Templates
@ -95,6 +107,9 @@ RDRssSchemas::RDRssSchemas()
// AppleSchema
c_item_templates.push_back("<title>%ITEM_TITLE%</title>\n<itunes:title>%ITEM_TITLE%</itunes:title>\n<link>%ITEM_LINK%</link>\n<guid isPermaLink=\"false\">%ITEM_GUID%</guid>\n<description>%ITEM_DESCRIPTION%</description>\n<itunes:summary>%ITEM_DESCRIPTION%</itunes:summary>\n<author>%ITEM_AUTHOR%</author>\n<itunes:author>%ITEM_AUTHOR%</itunes:author>\n<comments>%ITEM_COMMENTS%</comments>\n<source url=\"%ITEM_SOURCE_URL%\">%ITEM_SOURCE_TEXT%</source>\n<enclosure url=\"%ITEM_AUDIO_URL%\" length=\"%ITEM_AUDIO_LENGTH%\" type=\"audio/mpeg\" />\n<category>%ITEM_CATEGORY%</category>\n<pubDate>%ITEM_PUBLISH_DATE%</pubDate>\n<itunes:duration>%ITEM_AUDIO_SECONDS%</itunes:duration>\n<itunes:image href=\"%ITEM_IMAGE_URL%\" />\n<itunes:explicit>%ITEM_EXPLICIT%</itunes:explicit>");
// AppleSuperfeedSchema
c_item_templates.push_back("<superfeed:channelTitle>%ITEM_CHANNEL_TITLE%</superfeed:channelTitle>\n<superfeed:channelDescription>%ITEM_CHANNEL_DESCRIPTION%</superfeed:channelDescription>\n<title>%ITEM_TITLE%</title>\n<itunes:title>%ITEM_TITLE%</itunes:title>\n<link>%ITEM_LINK%</link>\n<guid isPermaLink=\"false\">%ITEM_GUID%</guid>\n<description>%ITEM_DESCRIPTION%</description>\n<itunes:summary>%ITEM_DESCRIPTION%</itunes:summary>\n<author>%ITEM_AUTHOR%</author>\n<itunes:author>%ITEM_AUTHOR%</itunes:author>\n<comments>%ITEM_COMMENTS%</comments>\n<source url=\"%ITEM_SOURCE_URL%\">%ITEM_SOURCE_TEXT%</source>\n<enclosure url=\"%ITEM_AUDIO_URL%\" length=\"%ITEM_AUDIO_LENGTH%\" type=\"audio/mpeg\" />\n<category>%ITEM_CATEGORY%</category>\n<pubDate>%ITEM_PUBLISH_DATE%</pubDate>\n<itunes:duration>%ITEM_AUDIO_SECONDS%</itunes:duration>\n<itunes:image href=\"%ITEM_IMAGE_URL%\" />\n<itunes:explicit>%ITEM_EXPLICIT%</itunes:explicit>");
}

View File

@ -29,7 +29,8 @@
class RDRssSchemas
{
public:
enum RssSchema {CustomSchema=0,Rss202Schema=1,AppleSchema=2,LastSchema=3};
enum RssSchema {CustomSchema=0,Rss202Schema=1,AppleSchema=2,
AppleSuperfeedSchema=3,LastSchema=4};
RDRssSchemas();
QString name(RssSchema schema) const;
QSize minimumImageSize(RssSchema schema) const;

View File

@ -147,6 +147,9 @@ cp docs/misc/ando_interface.odt $RPM_BUILD_ROOT/@DOC_PATH@/misc/
mkdir -p $RPM_BUILD_ROOT/@DOC_PATH@
mkdir -p $RPM_BUILD_ROOT/@DOC_PATH@/apis
cp docs/apis/*.pdf $RPM_BUILD_ROOT/@DOC_PATH@/apis/
mkdir -p $RPM_BUILD_ROOT/@DOC_PATH@/dtds
cp docs/dtds/*.html $RPM_BUILD_ROOT/@DOC_PATH@/dtds/
cp docs/dtds/*.pdf $RPM_BUILD_ROOT/@DOC_PATH@/dtds/
mkdir -p $RPM_BUILD_ROOT/@DOC_PATH@/tables
cp docs/tables/*.txt $RPM_BUILD_ROOT/@DOC_PATH@/tables/
mkdir -p $RPM_BUILD_ROOT/@DOC_PATH@/scripts