247 lines
No EOL
19 KiB
HTML
247 lines
No EOL
19 KiB
HTML
|
|
|
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
|
|
|
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
|
|
<title>Feedgenerator — pyFeedGen 0.2.2 documentation</title>
|
|
|
|
<link rel="stylesheet" href="_static/lernfunk.css" type="text/css" />
|
|
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
|
<link rel="stylesheet" href="_static/print.css" type="text/css" />
|
|
|
|
<script type="text/javascript">
|
|
var DOCUMENTATION_OPTIONS = {
|
|
URL_ROOT: '',
|
|
VERSION: '0.2.2',
|
|
COLLAPSE_INDEX: false,
|
|
FILE_SUFFIX: '.html',
|
|
HAS_SOURCE: true
|
|
};
|
|
</script>
|
|
<script type="text/javascript" src="_static/jquery.js"></script>
|
|
<script type="text/javascript" src="_static/underscore.js"></script>
|
|
<script type="text/javascript" src="_static/doctools.js"></script>
|
|
<script type="text/javascript" src="_static/theme_extras.js"></script>
|
|
<link rel="top" title="pyFeedGen 0.2.2 documentation" href="#" />
|
|
<link rel="next" title="API Documentation" href="api.html" />
|
|
</head>
|
|
<body>
|
|
<div class="header"><h1 class="heading"><a href="#">
|
|
<span>pyFeedGen 0.2.2 documentation</span></a></h1>
|
|
<h2 class="heading"><span>Feedgenerator</span></h2>
|
|
</div>
|
|
<div class="topnav">
|
|
|
|
<p>
|
|
<a class="uplink" href="#">Contents</a>
|
|
  ::  
