Перейти к содержимому


Обсуждение практических вопросов использования Wargaming Public API


  • Пожалуйста, авторизируйтесь для того, чтобы ответить
Сообщений в теме: 3902

Hedeon #41 Отправлено 08 Окт 2013 - 16:17

    Старшина

  • Разработчики
  • 19972 боя
  • 559
  • [WG-A] WG-A
  • Регистрация:
    30.12.2010

Тема для обсуждения практических вопросов использования Wargaming Public API.

 

Полезные ссылки для начинающих знакомство с PAPI:

- Аутентификация методами PAPI: что это и с чем его едят.

- Как рассчитать рейтинг эффективности при помощи методов Public API?

- Использование PHP библиотеки CURL для выполнения запросов в API WG.

 

Если Вы нашли баг/недоработку то, пожалуйста, занесите информацию в наш баг-трекер.



Xp9kyc #42 Отправлено 11 Окт 2013 - 12:10

    Младший сержант

  • Игроки
  • 42934 боя
  • 53
  • Регистрация:
    29.10.2010

Просмотр сообщенияthunderspb (11 Окт 2013 - 12:04) писал:

К тому же есть полезный инструмент API Explorer, которых неотходя от кассы показывает что приходит от сервера сейчас. Не раз уже писалось, что документация сырая...
ну вот, теперь все ясно. просто я, например, не в курсе был, что api explorer нужен как раз для  проверки ответов от сервера. вопрос снят, спс.

Drahtigel #43 Отправлено 11 Окт 2013 - 12:17

    Старший сержант

  • Игроки
  • 40117 боев
  • 333
  • [IS-23] IS-23
  • Регистрация:
    31.07.2011
Тот php-шный пример справедлив для API 1.x вроде бы. Вообще КР сейчас - это лишь набросок будущего инструмента.

Сайт клана IS-23

 


MustBeDead #44 Отправлено 11 Окт 2013 - 12:24

    Старший сержант

  • Игроки
  • 2668 боев
  • 286
  • Регистрация:
    22.04.2012

Просмотр сообщенияXp9kyc (11 Окт 2013 - 11:46) писал:

привет.
скопировал и попробовал у себя на веб-сервере запустить php скрипт из примера "Информация об игроке" из КР, работает почему-то наполовину, показывает только акк_id, ник и дату регистр., включил отображение ошибок в php и выявилось следующее:

Notice: Undefined index: xp in ......./test2.php on line 52
XP:

Notice: Undefined index: experience ......./test2.php on line 53
Battle average XP:

Notice: Undefined index: experience in ......./test2.php on line 56
Maximum XP:


судя по номерам ошибочных строк, ругается на вот эти из скрипта:

//52 строка
echo " <b>XP:</b> " . $value['experience']['xp'] . "<br/>";

//53 строка
echo "  <b>Battle average XP:</b> " . $value['experience']['battle_avg_xp'] . "<br/>";

//56 строка
echo "  <b>Maximum XP:</b> " . $value['experience']['max_xp'] . "<br/>";

т.е. получается в примере скрипта указаны несуществующие переменные запросов? или я где-то краблю?
помогите разобраться и исправить, плз.

Приносим свои извинения. В примерах допущена ошибка.
Обратите, пожалуйста, внимание на изменение индексов массива данных для PHP:

$value['statistics']['all']['xp']
$value['statistics']['all']['battle_avg_xp']
$value['statistics']['max_xp']

для Javascript:

result.data[key].statistics.all.xp
result.data[key].statistics.all.battle_avg_xp
result.data[key].statistics.max_xp

для Python:

acc['statistics']['all']['xp']
acc['statistics']['all']['battle_avg_xp']
acc['statistics']['max_xp']

Информация на странице с примерами будет изменена в ближайшее время.
Кабинет разработчика Wargaming Developer Partner Program

thunderspb #45 Отправлено 11 Окт 2013 - 12:25

    Младший лейтенант

  • Бета-тестеры
  • 10118 боев
  • 812
  • [BD] BD
  • Регистрация:
    04.06.2010

Просмотр сообщенияDrahtigel (11 Окт 2013 - 12:17) писал:

Тот php-шный пример справедлив для API 1.x вроде бы. Вообще КР сейчас - это лишь набросок будущего инструмента.
Судя по первым строчкам должен быть для 2.0 =)
define('API_URL', 'http://api.worldoftanks.ru/');
define('API_VERSION', '2.0');
define('ACCOUNTINFO_METHOD', API_URL.API_VERSION.'/account/info/');
define('APPLICATION_ID', 'demo');

