# Python 2.6+ (не 3.x)
# Запускать из командной строки, шаблон: "python hours_price.py [Username]"

currencies = {
    "EUR":1.2867,
    "USD":1,
    "GBP":1.521,
    "CAD":0.9797,
    "AUD":0.9819,
    "RUR":0.0318
}
import urllib2
import xml.etree.ElementTree as ET
import sys
baseurl = "http://www.boardgamegeek.com/xmlapi2"
games = []

url = "%s/collection?username=%s&played=1" % (baseurl, sys.argv[1])
items = ET.parse(urllib2.urlopen(url))
for item in items.iter('item'):
    objectid = item.attrib['objectid']
    numplays = int(item.find('numplays').text)
    url = "%s/thing?id=%s&marketplace=1" % (baseurl, objectid)
    item = ET.parse(urllib2.urlopen(url)).find('item')
    name = item.find('name').attrib['value']
    playingtime = int(item.find('playingtime').attrib['value']) / 60.0
    marketplace = item.find('marketplacelistings')
    total_price = 0
    listings_num = 0
    for listing in marketplace.iter('listing'):
        price = listing.find('price')
        total_price += currencies[price.attrib['currency']] * float(price.attrib['value'])
        listings_num += 1
    if total_price > 0: eff = numplays * playingtime * listings_num / total_price
    else: eff = 0
    games.append((eff, name))

games.sort(reverse=1)

for eff, name in games:
    print "%s: %f" % (name, eff)