Commits

John Louis del Rosario  committed 127a881

Updated for ekini.org

  • Participants
  • Parent commits 25a23e0

Comments (0)

Files changed (2)

 import os
 import fabric.contrib.project as project
 
-HOST = 'ekininet@ekini.net'
-REMOTE_DIR = '/home/ekininet/public_html/planetprocessing'
+HOST = 'ekini@ekini.org'
+REMOTE_DIR = '/home/ekini/public_html/planetprocessing.org'
 ROOT_PATH = os.path.abspath(os.path.dirname(__file__))
 OUTPUT_DIR = os.path.join(ROOT_PATH, 'output')
 
 def gen():
-    local('planetscript.py config.ini')
+    local('python planetscript.py config.ini')
+
+@hosts(HOST)
+def upload():
+    project.rsync_project(
+        remote_dir=REMOTE_DIR,
+        local_dir=OUTPUT_DIR.rstrip('/') + '/',
+        delete=False,
+        extra_opts='-e "ssh -p 22"'
+    )
 
 @hosts(HOST)
 def publish():
     gen()
-    project.rsync_project(
-        remote_dir=REMOTE_DIR,
-        local_dir=OUTPUT_DIR.rstrip('/') + '/',
-        delete=False,
-        extra_opts='-e "ssh -p 65321"'
-    )
+    upload()
 
-

File planetscript.py

+#!/usr/bin/env python
+"""The Planet aggregator.
+
+A flexible and easy-to-use aggregator for generating websites.
+
+Visit http://www.planetplanet.org/ for more information and to download
+the latest version.
+
+Requires Python 2.1, recommends 2.3.
+"""
+
+__authors__ = [ "Scott James Remnant <scott@netsplit.com>",
+                "Jeff Waugh <jdub@perkypants.org>" ]
+__license__ = "Python"
+
+
+import os
+import sys
+import time
+import locale
+import urlparse
+
+import planet
+
+from ConfigParser import ConfigParser
+
+# Default configuration file path
+CONFIG_FILE = "config.ini"
+
+# Defaults for the [Planet] config section
+PLANET_NAME = "Unconfigured Planet"
+PLANET_LINK = "Unconfigured Planet"
+PLANET_FEED = None
+OWNER_NAME  = "Anonymous Coward"
+OWNER_EMAIL = ""
+LOG_LEVEL   = "WARNING"
+FEED_TIMEOUT = 20 # seconds
+
+# Default template file list
+TEMPLATE_FILES = "examples/basic/planet.html.tmpl"
+
+
+
+def config_get(config, section, option, default=None, raw=0, vars=None):
+    """Get a value from the configuration, with a default."""
+    if config.has_option(section, option):
+        return config.get(section, option, raw=raw, vars=None)
+    else:
+        return default
+
+def main():
+    config_file = CONFIG_FILE
+    offline = 0
+    verbose = 0
+
+    for arg in sys.argv[1:]:
+        if arg == "-h" or arg == "--help":
+            print "Usage: planet [options] [CONFIGFILE]"
+            print
+            print "Options:"
+            print " -v, --verbose       DEBUG level logging during update"
+            print " -o, --offline       Update the Planet from the cache only"
+            print " -h, --help          Display this help message and exit"
+            print
+            sys.exit(0)
+        elif arg == "-v" or arg == "--verbose":
+            verbose = 1
+        elif arg == "-o" or arg == "--offline":
+            offline = 1
+        elif arg.startswith("-"):
+            print >>sys.stderr, "Unknown option:", arg
+            sys.exit(1)
+        else:
+            config_file = arg
+
+    # Read the configuration file
+    config = ConfigParser()
+    config.read(config_file)
+    if not config.has_section("Planet"):
+        print >>sys.stderr, "Configuration missing [Planet] section."
+        sys.exit(1)
+
+    # Read the [Planet] config section
+    planet_name = config_get(config, "Planet", "name",        PLANET_NAME)
+    planet_link = config_get(config, "Planet", "link",        PLANET_LINK)
+    planet_feed = config_get(config, "Planet", "feed",        PLANET_FEED)
+    owner_name  = config_get(config, "Planet", "owner_name",  OWNER_NAME)
+    owner_email = config_get(config, "Planet", "owner_email", OWNER_EMAIL)
+    if verbose:
+        log_level = "DEBUG"
+    else:
+        log_level  = config_get(config, "Planet", "log_level", LOG_LEVEL)
+    feed_timeout   = config_get(config, "Planet", "feed_timeout", FEED_TIMEOUT)
+    template_files = config_get(config, "Planet", "template_files",
+                                TEMPLATE_FILES).split(" ")
+
+    # Default feed to the first feed for which there is a template
+    if not planet_feed:
+        for template_file in template_files:
+            name = os.path.splitext(os.path.basename(template_file))[0]
+            if name.find('atom')>=0 or name.find('rss')>=0:
+                planet_feed = urlparse.urljoin(planet_link, name)
+                break
+
+    # Define locale
+    if config.has_option("Planet", "locale"):
+        # The user can specify more than one locale (separated by ":") as
+        # fallbacks.
+        locale_ok = False
+        for user_locale in config.get("Planet", "locale").split(':'):
+            user_locale = user_locale.strip()
+            try:
+                locale.setlocale(locale.LC_ALL, user_locale)
+            except locale.Error:
+                pass
+            else:
+                locale_ok = True
+                break
+        if not locale_ok:
+            print >>sys.stderr, "Unsupported locale setting."
+            sys.exit(1)
+
+    # Activate logging
+    planet.logging.basicConfig()
+    planet.logging.getLogger().setLevel(planet.logging.getLevelName(log_level))
+    log = planet.logging.getLogger("planet.runner")
+    try:
+        log.warning
+    except:
+        log.warning = log.warn
+
+    # timeoutsocket allows feedparser to time out rather than hang forever on
+    # ultra-slow servers.  Python 2.3 now has this functionality available in
+    # the standard socket library, so under 2.3 you don't need to install
+    # anything.  But you probably should anyway, because the socket module is
+    # buggy and timeoutsocket is better.
+    if feed_timeout:
+        try:
+            feed_timeout = float(feed_timeout)
+        except:
+            log.warning("Feed timeout set to invalid value '%s', skipping", feed_timeout)
+            feed_timeout = None
+
+    if feed_timeout and not offline:
+        try:
+            from planet import timeoutsocket
+            timeoutsocket.setDefaultSocketTimeout(feed_timeout)
+            log.debug("Socket timeout set to %d seconds", feed_timeout)
+        except ImportError:
+            import socket
+            if hasattr(socket, 'setdefaulttimeout'):
+                log.debug("timeoutsocket not found, using python function")
+                socket.setdefaulttimeout(feed_timeout)
+                log.debug("Socket timeout set to %d seconds", feed_timeout)
+            else:
+                log.error("Unable to set timeout to %d seconds", feed_timeout)
+
+    # run the planet
+    my_planet = planet.Planet(config)
+    my_planet.run(planet_name, planet_link, template_files, offline)
+
+    my_planet.generate_all_files(template_files, planet_name,
+        planet_link, planet_feed, owner_name, owner_email)
+
+
+if __name__ == "__main__":
+    main()
+