mirror of
https://github.com/ElvishArtisan/rivendell.git
synced 2025-04-09 22:43:11 +02:00
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:
parent
52c86055eb
commit
7ff0b9626f
2
.gitignore
vendored
2
.gitignore
vendored
@ -35,6 +35,8 @@ configure
|
|||||||
depcomp
|
depcomp
|
||||||
docs/apis/*.html
|
docs/apis/*.html
|
||||||
docs/apis/*.pdf
|
docs/apis/*.pdf
|
||||||
|
docs/dtds/superfeed.html
|
||||||
|
docs/dtds/superfeed.pdf
|
||||||
docs/opsguide/*.html
|
docs/opsguide/*.html
|
||||||
docs/opsguide/*.pdf
|
docs/opsguide/*.pdf
|
||||||
docs/opsguide/chain.png
|
docs/opsguide/chain.png
|
||||||
|
@ -19998,3 +19998,5 @@
|
|||||||
2020-05-21 Fred Gleason <fredg@paravelsystems.com>
|
2020-05-21 Fred Gleason <fredg@paravelsystems.com>
|
||||||
* Added '<itunes:author>' tags to the 'Apple' RSS schema.
|
* Added '<itunes:author>' tags to the 'Apple' RSS schema.
|
||||||
* Added '<itunes:summary>' 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.
|
||||||
|
@ -515,6 +515,7 @@ AC_CONFIG_FILES([rivendell.spec \
|
|||||||
conf/Makefile \
|
conf/Makefile \
|
||||||
docs/Makefile \
|
docs/Makefile \
|
||||||
docs/apis/Makefile \
|
docs/apis/Makefile \
|
||||||
|
docs/dtds/Makefile \
|
||||||
docs/examples/Makefile \
|
docs/examples/Makefile \
|
||||||
docs/manpages/Makefile \
|
docs/manpages/Makefile \
|
||||||
docs/misc/Makefile \
|
docs/misc/Makefile \
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
##
|
##
|
||||||
## docs/automake.am for Rivendell
|
## 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
|
## 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
|
## 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
|
## Use automake to process this into a Makefile.in
|
||||||
|
|
||||||
if DOCBOOK_AM
|
if DOCBOOK_AM
|
||||||
DOCBOOK_AM_OPT = stylesheets apis manpages opsguide rivwebcapi
|
DOCBOOK_AM_OPT = stylesheets apis manpages opsguide rivwebcapi dtds
|
||||||
endif
|
endif
|
||||||
|
|
||||||
SUBDIRS = $(DOCBOOK_AM_OPT) examples\
|
SUBDIRS = $(DOCBOOK_AM_OPT) examples\
|
||||||
|
45
docs/dtds/Makefile.am
Normal file
45
docs/dtds/Makefile.am
Normal 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
188
docs/dtds/superfeed.xml
Normal 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 "superfeed" 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 "superfeed" 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="http://www.rivendellaudio.org/dtds/superfeed-0.1.dtd"</code>
|
||||||
|
</para>
|
||||||
|
</sect1>
|
||||||
|
<sect1 xml:id="fields">
|
||||||
|
<title>Fields</title>
|
||||||
|
<para>
|
||||||
|
The namespace adds the following fields:
|
||||||
|
</para>
|
||||||
|
<variablelist>
|
||||||
|
<varlistentry>
|
||||||
|
<term>
|
||||||
|
<code><channelTitle></code>
|
||||||
|
</term>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
The value of the <code><title></code> field from the
|
||||||
|
<code><channel></code> section of the underlying elemental
|
||||||
|
feed.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
<varlistentry>
|
||||||
|
<term>
|
||||||
|
<code><channelDescription></code>
|
||||||
|
</term>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
The value of the <code><description></code> field from the
|
||||||
|
<code><channel></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>
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
|
<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>
|
||||||
|
<title>Rivendell Radio Automation</title>
|
||||||
|
<description>All about the Rivendell Radio Automation System</description>
|
||||||
|
<itunes:summary>All about the Rivendell Radio Automation System</itunes:summary>
|
||||||
|
<category>Technology</category>
|
||||||
|
<link>http://feeds.example.com/rivendel</link>
|
||||||
|
<language>en-us</language>
|
||||||
|
<copyright>© 2020 John Q. Author</copyright>
|
||||||
|
<lastBuildDate>Thu, 4 Jun 2020 12:18:54 GMT</lastBuildDate>
|
||||||
|
<pubDate>Thu, 21 May 2020 10:43:55 GMT</pubDate>
|
||||||
|
<managingEditor>editor@example.com</managingEditor>
|
||||||
|
<webMaster>webmaster@example.com</webMaster>
|
||||||
|
<generator>Rivendell 3.3.0int1</generator>
|
||||||
|
<image>
|
||||||
|
<url>http://feeds.example.com/rivendel/img000022_000038.png</url>
|
||||||
|
<title>Rivendell Radio Automation</title>
|
||||||
|
<link>http://feeds.example.com/rivendel</link>
|
||||||
|
<width>2048</width>
|
||||||
|
<height>2048</height>
|
||||||
|
<description>The Rivendell Icon</description>
|
||||||
|
</image>
|
||||||
|
<atom:link href="http://feeds.example.com/rivendel/RIVENDEL.rss" rel="self" type="application/rss+xml" />
|
||||||
|
<itunes:author>author@example.com</itunes:author>
|
||||||
|
<itunes:type>episodic</itunes:type>
|
||||||
|
<itunes:owner>
|
||||||
|
<itunes:name>John Q. Author</itunes:name>
|
||||||
|
<itunes:email>fredg@paravelsystems.com</itunes:email>
|
||||||
|
</itunes:owner>
|
||||||
|
<itunes:image href="http://feeds.example.com/rivendel/img000022_000038.png" />
|
||||||
|
<itunes:category text="Technology" />
|
||||||
|
<itunes:explicit>false</itunes:explicit>
|
||||||
|
<item>
|
||||||
|
<superfeed:channelTitle>RDAirPlay</superfeed:channelTitle>
|
||||||
|
<superfeed:channelDescription>All about RDAirPlay in Rivendell</superfeed:channelDescription>
|
||||||
|
<title>Thurber Jewelers</title>
|
||||||
|
<itunes:title>Thurber Jewelers</itunes:title>
|
||||||
|
<link>http://feeds.example.com/airplay</link>
|
||||||
|
<guid isPermaLink="false">http://feeds.example.com/airplay/000019_000026.mp3_000019_000026</guid>
|
||||||
|
<description>All about RDAirPlay in Rivendell</description>
|
||||||
|
<itunes:summary>All about RDAirPlay in Rivendell</itunes:summary>
|
||||||
|
<author>someone@example.com (John Q. Author)</author>
|
||||||
|
<itunes:author>someone@example.com (John Q. Author)</itunes:author>
|
||||||
|
<comments>http://feeds.example.com/airplay</comments>
|
||||||
|
<source url="http://feeds.example.com/airplay/RIVENDEL">Rivendell Radio Automation</source>
|
||||||
|
<enclosure url="http://feeds.example.com/airplay/000019_000026.mp3" length="170496" type="audio/mpeg" />
|
||||||
|
<category>Technology</category>
|
||||||
|
<pubDate>Thu, 21 May 2020 20:31:26 GMT</pubDate>
|
||||||
|
<itunes:duration>14</itunes:duration>
|
||||||
|
<itunes:image href="http://feeds.example.com/airplay/img000019_000024.png" />
|
||||||
|
<itunes:explicit>false</itunes:explicit>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<superfeed:channelTitle>RDCartSlots</superfeed:channelTitle>
|
||||||
|
<superfeed:channelDescription>All channel all about RDCartSlots!</superfeed:channelDescription>
|
||||||
|
<title>Liberty Tax</title>
|
||||||
|
<itunes:title>Liberty Tax</itunes:title>
|
||||||
|
<link>http://feeds.example.com</link>
|
||||||
|
<guid isPermaLink="false">http://feeds.example.com/cartslts/000025_000025.mp3_000025_000025</guid>
|
||||||
|
<description>The Liberty tax advisors.</description>
|
||||||
|
<itunes:summary>The Liberty tax advisors.</itunes:summary>
|
||||||
|
<author>someone@example.com (John Q. Author)</author>
|
||||||
|
<itunes:author>someone@example.com (John Q. Author)</itunes:author>
|
||||||
|
<comments>http://feeds.example.com/cartslts</comments>
|
||||||
|
<source url="http://feeds.example.com/cartslts/RIVENDEL">Rivendell Radio Automation</source>
|
||||||
|
<enclosure url="http://feeds.example.com/cartslts/000025_000025.mp3" length="369216" type="audio/mpeg" />
|
||||||
|
<category>Technology</category>
|
||||||
|
<pubDate>Thu, 21 May 2020 19:17:26 GMT</pubDate>
|
||||||
|
<itunes:duration>15</itunes:duration>
|
||||||
|
<itunes:image href="http://feeds.example.com/cartslts/img000025_000037.png" />
|
||||||
|
<itunes:explicit>false</itunes:explicit>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<superfeed:channelTitle>RDLibrary</superfeed:channelTitle>
|
||||||
|
<superfeed:channelDescription>A channel all about RDLibrary</superfeed:channelDescription>
|
||||||
|
<title>The Peanut Shoppe</title>
|
||||||
|
<itunes:title>The Peanut Shoppe</itunes:title>
|
||||||
|
<link>http://feeds.example.com/library</link>
|
||||||
|
<guid isPermaLink="false">http://feeds.example.com/library/000024_000024.mp3_000024_000024</guid>
|
||||||
|
<description>A trip to a peanut and candy shop in downtown Wadsworth OH.</description>
|
||||||
|
<itunes:summary>A trip to a peanut and candy shop in downtown Wadsworth OH.</itunes:summary>
|
||||||
|
<author>someone@example.com (John Q. Author)</author>
|
||||||
|
<itunes:author>someone@example.com (John Q. Author)</itunes:author>
|
||||||
|
<comments>http://feeds.example.com/library</comments>
|
||||||
|
<source url="http://feeds.example.com/library/RIVENDEL">Rivendell Radio Automation</source>
|
||||||
|
<enclosure url="http://feeds.example.com/library/000024_000024.mp3" length="196992" type="audio/mpeg" />
|
||||||
|
<category>Technology</category>
|
||||||
|
<pubDate>Thu, 21 May 2020 19:14:53 GMT</pubDate>
|
||||||
|
<itunes:duration>16</itunes:duration>
|
||||||
|
<itunes:image href="http://feeds.example.com/library/img000024_000036.png" />
|
||||||
|
<itunes:explicit>false</itunes:explicit>
|
||||||
|
</item>
|
||||||
|
</channel>
|
||||||
|
</rss>
|
||||||
|
|
||||||
|
</literallayout>
|
||||||
|
</sect1>
|
||||||
|
|
||||||
|
</article>
|
@ -1377,11 +1377,13 @@ QString RDFeed::rssXml(QString *err_msg,bool *ok)
|
|||||||
"PODCASTS.EFFECTIVE_DATETIME,"+ // 13
|
"PODCASTS.EFFECTIVE_DATETIME,"+ // 13
|
||||||
"PODCASTS.ID,"+ // 14
|
"PODCASTS.ID,"+ // 14
|
||||||
"FEEDS.BASE_URL,"+ // 15
|
"FEEDS.BASE_URL,"+ // 15
|
||||||
"FEED_IMAGES.ID,"+ // 16
|
"FEEDS.CHANNEL_TITLE,"+ // 16
|
||||||
"FEED_IMAGES.WIDTH,"+ // 17
|
"FEEDS.CHANNEL_DESCRIPTION,"+ // 17
|
||||||
"FEED_IMAGES.HEIGHT,"+ // 18
|
"FEED_IMAGES.ID,"+ // 18
|
||||||
"FEED_IMAGES.DESCRIPTION,"+ // 19
|
"FEED_IMAGES.WIDTH,"+ // 19
|
||||||
"FEED_IMAGES.FILE_EXTENSION "+ // 20
|
"FEED_IMAGES.HEIGHT,"+ // 20
|
||||||
|
"FEED_IMAGES.DESCRIPTION,"+ // 21
|
||||||
|
"FEED_IMAGES.FILE_EXTENSION "+ // 22
|
||||||
"from PODCASTS left join FEEDS "+
|
"from PODCASTS left join FEEDS "+
|
||||||
"on PODCASTS.FEED_ID=FEEDS.ID "+
|
"on PODCASTS.FEED_ID=FEEDS.ID "+
|
||||||
"left join FEED_IMAGES "+
|
"left join FEED_IMAGES "+
|
||||||
@ -1775,6 +1777,10 @@ QString RDFeed::ResolveItemWildcards(const QString &tmplt,RDSqlQuery *item_q,
|
|||||||
QString ret=" "+tmplt;
|
QString ret=" "+tmplt;
|
||||||
|
|
||||||
ret.replace("\n","\r\n ");
|
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_TITLE%",RDXmlEscape(item_q->value(1).toString()));
|
||||||
ret.replace("%ITEM_DESCRIPTION%",
|
ret.replace("%ITEM_DESCRIPTION%",
|
||||||
RDXmlEscape(item_q->value(2).toString()));
|
RDXmlEscape(item_q->value(2).toString()));
|
||||||
@ -1824,8 +1830,8 @@ QString RDFeed::ResolveItemWildcards(const QString &tmplt,RDSqlQuery *item_q,
|
|||||||
item_q->value(14).toUInt()));
|
item_q->value(14).toUInt()));
|
||||||
ret.replace("%ITEM_IMAGE_URL%",item_q->value(15).toString()+"/"+
|
ret.replace("%ITEM_IMAGE_URL%",item_q->value(15).toString()+"/"+
|
||||||
RDFeed::imageFilename(item_q->value(0).toInt(),
|
RDFeed::imageFilename(item_q->value(0).toInt(),
|
||||||
item_q->value(16).toInt(),
|
item_q->value(18).toInt(),
|
||||||
item_q->value(20).toString()));
|
item_q->value(22).toString()));
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -25,9 +25,10 @@ RDRssSchemas::RDRssSchemas()
|
|||||||
//
|
//
|
||||||
// Names
|
// Names
|
||||||
//
|
//
|
||||||
c_names.push_back("Custom"); // CustomSchema
|
c_names.push_back("Custom"); // CustomSchema
|
||||||
c_names.push_back("RSS 2.0.2"); // Rss202Schema
|
c_names.push_back("RSS 2.0.2"); // Rss202Schema
|
||||||
c_names.push_back("Apple"); // AppleSchema
|
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(0,0)); // CustomSchema
|
||||||
c_minimum_image_sizes.push_back(QSize(88,31)); // Rss202Schema
|
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)); // 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(0,0)); // CustomSchema
|
||||||
c_maximum_image_sizes.push_back(QSize(144,400)); // Rss202Schema
|
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)); // AppleSchema
|
||||||
|
c_maximum_image_sizes.push_back(QSize(3000,3000)); // AppleSuperfeedSchema
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
@ -58,6 +61,9 @@ RDRssSchemas::RDRssSchemas()
|
|||||||
// AppleSchema
|
// 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\">");
|
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
|
// Channel Templates
|
||||||
//
|
//
|
||||||
@ -70,6 +76,9 @@ RDRssSchemas::RDRssSchemas()
|
|||||||
// AppleSchema
|
// 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>");
|
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
|
// Item Image Support
|
||||||
@ -83,6 +92,9 @@ RDRssSchemas::RDRssSchemas()
|
|||||||
// AppleSchema
|
// AppleSchema
|
||||||
c_supports_item_images.push_back(true);
|
c_supports_item_images.push_back(true);
|
||||||
|
|
||||||
|
// AppleSuperfeedSchema
|
||||||
|
c_supports_item_images.push_back(true);
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Item Templates
|
// Item Templates
|
||||||
@ -95,6 +107,9 @@ RDRssSchemas::RDRssSchemas()
|
|||||||
|
|
||||||
// AppleSchema
|
// 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>");
|
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>");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -29,7 +29,8 @@
|
|||||||
class RDRssSchemas
|
class RDRssSchemas
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
enum RssSchema {CustomSchema=0,Rss202Schema=1,AppleSchema=2,LastSchema=3};
|
enum RssSchema {CustomSchema=0,Rss202Schema=1,AppleSchema=2,
|
||||||
|
AppleSuperfeedSchema=3,LastSchema=4};
|
||||||
RDRssSchemas();
|
RDRssSchemas();
|
||||||
QString name(RssSchema schema) const;
|
QString name(RssSchema schema) const;
|
||||||
QSize minimumImageSize(RssSchema schema) const;
|
QSize minimumImageSize(RssSchema schema) const;
|
||||||
|
@ -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@
|
||||||
mkdir -p $RPM_BUILD_ROOT/@DOC_PATH@/apis
|
mkdir -p $RPM_BUILD_ROOT/@DOC_PATH@/apis
|
||||||
cp docs/apis/*.pdf $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
|
mkdir -p $RPM_BUILD_ROOT/@DOC_PATH@/tables
|
||||||
cp docs/tables/*.txt $RPM_BUILD_ROOT/@DOC_PATH@/tables/
|
cp docs/tables/*.txt $RPM_BUILD_ROOT/@DOC_PATH@/tables/
|
||||||
mkdir -p $RPM_BUILD_ROOT/@DOC_PATH@/scripts
|
mkdir -p $RPM_BUILD_ROOT/@DOC_PATH@/scripts
|
||||||
|
Loading…
x
Reference in New Issue
Block a user