summaryrefslogtreecommitdiff
path: root/rawdog
diff options
context:
space:
mode:
Diffstat (limited to 'rawdog')
-rw-r--r--rawdog/.gitignore2
-rw-r--r--rawdog/config285
-rw-r--r--rawdog/item.template8
-rw-r--r--rawdog/page.template34
4 files changed, 329 insertions, 0 deletions
diff --git a/rawdog/.gitignore b/rawdog/.gitignore
new file mode 100644
index 0000000..29d2dd0
--- /dev/null
+++ b/rawdog/.gitignore
@@ -0,0 +1,2 @@
+state
+state.lock
diff --git a/rawdog/config b/rawdog/config
new file mode 100644
index 0000000..2472c6d
--- /dev/null
+++ b/rawdog/config
@@ -0,0 +1,285 @@
+# Sample rawdog config file. Copy this into your ~/.rawdog/ directory, and edit
+# it to suit your preferences.
+# All paths in this file should be either absolute, or relative to your .rawdog
+# directory.
+# If you want to include another config file, then use "include FILENAME".
+
+# Times in this file are specified as a value and a unit (for instance,
+# "4h"). Units available are "s" (seconds), "m" (minutes), "h" (hours),
+# "d" (days) and "w" (weeks). If no unit is specified, rawdog will
+# assume minutes.
+# Boolean (yes/no) values in this file are specified as "true" or "false".
+
+# rawdog can be extended using plugin modules written in Python. This
+# option specifies the directories to search for plugins to load. If a
+# directory does not exist or cannot be read, it will be ignored. This
+# option must appear before any options that are implemented by plugins.
+plugindirs plugins
+
+# Whether to split rawdog's state amongst multiple files.
+# If this is turned on, rawdog will use significantly less memory, but
+# will do more disk IO -- probably a good idea if you read a lot of
+# feeds.
+splitstate false
+
+# The maximum number of articles to show on the generated page.
+# Set this to 0 for no limit.
+maxarticles 200
+
+# The maximum age of articles to show on the generated page.
+# Set this to 0 for no limit.
+maxage 0
+
+# The age after which articles will be discarded if they do not appear
+# in a feed. Set this to a larger value if you want your rawdog output
+# to cover more than a day's worth of articles.
+expireage 1d
+
+# The minimum number of articles from each feed to keep around in the history.
+# Set this to 0 to only keep articles that were returned the last time the feed
+# was fetched. (If this is set to 0, or "currentonly" below is set to true,
+# then rawdog will not send the RFC3229+feed "A-IM: feed" header when making
+# HTTP requests, since it can't tell from the response to such a request
+# whether any articles have been removed from the feed; this makes rawdog
+# slightly less bandwidth-efficient.)
+keepmin 20
+
+# Whether to only display articles that are currently included in a feed
+# (useful for "planet" pages where you only want to display the current
+# articles from several feeds). If this is false, rawdog will keep a
+# history of older articles.
+currentonly false
+
+# Whether to divide the articles up by day, writing a "dayformat" heading
+# before each set.
+daysections true
+
+# The format to write day headings in. See "man strftime" for more
+# information; for example:
+# %A, %d %B Wednesday, 21 January
+# %Y-%m-%d 2004-01-21 (ISO 8601 format)
+dayformat %A, %d %B
+
+# Whether to divide the articles up by time, writing a "timeformat" heading
+# before each set.
+timesections true
+
+# The format to write time headings in. For example:
+# %H:%M 18:07 (ISO 8601 format)
+# %I:%M %p 06:07 PM
+timeformat %H:%M
+
+# The format to display feed update and article times in. For example:
+# %H:%M, %A, %d %B 18:07, Wednesday, 21 January
+# %Y-%m-%d %H:%M 2004-01-21 18:07 (ISO 8601 format)
+datetimeformat %H:%M, %A, %d %B
+
+# The page template file to use, or "default" to use the built-in template
+# (which is probably sufficient for most users). Use "rawdog -s page" to show
+# the template currently in use as a starting-point for customisation.
+# The following strings will be replaced in the output:
+# __version__ The rawdog version in use
+# __refresh__ The HTML 4 <meta http-equiv="refresh" ...> header
+# __items__ The aggregated items
+# __num_items__ The number of items on the page
+# __feeds__ The feed list
+# __num_feeds__ The number of feeds listed
+# You can define additional strings using "define" in this config file; for
+# example, if you say "define myname Adam Sampson", then "__myname__" will be
+# replaced by "Adam Sampson" in the output.
+#pagetemplate default
+pagetemplate page.template
+
+# Similarly, the template used for each item shown. Use "rawdog -s item" to
+# show the template currently in use as a starting-point for customisation.
+# The following strings will be replaced in the output:
+# __title__ The item title (as an HTML link, if possible)
+# __title_no_link__ The item title (as text)
+# __url__ The item's URL, or the empty string if it doesn't
+# have one
+# __guid__ The item's GUID, or the empty string if it doesn't
+# have one
+# __description__ The item's descriptive text, or the empty string
+# if it doesn't have a description
+# __date__ The item's date as provided by the feed
+# __added__ The date the article was received by rawdog
+# __hash__ A hash of the article (useful for summary pages)
+#
+# All of the __feed_X__ strings from feeditemtemplate below will also be
+# expanded here, for the feed that the article came from.
+#
+# You can define additional strings on a per-feed basis by using the
+# "define_X" feed option; see the description of "feed" below for more
+# details.
+#
+# Simple conditional expansion is possible by saying something like
+# "__if_items__ hello __endif__"; the text between the if and endif will
+# only be included if __items__ would expand to something other than
+# the empty string. Ifs can be nested, and __else__ is supported.
+# (This also works for the other templates, but it's most useful here.)
+#itemtemplate default
+itemtemplate item.template
+
+# The template used to generate the feed list (__feeds__ above). Use "rawdog
+# -s feedlist" to show the current template.
+# The following strings will be replaced in the output:
+# __feeditems__ The feed items
+feedlisttemplate default
+
+# The template used to generate each item in the feed list. Use "rawdog
+# -s feeditem" to show the current template.
+# The following strings will be replaced in the output:
+# __feed_id__ The feed's title with non-alphanumeric characters
+# (and HTML markup) removed (useful for per-feed
+# styles); you can use the "id" feed option below to
+# set a custom ID if you prefer
+# __feed_hash__ A hash of the feed URL (useful for per-feed styles)
+# __feed_title__ The feed title (as an HTML link, if possible)
+# __feed_title_no_link__
+# The feed title (as text)
+# __feed_url__ The feed URL
+# __feed_icon__ An "XML button" linking to the feed URL
+# __feed_last_update__
+# The time when the feed was last updated
+# __feed_next_update__
+# The time when the feed will next need updating
+feeditemtemplate default
+
+# Where to write the output HTML to. You should place style.css in the same
+# directory. Specify this as "-" to write the HTML to stdout.
+# (You will probably want to make this an absolute path, else rawdog will write
+# to a file in your ~/.rawdog directory.)
+outputfile /srv/www/spragg-ssl.co.uk/html/blog
+#outputfile /home/you/public_html/rawdog.html
+
+# Whether to use a <meta http-equiv="Refresh" ...> tag in the generated
+# HTML to indicate that the page should be refreshed automatically. If
+# this is turned on, then the page will refresh every N minutes, where N
+# is the shortest feed period value specified below.
+# (This works by controlling whether the default template includes
+# __refresh__; if you use a custom template, __refresh__ is always
+# available.)
+userefresh true
+
+# Whether to show the list of active feeds in the generated HTML.
+# (This works by controlling whether the default template includes
+# __feeds__; if you use a custom template, __feeds__ is always
+# available.)
+showfeeds true
+
+# The number of concurrent threads that rawdog will use when fetching
+# feeds -- i.e. the number of feeds that rawdog will attempt to fetch at
+# the same time. If you have a lot of feeds, setting this to be 20 or
+# so will significantly speed up updates. If this is set to 1 (or
+# fewer), rawdog will not start any additional threads at all.
+numthreads 1
+
+# The time that rawdog will wait before considering a feed unreachable
+# when trying to connect. If you're getting lots of timeout errors and
+# are on a slow connection, increase this.
+# (Unlike other times in this file, this will be assumed to be in
+# seconds if no unit is specified.)
+timeout 30s
+
+# Whether to ignore timeouts. If this is false, timeouts will be reported as
+# errors; if this is true, rawdog will silently ignore them.
+ignoretimeouts false
+
+# Whether to show Python traceback messages. If this is true, rawdog will show
+# a traceback message if an exception is thrown while fetching a feed; this is
+# mostly useful for debugging rawdog or feedparser.
+showtracebacks false
+
+# Whether to display verbose status messages saying what rawdog's doing
+# while it runs. Specifying -v or --verbose on the command line is
+# equivalent to saying "verbose true" here.
+verbose false
+
+# Whether to attempt to fix bits of HTML that should start with a
+# block-level element (such as article descriptions) by prepending "<p>"
+# if they don't already start with a block-level element.
+blocklevelhtml true
+
+# Whether to attempt to turn feed-provided HTML into valid HTML.
+# The most common problem that this solves is a non-closed element in an
+# article causing formatting problems for the rest of the page.
+# For this option to have any effect, you need to have PyTidyLib or mx.Tidy
+# installed.
+tidyhtml true
+
+# Whether the articles displayed should be sorted first by the date
+# provided in the feed (useful for "planet" pages, where you're
+# displaying several feeds and want new articles to appear in the right
+# chronological place). If this is false, then articles will first be
+# sorted by the time that rawdog first saw them.
+sortbyfeeddate true
+
+# Whether to consider articles' unique IDs or GUIDs when updating rawdog's
+# database. If you turn this off, then rawdog will create a new article in its
+# database when it sees an updated version of an existing article in a feed.
+# You probably want this turned on.
+useids true
+
+# The fields to use when detecting duplicate articles: "id" is the article's
+# unique ID or GUID; "link" is the article's link. rawdog will find the first
+# one of these that's present in the article, and ignore the article if it's
+# seen an article before (in any feed) that had the same value. For example,
+# specifying "hideduplicates id link" will first look for id/guid, then for
+# link.
+# Note that some feeds use the same link for all their articles; if you specify
+# "link" here, you will probably want to specify the "allowduplicates" feed
+# argument (see below) for those feeds.
+hideduplicates id
+
+# The period to use for new feeds added to the config file via the -a|--add
+# option.
+newfeedperiod 3h
+
+# Whether rawdog should automatically update this config file (and its
+# internal state) if feed URLs change (for instance, if a feed URL
+# results in a permanent HTTP redirect). If this is false, then rawdog
+# will ask you to make the necessary change by hand.
+changeconfig true
+
+# The feeds you want to watch, in the format "feed period url [args]".
+# The period is the minimum time between updates; if less than period
+# minutes have passed, "rawdog update" will skip that feed. Specifying
+# a period less than 30 minutes is considered to be bad manners; it is
+# suggested that you make the period as long as possible.
+# Arguments are optional, and can be given in two ways: either on the end of
+# the "feed" line in the form "key=value", separated by spaces, or as extra
+# indented lines after the feed line.
+# possible arguments are:
+# id Value for the __feed_id__ value in the item
+# template for items in this feed (defaults to the
+# feed title with non-alphanumeric characters and
+# HTML markup removed)
+# user User for HTTP basic authentication
+# password Password for HTTP basic authentication
+# format "text" to indicate that the descriptions in this feed
+# are unescaped plain text (rather than the usual HTML),
+# and should be escaped and wrapped in a <pre> element
+# X_proxy Proxy URL for protocol X (for instance, "http_proxy")
+# proxyuser User for proxy basic authentication
+# proxypassword Password for proxy basic authentication
+# allowduplicates "true" to disable duplicate detection for this feed
+# maxage Override the global "maxage" value for this feed
+# keepmin Override the global "keepmin" value for this feed
+# define_X Equivalent to "define X ..." for item templates
+# when displaying items from this feed
+# You can provide a default set of arguments for all feeds using
+# "feeddefaults". You can specify as many feeds as you like.
+# (These examples have been commented out; remove the leading "#" on each line
+# to use them.)
+#feeddefaults
+# http_proxy http://proxy.example.com:3128/
+#feed 1h http://example.com/feed.rss
+#feed 30m http://example.com/feed2.rss id=newsfront
+#feed 3h http://example.com/feed3.rss keepmin=5
+#feed 3h http://example.com/secret.rss user=bob password=secret
+#feed 3h http://example.com/broken.rss
+# format text
+# define_myclass broken
+#feed 3h http://proxyfeed.example.com/proxied.rss http_proxy=http://localhost:1234/
+#feed 3h http://dupsfeed.example.com/duplicated.rss allowduplicates=true
+feed 3h https://spragg-ssl.co.uk/~adam/blog/index.rss20
diff --git a/rawdog/item.template b/rawdog/item.template
new file mode 100644
index 0000000..76552b3
--- /dev/null
+++ b/rawdog/item.template
@@ -0,0 +1,8 @@
+<article class="feed-__feed_hash__ feed-__feed_id__" id="item-__hash__">
+<header>
+<h2><span class="itemtitle">__title__</span> <span class="itemfrom">[__feed_title__]</span></h2>
+</header>
+__if_description__<div class="itemdescription">
+__description__
+</div>__endif__
+</article>
diff --git a/rawdog/page.template b/rawdog/page.template
new file mode 100644
index 0000000..60c695b
--- /dev/null
+++ b/rawdog/page.template
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>Blog</title>
+ <link rel="stylesheet" href="/style/main.css" type="text/css">
+ <meta name="robots" content="noindex,nofollow,noarchive">
+ __refresh__
+ </head>
+ <body>
+ <header>
+ <h1>Blog</h1>
+ <nav>
+ <ul>
+ <li><a href="/">Home</a></li>
+ <li><a href="/projects">Projects</a></li>
+ <li class="selected"><a href="/blog">Blog</a></li>
+ <li><a href="/privacy">Privacy</a></li>
+ <li><a href="/contact">Contact</a></li>
+ </ul>
+ </nav>
+ </header>
+ <main>
+ <section class="items">__items__</section>
+ <section class="feeds">
+ <h2>Feeds</h2>
+ __feeds__
+ </section>
+ </main>
+ <footer>
+ <p id="aboutrawdog">Generated by <a href="http://offog.org/code/rawdog.html">rawdog</a> version
+ __version__</p>
+ </footer>
+ </body>
+</html>