Страница 1 из 1 |
Автор | Сообщение |
---|---|
|
32
Всем привет! На днях, случайно наткнулся на интересную статью и решил поделится ею на ПГ. Был у меня (автора) как-то сайт по поиску твинков в 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) Примечание: скрипт ищет только персонажей, выставляющих лоты на аукционе. Для более широкого охвата можно также сканировать согильдийцев каждого владельца лота. Всем добра |
04 июн 2015, 12:53 |
|
|
5
а смысл в чем? зачем это нужно? |
04 июн 2015, 13:01 |
|
|
-8
^Чё минусят, статья и правда бесполезный кусок кала |
04 июн 2015, 13:20 |
|
|
0
Интересный подход к вопросу. Плюсую. |
04 июн 2015, 13:33 |
|
|
0
потом гмов вычислят по айпи и грохнут в подъезде, революция намечается! |
04 июн 2015, 14:17 |
|
|
4
Wallstreetx писал(а): потом гмов вычислят по айпи и грохнут в подъезде, революция намечается!
Не за что Изменим WoW вмести! |
04 июн 2015, 14:26 |
|
|
0
Prometh писал(а): Wallstreetx писал(а): потом гмов вычислят по айпи и грохнут в подъезде, революция намечается!
Не за что Изменим WoW вмести! |
04 июн 2015, 15:08 |
|
|
1
Prometh писал(а): Wallstreetx писал(а): потом гмов вычислят по айпи и грохнут в подъезде, революция намечается!
Не за что Изменим WoW вмести! Едем на моей машине! (с) |
04 июн 2015, 15:33 |
|
Сервер: Король-лич |
0
я уверен что тс даже не понял что делает код лал |
04 июн 2015, 16:23 |
|
|
0
Не могу правду вернуть
|
04 июн 2015, 16:36 |
|
|
0
merd0ck писал(а): Код: returnTrue Не могу правду вернуть return True - FIXED |
04 июн 2015, 17:20 |
|
<Бильдербергский Клуб> Сервер: Свежеватель Душ Рейтинг поля боя: 576 2х2: 1917 3х3: 1925 |
1
Обычные люди эти гмы. Зачем следить то за ними, выяснять про них информацию? Пусть себе играют спокойно. |
04 июн 2015, 20:08 |
|
|
0
хороший был сайт |
04 июн 2015, 22:50 |
|
<Время Хаоса> Сервер: Король-лич |
0
Огонь! |
05 июн 2015, 10:48 |
|
|
0
Досуг задротов |
05 июн 2015, 15:45 |
|
<IHOP> Сервер: Outland |
1
wergeld писал(а): Prometh писал(а): Wallstreetx писал(а): потом гмов вычислят по айпи и грохнут в подъезде, революция намечается!
Не за что Изменим WoW вмести! Устраиваемся поварами в пиццерию и травим их |
06 июн 2015, 11:17 |
|
Страница 1 из 1 |