예제 #1
0
def initLogging(cgi=False):
    
    conf = ConfigParser.RawConfigParser()
    conf.read(Location.getInstance().toAbsolutePath("logging.conf"))
    
    logger = logging.getLogger()
    logger.setLevel(logging._levelNames[conf.get("logger_root", "level")]) # Weirdly, there's no supported method to get a level from a name...
    
    if cgi:
        # Make sure all created files are writable.
        os.umask(0)
    else:
        # Set up the console logger.
        formatter_name = conf.get("handler_consoleHandler", "formatter")
        format = conf.get("formatter_%s" % (formatter_name), "format")
        formatter = logging.Formatter(format)
        handler = logging.StreamHandler(sys.stdout)
        handler.setFormatter(formatter)
        logger.addHandler(handler)

    # Set up the file logger.
    filename = Location.getInstance().toAbsolutePath(os.path.join("logs", conf.get("handler_logfileHandler", "filename")))
    max_bytes = conf.getint("handler_logfileHandler", "max_bytes")
    backup_count = conf.getint("handler_logfileHandler", "backup_count")
    formatter_name = conf.get("handler_logfileHandler", "formatter")
    format = conf.get("formatter_%s" % (formatter_name), "format")
    formatter = logging.Formatter(format)
    handler = logging.handlers.RotatingFileHandler(filename, "a", max_bytes, backup_count)
    handler.setFormatter(formatter)
    logger.addHandler(handler)
예제 #2
0
 def transformImage(self, img):
     dims = self.getDims()
     ret = Image.new("RGB", dims, "white")
     draw = ImageDraw.Draw(ret)
     font = "courR" + self.args["font"] + ".pil"
     path= Location.getInstance().toAbsolutePath(os.path.join("fonts", font))
     font = ImageFont.load(path)
     (w,h) = draw.textsize(self.args["charset"][-1], font)
     if self.args["mode"] == "L":
         # Convert to grayscale
         values = img.convert("L")
     else:
         # Saturate the color
         values = ImageEnhance.Color(img).enhance(4.0)
     values = values.filter(ImageFilter.MedianFilter(5))
     for y in range(0, dims[1], h):
         for x in range(0, dims[0], w):
             v = values.getpixel((x,y))
             if self.args["mode"] == "L":
                 pct =  v/255.0
                 fill = (0, 0, 0)
             else:
                 pct = sum(v)/765.0
                 fill = v
             vi = int(round(pct * (len(self.args["charset"])-1)))
             draw.text((x,y), self.args["charset"][vi], font=font, fill=fill)
     return ret
예제 #3
0
def tweet(odict, creature):
    
    logger = logging.getLogger()
    logger.info("Posting %s as %s..." % (creature.getImagePath(), creature.getFullPageURL()))
    creds = Location.getJsonModule().load(open(Location.getInstance().toAbsolutePath(".twitter.json")))
    twitter = Twython(creds["app"], creds["app_secret"], creds["token"], creds["token_secret"])
    photo = open(creature.getImagePath(), 'rb')
    if (not odict.get("no-op", False)):
        response = twitter.upload_media(media=photo)
        response = twitter.update_status(status=creature.getFullPageURL(), media_ids=[response['media_id']])
        logger.info("Posted as %s." % (response["id_str"]))
예제 #4
0
import shutil
import time
import sys
import logging.handlers
import ConfigParser

import Location
import Creature
import ImageLoader
import Picklable
import SrcImage
import Thumbnailer
import TransformLoader

exps_dir = "exps"
abs_dir = Location.getInstance().toAbsolutePath(exps_dir)

class NoSuchExperiment(Exception):
    def __init__(self, exp):
        Exception.__init__(self)
        self.exp = exp
    def __str__(self):
        return str(self.exp)


################################################################
def initLogging(cgi=False):
    
    conf = ConfigParser.RawConfigParser()
    conf.read(Location.getInstance().toAbsolutePath("logging.conf"))
    
예제 #5
0
 def __init__(self):
     self.logger = logging.getLogger(self.getLoggerName())
     self.loc = Location.getInstance()