Вычисляем персонажей ГМов в WoW с помощью Python  
Автор Сообщение



<Крестьяне хотят в топ>


Сервер: Страж Смерти
Рейтинг поля боя: 1588
2х2: 1620
3х3: 1843
32
Сообщение Вычисляем персонажей ГМов в WoW с помощью Python

Всем привет! На днях, случайно наткнулся на интересную статью и решил поделится ею на ПГ.

Был у меня (автора) как-то сайт по поиску твинков в World of Warcraft. Любой мог ввести ник и получить список персонажей, находящихся на той же записи (если данные имелись в базе сайта, конечно).

И вот однажды ко мне зашел посетитель из Blizzard:

 

 

99% людей во время первого посещения ищут себя и своих друзей. Посетитель из Франции не стал исключением и оставил в логе просмотров несколько персонажей, скорее всего принадлежащих работникам близзард (что было видно по активности на форуме и другим признакам). Конечно, мне стало интересно, чем же отличаются персонажи гейммастеров от персонажей обычных смертных и отличаются ли вообще.

После просмотра ачивок этих персонажей стало ясно, что при поступлении на службу новоиспеченному ГМу выдают набор коллекционных изданий всех игр близзард. После более пристального изучения вскрылась одна деталь: все коллекционки получены в один день (видимо, примерная дата поступления на работу).

 

 

Используем API Battle.net

Гмы получают все существующие (на дату получения) коллекционки — а значит, и самую первую, «ванильную». Она была выпущена больше 10 лет назад и сегодня достать ее можно разве что на ebay за 2-3 тысячи евро. Её-то и будем использовать для поиска других персонажей.

Искать будем персонажей, у которых есть такой пет (его дают бонусом за активацию ванильной коллекционки):

 

 

Так как прямого доступа к спискам персонажей API не предоставляет, будем искать персонажей через аукцион.

Код:
realm = "гордунни"  # реалм, на котором будем искать персонажей

# Получаем ссылку на дамп аукциона

r = requests.get("http://eu.battle.net/api/wow/auction/data/%s" % realm)

auction_dump_url = json.loads(r.text)["files"][0]["url"]

# Загружаем данные по лотам на аукционе

auc_data = json.loads(requests.get(auction_dump_url).text)

# Составляем список имен/реалмов персонажей

chars = {(lot["owner"], lot["ownerRealm"]) for lot in auc_data["auctions"]["auctions"]}

В этой функции определяем, является ли персонаж потенциальным гмом:

Код:
def is_gm(name, realm):

       r = requests.get(CHAR_API_URL.format(name=name, realm=realm))

       if r.text.find("Panda Cub") != -1:

           return True

Запускаем проверку:

Код:
for name, realm in chars:

         if is_gm(name, realm):

             print("Возможно ГМ: %s %s" % (name, realm))

         time.sleep(1)

Код:

import json

import requests

import time

CHAR_API_URL = "http://eu.battle.net/api/wow/character/{realm}/{name}?fields=pets,guild"

# В этой функции определяем, является ли персонаж потенциальным гмом

def is_gm(name, realm):

      r = requests.get(CHAR_API_URL.format(name=name, realm=realm))

      if r.text.find("Panda Cub") != -1:

            return True

realm = "гордунни"  # реалм, на котором будем искать персонажей

# Получаем ссылку на дамп аукциона

r = requests.get("http://eu.battle.net/api/wow/auction/data/%s" % realm)

auction_dump_url = json.loads(r.text)["files"][0]["url"]

# Загружаем данные по лотам на аукционе

auc_data = json.loads(requests.get(auction_dump_url).text)

# Составляем список имен/реалмов персонажей

chars = {(lot["owner"], lot["ownerRealm"]) for lot in auc_data["auctions"]["auctions"]}

# Запускаем проверку

for name, realm in chars:

      if is_gm(name, realm):

             print("Возможно ГМ: %s %s" % (name, realm))

       time.sleep(1)

Примечание: скрипт ищет только персонажей, выставляющих лоты на аукционе. Для более широкого охвата можно также сканировать согильдийцев каждого владельца лота.

Дальше нужно смотреть другие признаки — сколько получено коллекционок за один день, их общее кол-во и так далее.
Конечно, не каждый персонаж, который соответствует критериям, принадлежит ГМу. Это может быть и просто коллекционер, например.

Для отображения результатов скрипта создал простенький сайт: http://wow-gm-track.website

Из интересностей: в процессе сканирования выявились целые гнезда — гильдии, в которых сразу несколькоразных аккаунтов, принадлежащих (предположительно) ГМам. Например: Зов древних (6 штук, в том числе глава гильдии).

И немного статистики: на сегодняшний день просканировано 1,7 миллиона персонажей на русскоязычных реалмах, ванильную коллекционку имеют 1306 персонажей (0,07%), из них только 380 персонажей получили хотя бы 4 коллекционки в один день (0,02% от общего числа).