Все, что вы хотели узнать про статистику онлайна с преферансом и куртизанками графиками покластерно и посерверно: https://stats.wotapi.ru/

Xp9kyc #46 Отправлено 11 Окт 2013 - 12:30

    Младший сержант

  • Игроки
  • 42934 боя
  • 53
  • Регистрация:
    29.10.2010

Просмотр сообщенияMustBeDead (11 Окт 2013 - 12:24) писал:

Приносим свои извинения. В примерах допущена ошибка.
Обратите, пожалуйста, внимание на изменение индексов массива данных для PHP:

$value['statistics']['all']['xp']
$value['statistics']['all']['battle_avg_xp']
$value['statistics']['max_xp']

для Javascript:

result.data[key].statistics.all.xp
result.data[key].statistics.all.battle_avg_xp
result.data[key].statistics.max_xp

для Python:

acc['statistics']['all']['xp']
acc['statistics']['all']['battle_avg_xp']
acc['statistics']['max_xp']

Информация на странице с примерами будет изменена в ближайшее время.

спасибо за информацию! пойду переделывать=)

Drahtigel #47 Отправлено 11 Окт 2013 - 12:57

    Старший сержант

  • Игроки
  • 40117 боев
  • 333
  • [IS-23] IS-23
  • Регистрация:
    31.07.2011

Просмотр сообщенияthunderspb (11 Окт 2013 - 12:25) писал:

Судя по первым строчкам должен быть для 2.0 =)
define('API_URL', 'http://api.worldoftanks.ru/');
define('API_VERSION', '2.0');
define('ACCOUNTINFO_METHOD', API_URL.API_VERSION.'/account/info/');
define('APPLICATION_ID', 'demo');
Я не по константам судил, а по коду :) И вообще моя хата с краю - на vb .net пишу :)

Сайт клана IS-23

 


thunderspb #48 Отправлено 11 Окт 2013 - 13:10

    Младший лейтенант

  • Бета-тестеры
  • 10118 боев
  • 812
  • [BD] BD
  • Регистрация:
    04.06.2010

Просмотр сообщенияDrahtigel (11 Окт 2013 - 12:57) писал:

Я не по константам судил, а по коду :) И вообще моя хата с краю - на vb .net пишу :)
:) Моя тоже, пишу на пхп и смотрю по возвращаемым данным, а не по описанию в КР :)
Все, что вы хотели узнать про статистику онлайна с преферансом и куртизанками графиками покластерно и посерверно: https://stats.wotapi.ru/

thunderspb #49 Отправлено 12 Окт 2013 - 00:41

    Младший лейтенант

  • Бета-тестеры
  • 10118 боев
  • 812
  • [BD] BD
  • Регистрация:
    04.06.2010
Ув. MustBeDead, объясните как по Вашей логике получить название провинции для боев этого клана:
линк: https://api.worldoft...o&clan_id=78333
ответ (на данный момент)
{
	"status": "ok",
	"count": 1,
	"data": {
		"78333": [
			{
				"provinces": [
					"KZ_16"
				],
				"started": false,
				"private": null,
				"time": 0,
				"arenas": [
					{
						"name_i18n": {
							"ru": "Перевал",
							"fr": "Перевал",
							"en": "Перевал",
							"th": "Перевал",
							"vi": "Перевал",
							"de": "Перевал",
							"tr": "Перевал",
							"it": "Перевал",
							"hu": "Перевал",
							"zh-cn": "Перевал",
							"pl": "Перевал",
							"ms": "Перевал",
							"cs": "Перевал",
							"es": "Перевал"
						},
						"name": "Перевал"
					}
				],
				"type": "landing"
			},
			{
				"provinces": [
					"RU_257"
				],
				"started": false,
				"private": null,
				"time": 0,
				"arenas": [
					{
						"name_i18n": {
							"ru": "Заполярье",
							"fr": "Заполярье",
							"en": "Заполярье",
							"th": "Заполярье",
							"vi": "Заполярье",
							"de": "Заполярье",
							"tr": "Заполярье",
							"it": "Заполярье",
							"hu": "Заполярье",
							"zh-cn": "Заполярье",
							"pl": "Заполярье",
							"ms": "Заполярье",
							"cs": "Заполярье",
							"es": "Заполярье"
						},
						"name": "Заполярье"
					}
				],
				"type": "landing"
			}
		]
	}
}
Провинций у клана нет, битвы за высадку :) Что делать в таком случае? Та же самая фигня будет если клан будет нападать на любую провинцию. Изначально я это и хотел донести, но Вы начали предлагать промежуточные решения, которые в этом случае никак не сработают, либо я что-то упустил.
зыж Делиться дампами баз для меня не надо, я себе уже давно все собрал, наоборот могу кому надо поделиться

Сообщение отредактировал thunderspb: 12 Окт 2013 - 00:44

Все, что вы хотели узнать про статистику онлайна с преферансом и куртизанками графиками покластерно и посерверно: https://stats.wotapi.ru/

MustBeDead #50 Отправлено 12 Окт 2013 - 01:35

    Старший сержант

  • Игроки
  • 2668 боев
  • 286
  • Регистрация:
    22.04.2012

Просмотр сообщенияthunderspb (12 Окт 2013 - 00:41) писал:

Ув. MustBeDead, объясните как по Вашей логике получить название провинции для боев этого клана:
линк: https://api.worldoft...o&clan_id=78333
ответ (на данный момент)
{
	"status": "ok",
	"count": 1,
	"data": {
		"78333": [
			{
				"provinces": [
					"KZ_16"
				],
				"started": false,
				"private": null,
				"time": 0,
				"arenas": [
					{
						"name_i18n": {
							"ru": "Перевал",
							"fr": "Перевал",
							"en": "Перевал",
							"th": "Перевал",
							"vi": "Перевал",
							"de": "Перевал",
							"tr": "Перевал",
							"it": "Перевал",
							"hu": "Перевал",
							"zh-cn": "Перевал",
							"pl": "Перевал",
							"ms": "Перевал",
							"cs": "Перевал",
							"es": "Перевал"
						},
						"name": "Перевал"
					}
				],
				"type": "landing"
			},
			{
				"provinces": [
					"RU_257"
				],
				"started": false,
				"private": null,
				"time": 0,
				"arenas": [
					{
						"name_i18n": {
							"ru": "Заполярье",
							"fr": "Заполярье",
							"en": "Заполярье",
							"th": "Заполярье",
							"vi": "Заполярье",
							"de": "Заполярье",
							"tr": "Заполярье",
							"it": "Заполярье",
							"hu": "Заполярье",
							"zh-cn": "Заполярье",
							"pl": "Заполярье",
							"ms": "Заполярье",
							"cs": "Заполярье",
							"es": "Заполярье"
						},
						"name": "Заполярье"
					}
				],
				"type": "landing"
			}
		]
	}
}
Провинций у клана нет, битвы за высадку :) Что делать в таком случае? Та же самая фигня будет если клан будет нападать на любую провинцию. Изначально я это и хотел донести, но Вы начали предлагать промежуточные решения, которые в этом случае никак не сработают, либо я что-то упустил.
зыж Делиться дампами баз для меня не надо, я себе уже давно все собрал, наоборот могу кому надо поделиться
При помощи Вашей базы данных (дамп, который Вы приложили) можно определить, что будут проведены бои за следующие провинции:
KZ_16 = Восточно-Казахстанская область
RU_257 = Алазея
Информацию можно собрать и таким методом, который был предложен мною - иначе названия провинций с идентификаторами Вы не сможете получить.
К сожалению, используя метод clan/provinces доступна информация только по кланам, которые владеют провинцией.
Благодарим за помощь и анализ ситуации.
Будет рассмотрено предложение по размещению информации в энциклопедии (или иной метод), который будет выдавать всю необходимую информацию.
Кабинет разработчика Wargaming Developer Partner Program

S0me0ne #51 Отправлено 13 Окт 2013 - 23:35

    Старший сержант

  • Игроки
  • 23735 боев
  • 241
  • Регистрация:
    10.03.2011

Просмотр сообщенияthunderspb (12 Окт 2013 - 00:41) писал:

Ув. MustBeDead, объясните как по Вашей логике получить название провинции для боев этого клана:
линк: https://api.worldoft...o&clan_id=78333
ответ (на данный момент)
Spoiler                     
Провинций у клана нет, битвы за высадку :) Что делать в таком случае? Та же самая фигня будет если клан будет нападать на любую провинцию. Изначально я это и хотел донести, но Вы начали предлагать промежуточные решения, которые в этом случае никак не сработают, либо я что-то упустил.
зыж Делиться дампами баз для меня не надо, я себе уже давно все собрал, наоборот могу кому надо поделиться
У меня в моде, http://forum.worldof.../topic/1036482-, где я тоже использую API 2.0 на данный момент есть XML файл с списком RU провинций, таким образом если распарсить XML'ку и представить что у массива с XMLкой есть метод get, то тогда
provname = provinces.get('KZ_16');
provname будет string: 'Восточно-Казахстанская область'

