#-*- coding: utf-8 -*- import sys from datetime import datetime import sqlalchemy as sa import sqlalchemy.sql.functions as func from colorsys import rgb_to_hls, hls_to_rgb from pyramid.paster import bootstrap from xonstat.models import * from render import Skin # maximal number of query results (for testing, set to 0 to get all) NUM_PLAYERS = 100 skin_classic = Skin() skin_archer = Skin( bg="background_archer-v1", overlay="", ) # parse cmdline parameters (for testing) skin = skin_classic if len(sys.argv) > 1: arg = sys.argv[1].lower() if arg == "classic": skin = skin_classic elif arg == "archer": skin = skin_archer # environment setup env = bootstrap('../../../development.ini') req = env['request'] req.matchdict = {'id':3} print "Requesting player data from db ..." start = datetime.now() players = [] if NUM_PLAYERS: players = DBSession.query(Player).\ filter(Player.player_id == PlayerElo.player_id).\ filter(Player.nick != None).\ filter(Player.player_id > 2).\ filter(Player.active_ind == True).\ limit(NUM_PLAYERS).all() else: players = DBSession.query(Player).\ filter(Player.player_id == PlayerElo.player_id).\ filter(Player.nick != None).\ filter(Player.player_id > 2).\ filter(Player.active_ind == True).\ all() stop = datetime.now() td = stop-start total_seconds = (td.microseconds + (td.seconds + td.days * 24 * 3600) * 10**6) / 10**6 print "Query took %.2f seconds" % (total_seconds) print "Creating badges for %d players ..." % len(players) start = datetime.now() data_time, render_time = 0,0 for player in players: req.matchdict['id'] = player.player_id sstart = datetime.now() skin.get_data(player) sstop = datetime.now() td = sstop-sstart total_seconds = (td.microseconds + (td.seconds + td.days * 24 * 3600) * 10**6) / 10**6 data_time += total_seconds sstart = datetime.now() skin.render_image("output/%d.png" % player.player_id) sstop = datetime.now() td = sstop-sstart total_seconds = (td.microseconds + (td.seconds + td.days * 24 * 3600) * 10**6) / 10**6 render_time += total_seconds stop = datetime.now() td = stop-start total_seconds = (td.microseconds + (td.seconds + td.days * 24 * 3600) * 10**6) / 10**6 print "Creating the badges took %.1f seconds (%.3f s per player)" % (total_seconds, total_seconds/float(len(players))) print "Total time for redering images: %.3f s" % render_time print "Total time for getting data: %.3f s" % data_time