These forums have been archived and are now read-only.

The new forums are live and can be found at https://forums.eveonline.com/

EVE Technology Lab

 
  • Topic is locked indefinitely.
 

Finding IDs of citadels

Author
Hacca Kerpeten
Deep Core Mining Inc.
Caldari State
#1 - 2017-06-14 20:45:06 UTC  |  Edited by: Hacca Kerpeten
Hi,

I'm trying to write a small script to replicate in game market window for sell orders. Unfortunately ESI does not give the same functionality as the ingame market window directly, as /markets/{region_id}/orders/ does not include citadels into the list.

The only way I found to mimic the in game functionality is find each 'public' citadel in the system and merge the orders in those citadels with orders in stations.

However this time, definition of 'public' gets into the way. Several citadels in the system I'm interested in does not show up in the /universe/structures/ list, even though I can see orders in those citadels in my market window and dock to them as a NPC corp member.

I can not query orders in those structures using /markets/structures/{structure_id}/ as I don't know the structure id. Is there a way to get the structure id of a structure which is not listed in /universe/structures/ ?


EDIT - Current Situation:
The only way to mimic the in-game Regional Market through ESI reliable is to crawl ids of all structures using their names. To do that a pilot needs to traverse the systems in the region to collect the names of structures first.

I created a ticket in github to address this issue, drop your comments ideas there: https://github.com/ccpgames/esi-issues/issues/452
Blacksmoke16
Resilience.
#2 - 2017-06-14 22:05:09 UTC
Make a courier to it and check the endStationID in the XML API. Kinda hacky but it works.
Professor JinMine
Project Fruit House
#3 - 2017-06-15 04:43:32 UTC
You could use a player complied list like this one : https://www.adam4eve.eu/info_stations.php
Hacca Kerpeten
Deep Core Mining Inc.
Caldari State
#4 - 2017-06-15 15:31:55 UTC  |  Edited by: Hacca Kerpeten
Blacksmoke16 wrote:
Make a courier to it and check the endStationID in the XML API. Kinda hacky but it works.


That's a nice temporary work around. Thank you. It will help me out until hopefully devs will understand the problem.

Professor JinMine wrote:
You could use a player complied list like this one : https://www.adam4eve.eu/info_stations.php


This has potential however I don't think it will solve my problem, as it also relies on 'public' universe/structures end point.

I guess I should follow this up in Github. The actual problem is, currently there is no way to replicate the in-game market sell orders view results accurately.
Hacca Kerpeten
Deep Core Mining Inc.
Caldari State
#5 - 2017-06-15 17:44:19 UTC
I found another work-around. It's possible to find a structure_id using /characters/{character_id}/search/ endpoint with the name of the structure.

To create a mimic of in-game Regional Market view, someone needs to traverse all systems in the Region in-game, retrieve the structure_ids from the names though. Pretty cumbersome.
Blacksmoke16
Resilience.
#6 - 2017-06-16 01:00:52 UTC
Hacca Kerpeten wrote:
I found another work-around. It's possible to find a structure_id using /characters/{character_id}/search/ endpoint with the name of the structure.

To create a mimic of in-game Regional Market view, someone needs to traverse all systems in the Region in-game, retrieve the structure_ids from the names though. Pretty cumbersome.


That's surprising, since using the in game search doesn't return structures you don't have access to.
Hacca Kerpeten
Deep Core Mining Inc.
Caldari State
#7 - 2017-06-16 16:39:34 UTC
Blacksmoke16 wrote:
That's surprising, since using the in game search doesn't return structures you don't have access to.


The problem is the other way around. The 'public' structures endpoint do not return structures that you DO have access to, likely related to this blog post: https://developers.eveonline.com/blog/article/changes-to-public-citadel-endpoint


So what I'm trying to do is actually get the IDs of structures that I can access, which I found to be surprisingly difficult.