Сообщение отредактировал S0me0ne: 13 Окт 2013 - 23:35


Nik_ADA #52 Отправлено 15 Окт 2013 - 12:22

    Младший сержант

  • Игроки
  • 420 боев
  • 51
  • [NJG] NJG
  • Регистрация:
    27.05.2012
Добрый день, хотел бы уточнить пару моментов.
Хочу сменить тарифный план у хостера, что повлечет смену IP у сайта, это как то отобразится на доступах к API.
Если да, то мне снова нужно подавать заявку на получения доступа.

vb64 #53 Отправлено 15 Окт 2013 - 12:58

    Старшина

  • Игроки
  • 47658 боев
  • 792
  • Регистрация:
    27.04.2011

Просмотр сообщенияNik_ADA (15 Окт 2013 - 12:22) писал:

Добрый день, хотел бы уточнить пару моментов.
Хочу сменить тарифный план у хостера, что повлечет смену IP у сайта, это как то отобразится на доступах к API.
Если да, то мне снова нужно подавать заявку на получения доступа.


была аналогичная проблема. ответ разрабов:


Цитата

Отправьте письмо на api.support@wargaming.net с почты, для которой Вам был предоставлен доступ, с указанием что Вам необходимо сменить IP адрес, указанный Вами в заявке.


Панель управления кланом - Автоматический учет общей активности участников клана и их активности на ГК и УР, почасовые графики присутствия участников клана в игре, контроль посещаемости клановых мероприятий, формирование клановых рот, учет техники клана, динамическая статистика участников в целом по аккаунту и по моделям танков, новости клана на RSS поток и/или email, авторизация через wargaming.net OpenID и многое другое.

Nik_ADA #54 Отправлено 15 Окт 2013 - 13:04

    Младший сержант

  • Игроки
  • 420 боев
  • 51
  • [NJG] NJG
  • Регистрация:
    27.05.2012

Просмотр сообщенияvb64 (15 Окт 2013 - 12:58) писал:

была аналогичная проблема. ответ разрабов:
Спасибо за помощь и ответ :)

STREJlA #55 Отправлено 17 Окт 2013 - 01:38

    Старшина

  • Игроки
  • 14170 боев
  • 406
  • [W_G_P] W_G_P
  • Регистрация:
    25.10.2010
Интересует ваше мнение по поводу получения данных api.
В большинстве случаев не обязательно слать post запросы или использовать https.
Какая ф-я, по вашему, является более "правильной", для того что бы просто получить данные из файла, curl или file_get_contents ?
Обсуждений в инете нашел много, но все за и против четко описать так никто не смог... сам использую file_get_contents, и вроде как счастлив =)
Спасибо.

webphp #56 Отправлено 17 Окт 2013 - 08:18

    Рядовой

  • Игроки
  • 20869 боев
  • 9
  • Регистрация:
    11.05.2012

Просмотр сообщенияSTREJlA (17 Окт 2013 - 01:38) писал:

Какая ф-я, по вашему, является более "правильной", для того что бы просто получить данные из файла, curl или file_get_contents ?
file_get_contents работает? Ну и не парься!
Я юзаю curl в тех случаях, когда не хочу спалиться, имитация браюзера + прокси и т.д.
Для api wot юзаю file_get_contents (просто и сердито), но это опять же мое ИМХО!

STREJlA #57 Отправлено 17 Окт 2013 - 09:03

    Старшина

  • Игроки
  • 14170 боев
  • 406
  • [W_G_P] W_G_P
  • Регистрация:
    25.10.2010

Просмотр сообщенияwebphp (17 Окт 2013 - 08:18) писал:

file_get_contents работает? Ну и не парься!
Я юзаю curl в тех случаях, когда не хочу спалиться, имитация браюзера + прокси и т.д.
Для api wot юзаю file_get_contents (просто и сердито), но это опять же мое ИМХО!
да вот задумался... сейчас к примеру АПИ у мну не работают...
на file_get_contents нельзя таймаут повесить или заголовки прочитать...
но когда все ок - с curl мороки больше... делема

Zhuka #58 Отправлено 17 Окт 2013 - 09:09

    Новобранец

  • Игроки
  • 8602 боя
  • 1
  • [KZR_T] KZR_T
  • Регистрация:
    04.10.2010

