# Planet configuration file
#
# This illustrates some of Planet's fancier features with example.

# Every planet needs a [Planet] section
[Planet]
# name: Your planet's name
# link: Link to the main page
# owner_name: Your name
# owner_email: Your e-mail address
name = Planet WebKit
link = http://planet.webkit.org/
owner_name = Adam Roben
owner_email = aroben@apple.com

# cache_directory: Where cached feeds are stored
# new_feed_items: Number of items to take from new feeds
# log_level: One of DEBUG, INFO, WARNING, ERROR or CRITICAL
# feed_timeout: number of seconds to wait for any given feed
cache_directory = cache
new_feed_items = 2
log_level = DEBUG
feed_timeout = 20

# template_files: Space-separated list of output template files
template_files = templates/index.html.tmpl templates/atom.xml.tmpl templates/rss20.xml.tmpl templates/rss10.xml.tmpl templates/opml.xml.tmpl templates/foafroll.xml.tmpl

# The following provide defaults for each template:
# output_dir: Directory to place output files
# items_per_page: How many items to put on each page
# days_per_page: How many complete days of posts to put on each page
#                This is the absolute, hard limit (over the item limit)
# date_format: strftime format for the default 'date' template variable
# new_date_format: strftime format for the 'new_date' template variable
# encoding: output encoding for the file, Python 2.3+ users can use the
#           special "xml" value to output ASCII with XML character references
# locale: locale to use for (e.g.) strings in dates, default is taken from your
#         system. You can specify more locales separated by ':', planet will
#         use the first available one
output_dir = wwwroot
items_per_page = 60
days_per_page = 0
date_format = %B %d, %Y %I:%M %p
new_date_format = %B %d, %Y
encoding = utf-8
# locale = C


# To define a different value for a particular template you may create
# a section with the same name as the template file's filename (as given
# in template_files).

# Provide no more than 7 days articles on the front page
[templates/index.html.tmpl]
days_per_page = 14

# If non-zero, all feeds which have not been updated in the indicated
# number of days will be marked as inactive
activity_threshold = 0


# Options placed in the [DEFAULT] section provide defaults for the feed
# sections.  Placing a default here means you only need to override the
# special cases later.
[DEFAULT]
# Hackergotchi default size.
# If we want to put a face alongside a feed, and it's this size, we
# can omit these variables.
facewidth = 65
faceheight = 85


# Any other section defines a feed to subscribe to.  The section title
# (in the []s) is the URI of the feed itself.  A section can also be
# have any of the following options:
# 
# name: Name of the feed (defaults to the title found in the feed)
#
# Additionally any other option placed here will be available in
# the template (prefixed with channel_ for the Items loop).  We use
# this trick to make the faces work -- this isn't something Planet
# "natively" knows about.  Look at fancy-examples/index.html.tmpl
# for the flip-side of this.

[http://www.kdedevelopers.org/blog/105/feed]
name = Adam Treat
filter = webkit

[http://www.atoker.com/blog/category/webkit/feed/]
name = Alp Toker
nick = alp

[http://zecke.blogspot.com/feeds/posts/full/-/WebKit]
name = Holger Freyther
nick = zecke

[http://blog.justinhaygood.com/category/webkit/feed/]
name = Justin Haygood
nick = jhaygood

[http://webkit.org/blog/feed/]
name = Surfin&rsquo; Safari

[http://labs.trolltech.com/blogs/feed/atom/?cat=9]
name = Trolltech Labs

[http://www.unpluggable.com/?feed=rss2]
name = Jan Michael Alonzo
nick = janm
filter = webkit