Всем добра   



04 июн 2015, 12:53
Профиль

5
Сообщение Вычисляем персонажей ГМов в WoW с помощью Python

а смысл в чем? зачем это нужно?



04 июн 2015, 13:01
Профиль



<Хьюстон снова в деле>


Сервер: Черный Шрам
2х2: 1524
-8
Сообщение Вычисляем персонажей ГМов в WoW с помощью Python

^Чё минусят, статья и правда бесполезный кусок кала



04 июн 2015, 13:20
Профиль

0
Сообщение Вычисляем персонажей ГМов в WoW с помощью Python

Интересный подход к вопросу. Плюсую. 



04 июн 2015, 13:33
Профиль

0
Сообщение Вычисляем персонажей ГМов в WoW с помощью Python

потом гмов вычислят по айпи и грохнут в подъезде, революция намечается!



04 июн 2015, 14:17
Профиль



<Крестьяне хотят в топ>


Сервер: Страж Смерти
Рейтинг поля боя: 1588
2х2: 1620
3х3: 1843
4
Сообщение Вычисляем персонажей ГМов в WoW с помощью Python

Wallstreetx писал(а):

потом гмов вычислят по айпи и грохнут в подъезде, революция намечается!

Не за что   

Изменим WoW вмести!    



04 июн 2015, 14:26
Профиль



<Ренессанс>


Сервер: Ясеневый лес
2х2: 1256
3х3: 1344
0
Сообщение Вычисляем персонажей ГМов в WoW с помощью Python

Prometh писал(а):

Wallstreetx писал(а):

потом гмов вычислят по айпи и грохнут в подъезде, революция намечается!

Не за что   

Изменим WoW вмести!    

о рядом пиццерия..по любому там гмы кушают



04 июн 2015, 15:08
Профиль



<Розенкрейц>


Сервер: Гордунни
2х2: 1345
1
Сообщение Вычисляем персонажей ГМов в WoW с помощью Python

Prometh писал(а):

Wallstreetx писал(а):

потом гмов вычислят по айпи и грохнут в подъезде, революция намечается!

Не за что   

Изменим WoW вмести!    

Едем на моей машине! (с)



04 июн 2015, 15:33
Профиль

0
Сообщение Вычисляем персонажей ГМов в WoW с помощью Python

я уверен что тс даже не понял что делает код лал



04 июн 2015, 16:23
Профиль

0
Сообщение Вычисляем персонажей ГМов в WoW с помощью Python

Код:
returnTrue

Не могу правду вернуть

 

 



04 июн 2015, 16:36
Профиль



<Крестьяне хотят в топ>


Сервер: Страж Смерти
Рейтинг поля боя: 1588
2х2: 1620
3х3: 1843
0
Сообщение Вычисляем персонажей ГМов в WoW с помощью Python

merd0ck писал(а):
Код:
returnTrue

Не могу правду вернуть

return True - FIXED



04 июн 2015, 17:20
Профиль



<Бильдербергский Клуб>


Сервер: Свежеватель Душ
Рейтинг поля боя: 576
2х2: 1917
3х3: 1925
1
Сообщение Вычисляем персонажей ГМов в WoW с помощью Python

Обычные люди эти гмы. Зачем следить то за ними, выяснять про них информацию? Пусть себе играют спокойно.



04 июн 2015, 20:08
Профиль Skype



<Мы с ралли на ралли>


Сервер: Гордунни
Рейтинг поля боя: 1952
2х2: 1243
0
Сообщение Вычисляем персонажей ГМов в WoW с помощью Python

хороший был сайт



04 июн 2015, 22:50
Профиль



<Время Хаоса>


Сервер: Король-лич
0
Сообщение Вычисляем персонажей ГМов в WoW с помощью Python

Огонь! 



05 июн 2015, 10:48
Профиль

0
Сообщение Вычисляем персонажей ГМов в WoW с помощью Python

Досуг задротов



05 июн 2015, 15:45
Профиль



<IHOP>


Сервер: Outland
1
Сообщение Вычисляем персонажей ГМов в WoW с помощью Python

wergeld писал(а):

Prometh писал(а):

Wallstreetx писал(а):

потом гмов вычислят по айпи и грохнут в подъезде, революция намечается!

Не за что   

Изменим WoW вмести!    

о рядом пиццерия..по любому там гмы кушают

Устраиваемся поварами в пиццерию и травим их



06 июн 2015, 11:17
Профиль
Начать новую тему Ответить на тему


Перейти:  

На сайте использованы материалы, принадлежащие Blizzard Entertainment. Копирование материалов возможно только c разрешения портала. В противном случае это будет называться уже другим словом.
Рейтинг@Mail.ru