|
|
<a href="api.html">API Documentation</a>  »
|
|
</p>
|
|
|
|
</div>
|
|
<div class="content">
|
|
|
|
|
|
<div class="contents topic" id="table-of-contents">
|
|
<p class="topic-title first">Table of Contents</p>
|
|
<ul class="simple">
|
|
<li><a class="reference internal" href="#feedgenerator" id="id1">Feedgenerator</a><ul>
|
|
<li><a class="reference internal" href="#installation" id="id2">Installation</a></li>
|
|
<li><a class="reference internal" href="#create-a-feed" id="id3">Create a Feed</a></li>
|
|
<li><a class="reference internal" href="#generate-the-feed" id="id4">Generate the Feed</a></li>
|
|
<li><a class="reference internal" href="#add-feed-entries" id="id5">Add Feed Entries</a></li>
|
|
<li><a class="reference internal" href="#extensions" id="id6">Extensions</a></li>
|
|
<li><a class="reference internal" href="#testing-the-generator" id="id7">Testing the Generator</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a class="reference internal" href="#module-documentation" id="id8">Module documentation</a></li>
|
|
<li><a class="reference internal" href="#indices-and-tables" id="id9">Indices and tables</a></li>
|
|
</ul>
|
|
</div>
|
|
<div class="section" id="feedgenerator">
|
|
<h1><a class="toc-backref" href="#id1">Feedgenerator</a><a class="headerlink" href="#feedgenerator" title="Permalink to this headline">¶</a></h1>
|
|
<p>This module can be used to generate web feeds in both ATOM and RSS format. It
|
|
has support for extensions. Included is for example an extension to produce
|
|
Podcasts.</p>
|
|
<p>It is licensed under the terms of both, the FreeBSD license and the LGPLv3+.
|
|
Choose the one which is more convenient for you. For more details have a look
|
|
at license.bsd and license.lgpl.</p>
|
|
<div class="section" id="installation">
|
|
<h2><a class="toc-backref" href="#id2">Installation</a><a class="headerlink" href="#installation" title="Permalink to this headline">¶</a></h2>
|
|
<p><strong>Prebuild packages</strong></p>
|
|
<p>If you are running Fedora Linux, Redhat Enterprise Linux, CentOS or Scientific
|
|
linux you can use one of the following packages:</p>
|
|
<ul class="simple">
|
|
<li><a class="reference external" href="https://docs.google.com/file/d/0B_bDfxNKSsxpcjQtWm85QXZmbkU/edit?usp=sharing">python-feedgen-0.2.2-1.fc17.noarch.rpm</a></li>
|
|
<li><a class="reference external" href="https://docs.google.com/file/d/0B_bDfxNKSsxpOVVVWXZ1aDllVWs/edit?usp=sharing">python-feedgen-0.2.2-1.el6.noarch.rpm</a></li>
|
|
</ul>
|
|
<p>Simply download the file and run:</p>
|
|
<div class="highlight-python"><pre>$ yum localinstall python-feedgen-0.1-1.fc17.noarch.rpm</pre>
|
|
</div>
|
|
<p>If you want to build RPMs for other distributions you can use the following Source RPM:</p>
|
|
<ul class="simple">
|
|
<li><a class="reference external" href="https://docs.google.com/file/d/0B_bDfxNKSsxpZHZXbTkzcFZTSlk/edit?usp=sharing">python-feedgen-0.2.2-1.fc17.src.rpm</a></li>
|
|
</ul>
|
|
<p><strong>Using pip</strong></p>
|
|
<p>You can also use pip to install the feedgen module. Simply run:</p>
|
|
<div class="highlight-python"><pre>$ pip install feedgen</pre>
|
|
</div>
|
|
</div>
|
|
<div class="section" id="create-a-feed">
|
|
<h2><a class="toc-backref" href="#id3">Create a Feed</a><a class="headerlink" href="#create-a-feed" title="Permalink to this headline">¶</a></h2>
|
|
<p>To create a feed simply instanciate the FeedGenerator class and insert some
|
|
data:</p>
|
|
<div class="highlight-python"><div class="highlight"><pre><span class="gp">>>> </span><span class="kn">from</span> <span class="nn">feedgen.feed</span> <span class="kn">import</span> <span class="n">FeedGenerator</span>
|
|
<span class="gp">>>> </span><span class="n">fg</span> <span class="o">=</span> <span class="n">FeedGenerator</span><span class="p">()</span>
|
|
<span class="gp">>>> </span><span class="n">fg</span><span class="o">.</span><span class="n">id</span><span class="p">(</span><span class="s">'http://lernfunk.de/media/654321'</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">fg</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="s">'Some Testfeed'</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">fg</span><span class="o">.</span><span class="n">author</span><span class="p">(</span> <span class="p">{</span><span class="s">'name'</span><span class="p">:</span><span class="s">'John Doe'</span><span class="p">,</span><span class="s">'email'</span><span class="p">:</span><span class="s">'john@example.de'</span><span class="p">}</span> <span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">fg</span><span class="o">.</span><span class="n">link</span><span class="p">(</span> <span class="n">href</span><span class="o">=</span><span class="s">'http://example.com'</span><span class="p">,</span> <span class="n">rel</span><span class="o">=</span><span class="s">'alternate'</span> <span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">fg</span><span class="o">.</span><span class="n">logo</span><span class="p">(</span><span class="s">'http://ex.com/logo.jpg'</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">fg</span><span class="o">.</span><span class="n">subtitle</span><span class="p">(</span><span class="s">'This is a cool feed!'</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">fg</span><span class="o">.</span><span class="n">link</span><span class="p">(</span> <span class="n">href</span><span class="o">=</span><span class="s">'http://larskiesow.de/test.atom'</span><span class="p">,</span> <span class="n">rel</span><span class="o">=</span><span class="s">'self'</span> <span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">fg</span><span class="o">.</span><span class="n">language</span><span class="p">(</span><span class="s">'en'</span><span class="p">)</span>
|
|
</pre></div>
|
|
</div>
|
|
<p>Note that for the methods which set fields that can occur more than once in a
|
|
feed you can use all of the following ways to provide data:</p>
|
|
<ul class="simple">
|
|
<li>Provide the data for that element as keyword arguments</li>
|
|
<li>Provide the data for that element as dictionary</li>
|
|
<li>Provide a list of dictionaries with the data for several elements</li>
|
|
</ul>
|
|
<p>Example:</p>
|
|
<div class="highlight-python"><div class="highlight"><pre><span class="gp">>>> </span><span class="n">fg</span><span class="o">.</span><span class="n">contributor</span><span class="p">(</span> <span class="n">name</span><span class="o">=</span><span class="s">'John Doe'</span><span class="p">,</span> <span class="n">email</span><span class="o">=</span><span class="s">'jdoe@example.com'</span> <span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">fg</span><span class="o">.</span><span class="n">contributor</span><span class="p">({</span><span class="s">'name'</span><span class="p">:</span><span class="s">'John Doe'</span><span class="p">,</span> <span class="s">'email'</span><span class="p">:</span><span class="s">'jdoe@example.com'</span><span class="p">})</span>
|
|
<span class="gp">>>> </span><span class="n">fg</span><span class="o">.</span><span class="n">contributor</span><span class="p">([{</span><span class="s">'name'</span><span class="p">:</span><span class="s">'John Doe'</span><span class="p">,</span> <span class="s">'email'</span><span class="p">:</span><span class="s">'jdoe@example.com'</span><span class="p">},</span> <span class="o">...</span><span class="p">])</span>
|
|
</pre></div>
|
|
</div>
|
|
</div>
|
|
<div class="section" id="generate-the-feed">
|
|
<h2><a class="toc-backref" href="#id4">Generate the Feed</a><a class="headerlink" href="#generate-the-feed" title="Permalink to this headline">¶</a></h2>
|
|
<p>After that you can generate both RSS or ATOM by calling the respective method:</p>
|
|
<div class="highlight-python"><div class="highlight"><pre><span class="gp">>>> </span><span class="n">atomfeed</span> <span class="o">=</span> <span class="n">fg</span><span class="o">.</span><span class="n">atom_str</span><span class="p">(</span><span class="n">pretty</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span> <span class="c"># Get the ATOM feed as string</span>
|
|
<span class="gp">>>> </span><span class="n">rssfeed</span> <span class="o">=</span> <span class="n">fg</span><span class="o">.</span><span class="n">rss_str</span><span class="p">(</span><span class="n">pretty</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span> <span class="c"># Get the RSS feed as string</span>
|
|
<span class="gp">>>> </span><span class="n">fg</span><span class="o">.</span><span class="n">atom_file</span><span class="p">(</span><span class="s">'atom.xml'</span><span class="p">)</span> <span class="c"># Write the ATOM feed to a file</span>
|
|
<span class="gp">>>> </span><span class="n">fg</span><span class="o">.</span><span class="n">rss_file</span><span class="p">(</span><span class="s">'rss.xml'</span><span class="p">)</span> <span class="c"># Write the RSS feed to a file</span>
|
|
</pre></div>
|
|
</div>
|
|
</div>
|
|
<div class="section" id="add-feed-entries">
|
|
<h2><a class="toc-backref" href="#id5">Add Feed Entries</a><a class="headerlink" href="#add-feed-entries" title="Permalink to this headline">¶</a></h2>
|
|
<p>To add entries (items) to a feed you need to create new FeedEntry objects and
|
|
append them to the list of entries in the FeedGenerator. The most convenient
|
|
way to go is to use the FeedGenerator itself for the instantiation of the
|
|
FeedEntry object:</p>
|
|
<div class="highlight-python"><div class="highlight"><pre><span class="gp">>>> </span><span class="n">fe</span> <span class="o">=</span> <span class="n">fg</span><span class="o">.</span><span class="n">add_entry</span><span class="p">()</span>
|
|
<span class="gp">>>> </span><span class="n">fe</span><span class="o">.</span><span class="n">id</span><span class="p">(</span><span class="s">'http://lernfunk.de/media/654321/1'</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">fe</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="s">'The First Episode'</span><span class="p">)</span>
|
|
</pre></div>
|
|
</div>
|
|
<p>The FeedGenerators method add_entry(...) without argument provides will
|
|
automatically generate a new FeedEntry object, append it to the feeds internal
|
|
list of entries and return it, so that additional data can be added.</p>
|
|
</div>
|
|
<div class="section" id="extensions">
|
|
<h2><a class="toc-backref" href="#id6">Extensions</a><a class="headerlink" href="#extensions" title="Permalink to this headline">¶</a></h2>
|
|
<p>The FeedGenerator supports extension to include additional data into the XML
|
|
structure of the feeds. Extensions can be loaded like this:</p>
|
|
<div class="highlight-python"><div class="highlight"><pre><span class="gp">>>> </span><span class="n">fg</span><span class="o">.</span><span class="n">load_extension</span><span class="p">(</span><span class="s">'someext'</span><span class="p">,</span> <span class="n">atom</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span> <span class="n">rss</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
|
|
</pre></div>
|
|
</div>
|
|
<p>This will try to load the extension “someext” from the file <cite>ext/someext.py</cite>.
|
|
It is required that <cite>someext.py</cite> contains a class named “SomextExtension” which
|
|
is required to have at least the two methods <cite>extend_rss(...)</cite> and
|
|
<cite>extend_atom(...)</cite>. Although not required, it is strongly suggested to use
|
|
<cite>BaseExtension</cite> from <cite>ext/base.py</cite> as superclass.</p>
|
|
<p><cite>load_extension(‘someext’, ...)</cite> will also try to load a class named
|
|
“SomextEntryExtension” for every entry of the feed. This class can be located
|
|
either in the same file as SomextExtension or in <cite>ext/someext_entry.py</cite> which
|
|
is suggested especially for large extensions.</p>
|
|
<p>The parameters <cite>atom</cite> and <cite>rss</cite> tell the FeedGenerator if the extensions should
|
|
only be used for either ATOM or RSS feeds. The default value for both
|
|
parameters is true which means that the extension would be used for both kinds
|
|
of feeds.</p>
|
|
<p><strong>Example: Produceing a Podcast</strong></p>
|
|
<p>One extension already provided is the podcast extension. A podcast is an RSS
|
|
feed with some additional elements for ITunes.</p>
|
|
<p>To produce a podcast simply load the <cite>podcast</cite> extension:</p>
|
|
<div class="highlight-python"><div class="highlight"><pre><span class="gp">>>> </span><span class="kn">from</span> <span class="nn">feedgen.feed</span> <span class="kn">import</span> <span class="n">FeedGenerator</span>
|
|
<span class="gp">>>> </span><span class="n">fg</span> <span class="o">=</span> <span class="n">FeedGenerator</span><span class="p">()</span>
|
|
<span class="gp">>>> </span><span class="n">fg</span><span class="o">.</span><span class="n">load_extension</span><span class="p">(</span><span class="s">'podcast'</span><span class="p">)</span>
|
|
<span class="gp">...</span>
|
|
<span class="gp">>>> </span><span class="n">fg</span><span class="o">.</span><span class="n">podcast</span><span class="o">.</span><span class="n">itunes_category</span><span class="p">(</span><span class="s">'Technology'</span><span class="p">,</span> <span class="s">'Podcasting'</span><span class="p">)</span>
|
|
<span class="gp">...</span>
|
|
<span class="gp">>>> </span><span class="n">fg</span><span class="o">.</span><span class="n">rss_str</span><span class="p">(</span><span class="n">pretty</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">fg</span><span class="o">.</span><span class="n">rss_file</span><span class="p">(</span><span class="s">'podcast.xml'</span><span class="p">)</span>
|
|
</pre></div>
|
|
</div>
|
|
<p>Of cause the extension has to be loaded for the FeedEntry objects as well but
|
|
this is done automatically by the FeedGenerator for every feed entry if the
|
|
extension is loaded for the whole feed. You can, however, load an extension for
|
|
a specific FeedEntry by calling <cite>load_extension(...)</cite> on that entry. But this
|
|
is a rather uncommon use.</p>
|
|
<p>Of cause you can still produce a normal ATOM or RSS feed, even if you have
|
|
loaded some plugins by temporary disabling them during the feed generation.
|
|
This can be done by calling the generating method with the keyword argument
|
|
<cite>extensions</cite> set to <cite>False</cite>.</p>
|
|
</div>
|
|
<div class="section" id="testing-the-generator">
|
|
<h2><a class="toc-backref" href="#id7">Testing the Generator</a><a class="headerlink" href="#testing-the-generator" title="Permalink to this headline">¶</a></h2>
|
|
<p>You can test the module by simply executing:</p>
|
|
<div class="highlight-python"><pre>$ pythom -m feedgen</pre>
|
|
</div>
|
|
<p>If you want to have a look at the code for this test to have a working code
|
|
example for a whole feed generation process, you can find it in the
|
|
<a class="reference external" href="https://github.com/lkiesow/python-feedgen/blob/master/feedgen/__main__.py">__main__.py</a>.</p>
|
|
<hr /></div>
|
|
</div>
|
|
<div class="section" id="module-documentation">
|
|
<h1><a class="toc-backref" href="#id8">Module documentation</a><a class="headerlink" href="#module-documentation" title="Permalink to this headline">¶</a></h1>
|
|
<div class="toctree-wrapper compound">
|
|
<ul>
|
|
<li class="toctree-l1"><a class="reference internal" href="api.html">API Documentation</a><ul>
|
|
<li class="toctree-l2"><a class="reference internal" href="api.html#feedgen">feedgen</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="api.feed.html">feedgen.feed</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="api.entry.html">feedgen.entry</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="api.util.html">feedgen.util</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="ext/api.ext.base.html">feedgen.ext.base</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="ext/api.ext.podcast.html">feedgen.ext.podcast</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="ext/api.ext.podcast_entry.html">feedgen.ext.podcast_entry</a></li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
<div class="section" id="indices-and-tables">
|
|
<h1><a class="toc-backref" href="#id9">Indices and tables</a><a class="headerlink" href="#indices-and-tables" title="Permalink to this headline">¶</a></h1>
|
|
<ul class="simple">
|
|
<li><a class="reference internal" href="genindex.html"><em>Index</em></a></li>
|
|
<li><a class="reference internal" href="py-modindex.html"><em>Module Index</em></a></li>
|
|
<li><a class="reference internal" href="search.html"><em>Search Page</em></a></li>
|
|
</ul>
|
|
</div>
|
|
|
|
|
|
</div>
|
|
<div class="bottomnav">
|
|
|
|
<p>
|
|
<a class="uplink" href="#">Contents</a>
|
|
  ::  
|
|
<a href="api.html">API Documentation</a>  »
|
|
</p>
|
|
|
|
</div>
|
|
|
|
<div class="footer">
|
|
© Copyright 2013, Lars Kiesow.
|
|
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
|
|
</div>
|
|
</body>
|
|
</html> |