Просмотр сообщенияSTREJlA (17 Окт 2013 - 09:03) писал:

да вот задумался... сейчас к примеру АПИ у мну не работают...
на file_get_contents нельзя таймаут повесить или заголовки прочитать...
но когда все ок - с curl мороки больше... делема
Не больше мороки: достаточно обернуть один раз курл в функцию или метод и пользуйся на здоровье, так же, как file_get_contents. Помимо таймаута, курлом можно получить HTTP_STATUS и программно предпринять более осмысленные действия.

STREJlA #59 Отправлено 17 Окт 2013 - 09:19

    Старшина

  • Игроки
  • 14170 боев
  • 406
  • [W_G_P] W_G_P
  • Регистрация:
    25.10.2010

Просмотр сообщенияZhuka (17 Окт 2013 - 09:09) писал:

Не больше мороки: достаточно обернуть один раз курл в функцию или метод и пользуйся на здоровье, так же, как file_get_contents. Помимо таймаута, курлом можно получить HTTP_STATUS и программно предпринять более осмысленные действия.
все думаю... курл использовать, и каждый раз проверять наличие ответа в ответе =)
или раз проверить - работает ли, а потом на авось полагаться и file_get_contents юзать.
Не, на авось это не айс... нужно хорошенько продумать все возможные "последствия" запроса.

Сообщение отредактировал STREJlA: 17 Окт 2013 - 09:26


webphp #60 Отправлено 17 Окт 2013 - 10:42

    Рядовой

  • Игроки
  • 20869 боев
  • 9
  • Регистрация:
    11.05.2012
Та какие там последствия, что ты curl может проверить http статус, что ты file_get_contents может проверить принял ты данные или нет
для принятия и обработки контента делай отдельную функцию, которая будет парсить и выявлять какие то ошибки, ведь совсем необязательно для парсинга создавать новые объекты и т.д.
В общем тут все зависит от структуры твоего приложения.
Я лично не парюсь об этом, дергаю контент file_get_contents, потому как кода меньше.

Цитата

или раз проверить - работает ли
нужно каждый раз проверять. а то юзер сделает большие глазки и убежит от тебя.
Я обычно проверяю все входящие данные, уже в крови заложено и если что просто вывожу информацию об ошибке или код ошибки, чтобы было понятно что где искать или же сообщить юзеру о неудаче.
В общем юзай file_get_contents, а если его станет тебе мало, т.е. понадобится сделать какие то проверки которые нереально сделать с file_get_contents, то тогда уже перейдешь на curl, при грамотной структуре двига, сделать это как два пальца об асфальт.

Цитата

сейчас к примеру АПИ у мну не работают.
сервер лежал

Сообщение отредактировал webphp: 17 Окт 2013 - 10:43


shizzard #61 Отправлено 17 Окт 2013 - 13:10

    Сержант

  • Игроки
  • 24482 боя
  • 122
  • [IMBSQ] IMBSQ
  • Регистрация:
    27.06.2010

Просмотр сообщенияwebphp (17 Окт 2013 - 10:42) писал:

Та какие там последствия, что ты curl может проверить http статус, что ты file_get_contents может проверить принял ты данные или нет
для принятия и обработки контента делай отдельную функцию, которая будет парсить и выявлять какие то ошибки, ведь совсем необязательно для парсинга создавать новые объекты и т.д.
В общем тут все зависит от структуры твоего приложения.
Я лично не парюсь об этом, дергаю контент file_get_contents, потому как кода меньше.

В общем юзай file_get_contents, а если его станет тебе мало, т.е. понадобится сделать какие то проверки которые нереально сделать с file_get_contents, то тогда уже перейдешь на curl, при грамотной структуре двига, сделать это как два пальца об асфальт.

Я бы вам настоятельно советовал использовать curl. Для того, чтобы не использовать file_get_contents, достаточно посмотреть на исходники: http://lxr.php.net/x...dard/file.c#512. Да и потом, если у вас будет установлен allow_url_fopen = false в конфиге php, работать такой код не будет.
Если вы не будете знать кода ответа, вы не сможете принять решение о том, нужно ли вам делать retry запроса (например, в случае maintenance статуса ответа), или вы уперлись в ограничение по количеству запросов в секунду, или чего-нибудь еще.
Свободное общение на тему разработки под WG Public API: xmpp://wg-papi@conference.jabber.ru




Количество пользователей, просматривающих этот форум: 7

0 пользователей, 7 гостей, 0 анонимных