Skip to content

SirWerto/travianmap

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TravianMap

A simple library to deal with the bad Travian "API". It is a best effort tool so when it faces against an inconsistency of the Travian API, TravianMap discards it and continue. TranvianMap get the urls from the Travian GameWorld Schedule blog page and get the map information appending /map.sql to the server urls.

It uses inets for fetching the data and thoas to handle the json format.

You can find the info of the snapshot here.

At TheRedNatar we develop TravianMap for fetching and parsing the map.sql that Travian offers.

Installation

Erlang

% rebar.config
{deps, [travianmap]}

Elixir

# mix.exs
def deps do
  [{:travianmap, "~> 0.5.0"}]
end

Basic Usage

1> travianmap:get_urls().
{ok,[<<"https://ts5.x1.america.travian.com">>,
     <<"https://ts4.x1.america.travian.com">>,
     <<"https://ts15.x1.america.travian.com">>,
     <<"https://ts8.x1.america.travian.com">>,
     <<"https://ts25.x2.america.travian.com">>,
     <<"https://ts7.x1.america.travian.com">>,
     <<"https://ts2.x1.america.travian.com">>,
     <<"https://ts50.x5.america.travian.com">>,
     <<"https://ts6.x1.america.travian.com">>,
     <<"https://ts15.x1.arabics.travian.com">>]}

2> Url = <<"https://ts50.x5.america.travian.com">>.

3> travianmap:get_info(Url).
{ok,#{<<"18c">> => false,<<"adventuresDecay">> => false,
      <<"allianceBanner">> => true,<<"allianceBonus">> => true,
      <<"allianceShowIncomingAttacks">> => false,
      <<"boostedStart">> => false,<<"bottom">> => -200,
      <<"cities">> => false,<<"contextHelp">> => true,
      <<"country">> => <<"com">>,<<"factions">> => false,
      <<"height">> => 401,<<"hideFoolsArtifacts">> => false,
      <<"left">> => -200,<<"lockingRegionsAgain">> => true,
      <<"multi_language">> => true,<<"progressiveTasks">> => true,
      <<"rearrangeBuildings">> => true,
      <<"resourcesInHeroBag">> => true,<<"right">> => 200,
      <<"sittingOnlyFriends">> => true,<<"speed">> => 5,
      <<"territory">> => false,<<"title">> => <<"America 50">>,
      <<"top">> => 200,<<"travelOverTheWorldEdge">> => true,
      <<"tribesEgyptiansAndHuns">> => false,...}}

4> {ok, ServerMap} = travianmap:get_map(Url)
5> {ok, Villages} = travianmap:parse_map(ServerMap, no_filter).
[{ok,{318,117,200,1,24785,<<"Tánatos"/utf8>>,2916, <<"Gluk">>,0,<<>>,580}},
 {ok,{388,187,200,1,24830,<<"Fornost">>,328,<<"Boromir">>,34, <<"L1389">>,542}},
 {ok,{389,188,200,1,24416,<<"Eldalondë"/utf8>>,328, <<"Boromir">>,34,<<"L1389">>,711}},
 {ok,{390,189,200,1,26671,<<"Aldea nueva">>,328, <<"Boromir">>,34,<<"L1389">>,98}},
 {error, unable_to_parse},
 {ok,{391,190,200,1,21867,<<"Edhellond">>,328,<<"Boromir">>, 34,<<"L1389">>,844}},
 {ok,{392,191,200,1,19940,<<"Abismo de Helm">>,328, <<"Boromir">>,34,<<"L1389">>,1009}},
 {ok,{717,115,199,1,25112,<<"Hipnos">>,2916,<<"Gluk">>,0, <<>>,472}}| ...]

6> {ok, Villages} = travianmap:parse_map(ServerMap, filter).
[{318,117,200,1,24785,<<"Tánatos"/utf8>>,2916, <<"Gluk">>,0,<<>>,580},
 {388,187,200,1,24830,<<"Fornost">>,328,<<"Boromir">>,34, <<"L1389">>,542},
 {389,188,200,1,24416,<<"Eldalondë"/utf8>>,328, <<"Boromir">>,34,<<"L1389">>,711},
 {390,189,200,1,26671,<<"Aldea nueva">>,328, <<"Boromir">>,34,<<"L1389">>,98},
 {391,190,200,1,21867,<<"Edhellond">>,328,<<"Boromir">>, 34,<<"L1389">>,844},
 {392,191,200,1,19940,<<"Abismo de Helm">>,328, <<"Boromir">>,34,<<"L1389">>,1009},
 {717,115,199,1,25112,<<"Hipnos">>,2916,<<"Gluk">>,0, <<>>,472}| ...]

About

Get Travian data with Erlang

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages