А у меня: на первом месте Корова 006 - игра, в которую мы играли все отпуска, на 2-м месте Memoir - с ежегодными партиями и турнирами, на 3-м No Retreat - игра, в которую я играл половину 2012 года.
А еще, как вариант, учитывать не только общее отыгранное время, но еще удовольствие, полученное от игры. Конечно, вещь это субъективная, но все можно примерно вычислить, умножая часы еще на рейтинг игры: личный или средний, если личный незаполнен.
Boardgame Hours/$ Puerto Rico 0.318733 Kingdom Builder 0.275535 7 Wonders 0.211732 The Settlers of Catan 0.200971 Carcassonne 0.173558 Stone Age 0.151549 Arkham Horror 0.121360 Dominion 0.119465 San Juan 0.097572 Dixit 0.081238
Puerto Rico и Kingdom Builder заслуженно заняли первые два места, действительно по-моему мнению, это одни из самых удачных приобретений. А вот 7 Wonders я уже успел продать и пробыл он у меня всего полгода. Продавать решил как раз по той причине, что все только в него и хотели играть, а другие коробки простаивали.
А, насчёт вашей ошибки понял. Вы набрали команду из самого Питона, а надо было из командной строки Windows. В общем, действительно, проще по вебу вам будем.
Спасибо, совсем другое дело! Я изначально вбивал команду в command line винды, но там постоянно выдавалась ошибка, поэтому подумал, что может из самого Python запусакть нужно.
Это я сперва не учёл, что в BGG на разных языках бывают названия, и надо всё делать с учётом UTF-8. Оно вывалилось, но я уже поправил, теперь работает.
P.S. Первый раз пытаюсь с API BGG работать, ну и медленный он... Очень долго игры перебирает.
Один раз в лог выдало, что от BGG пришёл неверно сформированный XML. Какой у вас логин на BGG? Попробую разобраться. Проверял на Tanone и armikael - отработало отлично. Только очень уж долго. У них много игр отмечено.
Нашёл. Какая-то из ваших игр имеет глючную информацию на BGG. Сделал, чтобы такие игры пропускались. Теперь надеюсь заработает. Предупреждаю только, что с вашим количеством игр ждать результата придётся очень долго.
Да, теперь ваша страница выдалась нормально. Обратите внимание, что в конце списка у пары десятков игр стоит нулевой рейтинг. Это означает, что они отсутствуют на рынке BGG и стстеме поэтому попросту неизвестно, какая на них цена.
Вообще по здравому размышлению мне этот скрипт странен самому. Ведь практически никто не отмечает каждую сыгранную партию на BGG. Есть вообще во всём этом особый смысл?
SyntaxError: Non-ASCII character '\xc7' in file C:\hours_price.py on line 14, bu t no encoding declared; see http://www.python.org/peps/pep-0263.html for details
C:\Users\Otd141-5>python C:\hours_price.py Orccc Traceback (most recent call last): File "C:\hours_price.py", line 17, in <module> for item in items.iter('item'): AttributeError: ElementTree instance has no attribute 'iter'
Админу, который выкладывал файлик сюда: положите последнюю версию с моей ссылки, у меня прав нет. Исправил там одну ошибку (вылетало на играх, которых нет в BGG-маркете) плюс поменял цены валют. Раньше было часов за рубль, теперь часов за доллар.
И поудаляйте пожалуйста мои сообщения, а то удаления нет, а намусорил я много. :)
Ну я вроде поборол эту болезнь, у меня всего 3 неигранные коробки дома лежат. Теперь пришло время переосмыслить свою жизнь :) А для этого нужна аналитика...
БГГ для такой статистики слабо подходит. Только для тех кто скрупулёзно записывает туда все партии. Думаю это исчезающее меньшинство. Я выкладывал программы для ведения личной статистики. При чём они сделаны так чтобы можно было объединять разные личные статистики. На этой основе можно было бы подсчитать различные коэффициенты. И среднее время партий было бы реальное, потому что в программе можно засекать точное время. Но никто особо не заинтересовался. Если вы скрупулёзно все заносили на БГГ, то вашу формулу очень легко реализовать.
На первом месте оказалась одна из самых не любимых мною игр, Цитадели %)
А у меня:
на первом месте Корова 006 - игра, в которую мы играли все отпуска,
на 2-м месте Memoir - с ежегодными партиями и турнирами,
на 3-м No Retreat - игра, в которую я играл половину 2012 года.
На а уже на 4-м Цитадели :)
А еще, как вариант, учитывать не только общее отыгранное время, но еще удовольствие, полученное от игры.
Конечно, вещь это субъективная, но все можно примерно вычислить, умножая часы еще на рейтинг игры: личный или средний, если личный незаполнен.
Интересная идея.
Graywind, можно ли добавить на выход еще один рейтинг, где коэффициент еще умножается на оценку игры пользователем?
Почему-то не могу найти, как через API получить личные рейтинги. Могу помножить на рейтинги BGG, но это будет несколько не то.
http://www.boardgamegeek.com/xmlapi/collection/zefquaavius?played=1
Там есть Rating
Boardgame Hours/$
Puerto Rico 0.318733
Kingdom Builder 0.275535
7 Wonders 0.211732
The Settlers of Catan 0.200971
Carcassonne 0.173558
Stone Age 0.151549
Arkham Horror 0.121360
Dominion 0.119465
San Juan 0.097572
Dixit 0.081238
Puerto Rico и Kingdom Builder заслуженно заняли первые два места, действительно по-моему мнению, это одни из самых удачных приобретений. А вот 7 Wonders я уже успел продать и пробыл он у меня всего полгода. Продавать решил как раз по той причине, что все только в него и хотели играть, а другие коробки простаивали.
Установил Python, но скрипт так и не заработал:
SyntaxError: invalid syntax
>>> python hours_price.py armikael
File "<stdin>", line 1
python hours_price.py armikael
Уже писал. Там тот человек, который заливал скриптик (хозяин дневника), вставил русский комментарий, не указав кодировки.
Я сейчас веб-версию поднял, смотрите там, так проще.
http://109.163.239.8:6030/
Только учтите, что система считает только те игры, где отмечены сыгранные партии, плюс игра должна быть на BGG-Marketplace хотя бы в одном экземпляре.
А, насчёт вашей ошибки понял. Вы набрали команду из самого Питона, а надо было из командной строки Windows. В общем, действительно, проще по вебу вам будем.
Я же уже перезалил вашу версию скрипта. (:
P.S. Я не автор этого дневника.
Мопед не мой... :)
Спасибо, совсем другое дело! Я изначально вбивал команду в command line винды, но там постоянно выдавалась ошибка, поэтому подумал, что может из самого Python запусакть нужно.
Стабильную работу не гарантирую. Если сервер вдруг перегрузят - упадёт. :)
http://109.163.239.8:6030/
Выдаёт ошибку. Не может открыть страницу.
Вы когда время партии в целое переводите, закладываетесь что там может быть пусто?
Это я сперва не учёл, что в BGG на разных языках бывают названия, и надо всё делать с учётом UTF-8. Оно вывалилось, но я уже поправил, теперь работает.
P.S. Первый раз пытаюсь с API BGG работать, ну и медленный он... Очень долго игры перебирает.
Internal Server Error
Один раз в лог выдало, что от BGG пришёл неверно сформированный XML. Какой у вас логин на BGG? Попробую разобраться.
Проверял на Tanone и armikael - отработало отлично. Только очень уж долго. У них много игр отмечено.
light7
Нашёл. Какая-то из ваших игр имеет глючную информацию на BGG. Сделал, чтобы такие игры пропускались. Теперь надеюсь заработает. Предупреждаю только, что с вашим количеством игр ждать результата придётся очень долго.
Да, теперь ваша страница выдалась нормально. Обратите внимание, что в конце списка у пары десятков игр стоит нулевой рейтинг. Это означает, что они отсутствуют на рынке BGG и стстеме поэтому попросту неизвестно, какая на них цена.
Спасибо! Отличная работа, вы реально круты!
Спасибо. Интересная информация. Только часть игр пропустилась. Например, в моем списке не оказалось рфтг.
А можно вариант для тех, у кого нет питона? :)
Вообще по здравому размышлению мне этот скрипт странен самому. Ведь практически никто не отмечает каждую сыгранную партию на BGG. Есть вообще во всём этом особый смысл?
Ну если не полениться отметить все партии и добавить все игры на BGG, то можно определить какая игра является вашей самой эффективной покупкой :)
Чуть попозже добавлю тогда Web-вариант.
Почему никто? Мне в основном для этого бгг и нужен.
Я отмечаю... на глаз... поэтому скрипт и интересен.
Эх, табуляции съехали, не заработает. Сейчас залью куда-нибудь и выложу ссылкой.
Спасибо, о Великий и Могучий! Всегда восхищался Кудесниками своего дела!
SyntaxError: Non-ASCII character '\xc7' in file C:\hours_price.py on line 14, bu
t no encoding declared; see http://www.python.org/peps/pep-0263.html for details
Это потому что кто-то при выкладывании приписал комментарий по-русски внутри кода.
Чтобы избавиться от такой ошибки либо сотрите русский комментарий из кода, либо вставьте самой верхней строкой:
# -*- coding: cp1251 -*-
C:\Users\Otd141-5>python C:\hours_price.py Orccc
Traceback (most recent call last):
File "C:\hours_price.py", line 17, in <module>
for item in items.iter('item'):
AttributeError: ElementTree instance has no attribute 'iter'
Простой скриптик на Питоне на быструю руку. По необходимости добавить валюты или исправить их стоимости.
currencies = {
"EUR":40,
"USD":31,
"GBP":47,
"CAD":30,
"RUR":1
}
import urllib2
import xml.etree.ElementTree as ET
baseurl = "http://www.boardgamegeek.com/xmlapi2"
games = []
url = "%s/collection?username=Matthew_Eklund&played=1" % baseurl
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 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)
Эх, съехали табуляции... Не будет работать. Как тут файликом добавить? :)
Круто!!!
А как бы это, например, в Тесеру вставить?
В Тесеру? А на чём она написана? Думаю, на чём бы ни была, переписать на нужный язык вопрос 10 минут.
Админу, который выкладывал файлик сюда:
положите последнюю версию с моей ссылки, у меня прав нет. Исправил там одну ошибку (вылетало на играх, которых нет в BGG-маркете) плюс поменял цены валют. Раньше было часов за рубль, теперь часов за доллар.
И поудаляйте пожалуйста мои сообщения, а то удаления нет, а намусорил я много. :)
Всё равно окно сразу закрывается. (: Может, проще в текстовый файл вывод сделать?
Если надо в файл, то можно вот так:
python hours_price.py username > outfile.txt
http://dsga.me/tmp/hours_price.py
Сорри, что требует установленного Питона.
Файлик скачать себе на комп. Запускать из командной строки:
python hours_price.py Some_username
А он работает? (: У меня окно после запуска просто закрывается.
Миша, если тебе больше нравится покупать, чем играть, то имеет ли значение эффективность? ;))
Ну я вроде поборол эту болезнь, у меня всего 3 неигранные коробки дома лежат. Теперь пришло время переосмыслить свою жизнь :) А для этого нужна аналитика...
БГГ для такой статистики слабо подходит. Только для тех кто скрупулёзно записывает туда все партии.
Думаю это исчезающее меньшинство.
Я выкладывал программы для ведения личной статистики. При чём они сделаны так чтобы можно было объединять разные личные статистики. На этой основе можно было бы подсчитать различные коэффициенты. И среднее время партий было бы реальное, потому что в программе можно засекать точное время. Но никто особо не заинтересовался.
Если вы скрупулёзно все заносили на БГГ, то вашу формулу очень легко реализовать.