Друзья программисты,
в майские праздники было время поразгребать свою коллекцию, и я задумался о том, а какая игра является моей самой эффективной покупкой, ведь в большинство игр я играл всего 1 раз. И придумал следующий алгоритм, как это можно оценить. Что если бы был скрипт, который:
На входе получает имя пользователя с БГГ.
Обработка: скрипт подкачивает по этому пользователю все игры, в которые он играл хотя бы один раз (played) и высчитывает эффективность в размерности "Игрочас за доллар":
Эффективность покупки = Количество партий в игру (played) * Среднее время партии в игру (данные с БГГ) / Среднюю стоимость игры в магазинах (где-то уже был скрипт, подсчитывающий это значение)
При этом не обязательно, чтобы игра была в коллекции, чтобы можно было понять, какую игру нужно покупать следующей.
На выходе: игры, упорядоченные по этому коэффициенту эффективности от большего к меньшему.
Благодаря этому получится понимание, сколько времени вы наслаждались игрой за каждый потраченный доллар. При этом, правда работает только для игр, которые сейчас продаются.
Есть смелые программисты, которые могут реализовать такой скрипт?
upd. Адрес скрипта http://109.163.239.8:6030/
На первом месте оказалась одна из самых не любимых мною игр, Цитадели %)
А у меня:
на первом месте Корова 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-вариант.
Почему никто? Мне в основном для этого бгг и нужен.
Я отмечаю... на глаз... поэтому скрипт и интересен.