В этой статье будет рассказано о доступном официальном игровом API, как им пользоваться, какие данные можно получить.
API можно разделить на три вида:
Последний пункт доступен только владельцам корпораций и только по тем Космическим Станциям, что находятся на этом аккаунте (владельца).
Для получения такой информации вам понадобится сгенерировать ключ к API. Это можно сделать на странице настроек
В самом низу нажать на кнопку "посмотреть". В появившемся окне нажать на кнопку "другой". Сайт сгенерирует новый ключ к API. Скопируйте его.
Так нужно сделать для каждого вашего игрового аккаунта.
На текущий момент этот ключ имеет только одно применение: получать информацию об атаках на этот аккаунт.
Ключ не даёт никакого доступа к Вашему аккаунту. С его помощью нельзя управлять им.
Если какое-либо сообщество просит вас предоставить этот ключ для отслеживания атак, то это полностью безопасно.
Теперь перейдём к самому API.
Ссылка для запроса:
https://galaxyonline.io/api/galaxy-multi-users/get-full-warnings
В запрос нужно добавить JSON объект с перечнем ключей:
{"apikeys": ["apikey1","apikey2", ..., "apikeyN"]}
Тип запроса GET.
Частота запросов: не чаще чем один раз в пять секунд. То есть между ними должна быть пауза как минимум в 5 секунд.
Пример использования в языке программирования python с модулем requests:
import requests
url = "https://galaxyonline.io/api/galaxy-multi-users/get-full-warnings"
data = {"apikeys": ["apikey1", "apikey2"]}
response = requests.get(url, json = data)
attacks = response.json()
print(attacks)
Перечислим возможные ответы от сервера игры
Если не передать ни одного ключа, то ответ будет:
{"error":"no worked keys"}
Если передать хотя бы один нерабочий (неправильный) ключ, например "abracadabra", то ответ будет:
{'error': 'error key abracadabra'}
Если сделать два запроса подряд без паузы, то ответ у второго запроса будет:
{'msg': 'Не чаще 1 действя в 5сек.'}
Если с ключами всё в порядке, то можно ожидать два варианта ответа.
Если ни на один из перечисленных аккаунтов нет атак, то ответ будет:
[]
Если хотя бы на один из перечисленных аккаунтов есть атака, то ответ будет:
{"apikey1":
[
{
"id": "17544416", // ID движения
"sender_user_id": "1000", // ID игрока-отправителя
"target_user_id": "2000", // ID игрока-цели
"planet_from":"11-Tashio", // Название планеты отправителя
"planet_to":"Fasria", // Название планеты цели
"remaining": 26895, // Время в секундах до подлёта войск
"units": // Список кораблей (видно если в области действия Станции Обнаружения на Планете), без этого false
{"1": // "1" и "unit_id" - ID корабля
{"unit_id":"1","quantity":"1"} // "quantity" - количество кораблей
}
}
]
}
Кадому аккаунту соответствует свой ключ.
В ответе будет JSON объект (словарь), где каждому ключу будет соответствовать массив (список) из словарей (dictionary).
В массиве будут перечислены все атаки.
В примере оставлены комментарии к полям.
Дополнительно про "units".
Если на Планете есть здание Станция Обнаружения и если на момент запроса атака будет в радиусе действия здания, то для значения "units" будут перечислены виды кораблей и их количество.
В противном случае значение будет false.
ID кораблей:
Ссылка для запроса:
https://galaxyonline.io/api/galaxy-users-map?galaxy_id=N
Где N в самом конце ссылки - это ID галактики.
Тип запроса GET.
Частота запросов: не чаще чем один раз в пять секунд. То есть между ними должна быть пауза как минимум в 5 секунд.
Перечислим ID галактик:
Это основные галактики.
Также информацию можно получить по корпоративным галактикам:
И ещё у нас остались свободные корпоративные галактики, их ID идут от 17 до 63, исключая уже перечисленные.
Пример использования в языке программирования python с модулем requests:
import requests
url = "https://galaxyonline.io/api/galaxy-users-map?galaxy_id=4"
response = requests.get(url)
data = response.json()
planets = data.get("planets")
users = data.get("users")
print(f"Delta Galaxy.\nTotal planets: {len(planets)}\nTotal players: {len(users)}")
Если не указать ID галактики, то ответ будет:
{"error":"need set galaxy_id"}
Если сделать два запроса подряд без паузы, то ответ у второго запроса будет:
{'msg': 'Не чаще 1 действя в 5сек.'}
При правильном запросе ответ будет:
{
"planets": [
{
"id": "4659777",
"x": "1324745",
"y": "624581",
"name": "Brisium",
"custom_name": "Mago10",
"resource_id": "1",
"size": "2",
"user_id": "4106"
},
{...},
{...},
...
],
"users": {
"4106": {
"id": "4106",
"username": "mirkomago",
"cord_id": null,
"corp_title": null
},
"3745": {
"id": "3745",
"username": "Sabzero SP",
"cord_id": "16",
"corp_title": "Space Peppers"
},
"456": {...},
...
}
}
ID типов планет:
ID размеров планет:
Все Космические и Пиратские Станции имеют размер 2.
Ссылка для запроса:
https://galaxyonline.io/api/galaxy-corporations/stations-convertations?key=apikey&date_from=2024-11-01&date_to=2024-11-02
Где
apikey - ключ к API аккаунта владельца корпорации (сам аккаунт в основной галактике, а не корпоративный "клон")
date_from=2024-11-01 - начальная дата среза информации, год-месяц-число
date_to=2024-11-02 - конечная дата среза информации, год-месяц-число
Тип запроса GET.
Рекомендуется делать запрос за конкретный день, дабы избежать возможных ошибок.
При этом надо указать начальную дату этот день, а конечную - следующий.
Пример использования в языке программирования python с модулем requests:
import requests
apikey = "abracadabra"
url = f"https://galaxyonline.io/api/galaxy-corporations/stations-convertations?key={apikey}&date_from=2024-11-01&date_to=2024-11-02"
response = requests.get(url)
data = response.json()
print(data)
Если не указать ключ, то ответ будет:
{"error":"no key"}
Если указать неправильный ключ, то ответ будет:
{"error":"error key"}
Если всё правильно, но за выбранные даты информации нет, то ответ будет:
{"data":[]}
Если информации будет слишком много, то ответ будет не объектом JSON. Его тип будет
'Content-Type': 'text/html'
А сам ответ будет содержать ошибку сервера Nginx.
An error occurred. Sorry, the page you are looking for is currently unavailable. Please try again later. If you are the system administrator of this resource then you should check the error log for details. Faithfully yours, nginx.
{"data":
[
{
"id":"86792354",
"username":"Solomon Reed",
"user_id":"123",
"planet_id":"46000000",
"planet_custom_name":"Phantom Liberty",
"planet_name":"Voblium",
"resource_id":"6",
"resource_count":"17863",
"energy_reward":"428712",
"energy_to_cs_owner":"142904",
"created_at":"2024-11-02 02:59:26"
}
]
}
Где