Skip to content
John Purcell edited this page Jan 27, 2014 · 14 revisions

ColdCall is a tool to help find recruits in EVE Online using zKillboard data. ColdCall is specifically designed for the needs of Aideron Robotics, but the framework should be useful for others to fork and repurpose.

Using ColdCall

ColdCall is meant to be a "Push button. Receive Bacon" kind of application. Run from the command line, the default behavior (no args) will run through all steps of the process.

Supported Arguments

  • --quick: Refresh local databases by pulling latest kill data. Then build a report as normal
  • --no_report: Pulls the entire expected scrape, but does not build a report (can be combined with --quick)
  • --no_scrape: Only builds a report. Technically supported with --quick, but without a scrape, does nothing

How ColdCall Works

ColdCall specifically works in 3 stages. The final results are just dumped as a plain CSV (as of release v0.1.0). Additional processing can be done on the result structure either inside ColdCall or in a secondary application.

1: Build a miniature zKillboard

ColdCall mimics zKillboard's database structure. Information is split into Participants and Fits.

Recreating ALL of zKillboard is a painful process, and not entirely useful. With over 25 million kills across almost 10 years, ColdCall only needs a very recent scrape of that data. Also, at this time, the zKillboard API does not have much bandwidth (~2500 kills/minute), so smaller scrapes will serve to accelerate the entire process.

The first stage is to define the smallest common denominator using zKillboard's API. In the production release, the query looks like:

https://zkillboard.com/api/api-only/factionID/500004/beforeKillID/[most recent killID]/

Since Aideron Robotics is only interested in Gallente Militia pilots, the scrape only needs to look over the Gallente factionID. Another suggested scrape might be to include regions or wormhole space (w-space) to get only the relevant data and ignoring the rest automatically using zKillboard's API. It is possible to cast the scrape as wide as "Everyone in a given time period" but this query will be exceptionally long to return.

This first stage is completely reliant on zKillboard's API and therefore can only be managed in their terms. For instance, though you could do two scrapes to get everyone active in the Gal-Cal warzone, there is no way to exclude existing results in a second query. Pick your queries carefully to avoid repeated data.

Included with ColdCall is zkb.py. This module is designed to make queries as painless as possible. Please see documentation for more information about using this module for more unique queries.

###2: Build a Candidate List Once a local version of zKillboard is scraped and stored, building candidate list(s) is a simple matter of designing SQL queries. Included with the release is the one Aideron Robotics uses.

  • Candidate has kills/losses during AR's US active hours:
    • 0100-0500 UTC weekdays
    • 1800-0500 UTC weekends
  • Candidate is (or was) a member of Federal Defense Union
  • Candidate has had a kill or loss in the last 2 weeks
  • Candidate has kill and/or lost 5 ships in the last 30 days

For the next step, the following columns are needed (will be reduced to characterID soon(tm)):

  • characterID
  • losses
  • kills
  • latestActivity

Feel free to make your own query (or add extra columns) but the report step requires those 4 entries.

In the alpha release, the fits database is not leveraged. It is saved to avoid needing to recreate the databases.

###3: Build a Report Using the candidate characterIDs, a report is built to fetch more data about each candidate.

Character Info: From EVE API

  • Character Name
  • Estimated Age: excluding NPC corp time
  • Total Age
  • Character Birthday

Kill statistics: Broader zKillboard statistics ~1year

  • Total Kills
  • Total Losses
  • Total Solo kills
  • Link to zKillboard character profile

Future stats To be added in future releases

  • Value of kills
  • Value of losses
  • "best"/"worst" entries
  • Favorite ship
  • Most recent kill/loss entries
Clone this wiki locally