Giter VIP home page Giter VIP logo

pgoapi's People

Contributors

armax avatar chlodochar avatar cnlambda avatar dmadisetti avatar elliottcarlson avatar globeriz avatar invisiblek avatar jle3 avatar john-best avatar joshk6656 avatar kageurufu avatar kgirthofer avatar kleinernull avatar krzys-h avatar mikeres0 avatar mjuchli avatar rahu1994 avatar readmecritic avatar robhobbes avatar rubengm avatar ryanhope avatar samuelteixeiras avatar sophisticasean avatar spezifisch avatar stolencatkarma avatar surceis avatar tejado avatar uniq10 avatar wcastello avatar yumere avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pgoapi's Issues

Pokemon Bot

I have logged in using your tool. How do I load the Pokestop bot?

Python-Problem

Hi, i get the following Error-Message - How can i fix it?

$ sudo python main.py -u [email protected] -p xxxxxxxxx -l Brunswick
[!] Your given location: Brunswick, Germany
[!] lat/long/alt: 52.2688736 10.5267696 0.0
[!] login for: [email protected]
Traceback (most recent call last):
  File "main.py", line 194, in <module>
    main()
  File "main.py", line 167, in main
    print('[+] RPC Session Token: {} ...'.format(access_token[:25]))
TypeError: 'bool' object has no attribute '__getitem__'

Python-Version: 2.7.10

Use of protoc vs parseFromString

Just a brief question on your decision with decoding raw protobufs:

Why did you opt to use the protoc command line tool in a subprocess instead of sticking to the generated functions, like in the old demo? I don't really know enough about protobufs or the tooling you used to understand the pros and cons by looking over the code. I presume there's a good reason since you are requiring an additional, external dependency.

Incorrect results and data missing

Hi, I'm currently developing a webApi version of this and since this morning (07/18/2016, it worked well before), i'm having trouble with the data returned by the script.

In facts, all the data returned are false, and some are missing. This is a sample of what I get by using my account:

[!] Your given location: Washington Square, Greenwich, NY 12834, USA  

[!] lat/long/alt: 43.0909305 -73.4989367 0.0  

[!] PTC login for: chaipokoi  

[+] RPC Session Token: TGT-974551-GCMx5k1RW0sqEW ...  

[+] Received API endpoint: https://pgorelease.nianticlabs.com/plfe/27/rpc  

[+] Login successful  

[+] Username:   

[+] You are playing Pokemon Go since: 1970-01-01 01:00:00  

[+] Poke Storage: 0  

[+] Item Storage: 0

As you can see, the field Username is blank, I wasnt born in 1970 and the field POKECOIN and STARDUST are missing.
Do you think it's a server problem ? A issue caused by my account or the script ?

password?

silly question: username is my pokemon go username, but what is password? my google password?

google protobuf error

hey

looking forward to trying this out and contributing. Can I ask which version of python and google protobuf you're using to develop with? I tried to run this on Python 2.7.6 with protobuf 2.5.0 and received errors regarding symbol_database being imported

Thanks

Evolving Pokemon

On the main page, you mention the RPC request is there for evolving pokemon, could you please show me how to use it?

Where do you get the username/password?

/Library/Python/2.7/site-packages/requests-2.9.1-py2.7.egg/requests/packages/urllib3/util/ssl_.py:315: SNIMissingWarning: An HTTPS request has been made, but the SNI (Subject Name Indication) extension to TLS is not available on this platform. This may cause the server to present an incorrect TLS certificate, which can cause validation failures. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#snimissingwarning.
SNIMissingWarning
/Library/Python/2.7/site-packages/requests-2.9.1-py2.7.egg/requests/packages/urllib3/util/ssl_.py:120: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.
InsecurePlatformWarning
Traceback (most recent call last):
File "main.py", line 125, in
main()
File "main.py", line 107, in main
access_token= login_pokemon('yourusername','yourpass')
File "main.py", line 95, in login_pokemon
ticket=re.sub('.*ticket=','',r1.history[0].headers['Location'])
IndexError: list index out of range

Add method for getting the rewards from gyms

Hey!

In the game I can get rewards by owning gyms. Usually the servers go down during evening when I would want to do this and It would be awesome to have a script which I could use for this instead.

Have you found out the method for cashing the rewards (coins+dust) from currently owned gyms?

Also how can I discover the current cooldown time for next rewards?

No more JSON output ?

I tried a previous version earlier today (on another desktop) and the output was in nice JSON with
format(json.dumps(response_dict, indent=2)))

I tried changing changing back from pprint.PrettyPrinter to json.dumps but It no longer works.
but now I get errors :
TypeError: b'/yVMMtOIff1pLzN/MxHIDBcVjLdCIm6n01fIwhSiEqoinLB+jc6fY5c2MSud5ysV7hBfrZqUbgATBOgE3K8zBA==' is not JSON serializable

Any idea why ?

get_map_objects not returning WildPokemon cells

if i run the old version of code i get

Fort { FortId: "87ab0ef6273d4dc98fa019a18492dafa.16" LastModifiedMs: 1468687487635 Latitude: Longitude: - Enabled: true FortType: 1 } WildPokemon { LastModifiedMs: 1468977147090 Latitude: Longitude: - SpawnPointId: "88388da5211" pokemon { PokemonId: 96 } TimeTillHiddenMs: 482034 }

the new

"forts": [ { "last_modified_timestamp_ms": 1468687487635, "enabled": true, "longitude": -, "latitude": , "type": 1, "id": "87ab0ef6273d4dc98fa019a18492dafa.16" }

I dont see any WildPokemon in the return. Am i looking in the wrong spot and its not supposed to return willdpokemon?

UTF8 decoding error

python2 main.py --debug -u poke-trainer -p super-secret --location "New York, Washington Square"
[!] DEBUG mode on
[!] Your given location: Washington Square, Greenwich, NY 12834, USA
[!] lat/long/alt: 43.0909305 -73.4989367 0.0
[!] login for: poke-trainer
[+] RPC Session Token: JibberishHere ...
[+] Received API endpoint: https://pgorelease.nianticlabs.com/plfe/666/rpc
'utf8' codec can't decode bytes in position 1-3: 'utf8' codec can't decode bytes in position 1-3: invalid continuation byte in field: ResponseEnvelop.Profile.unknown11
[-] Oops...

Save google master token

Would be nice to save the master token (only require password the first time, can forget since my account will require app specific password here).

Ideally save a round trip and save the oauth token as well until it expires.

Spoof Pokemon ID

Hello, is it possible to change the Pokemon ID in the server response in order to spawn e different pokemon and capture it?

NICKNAME_POKEMON

I'm trying to set a nickname to one of my pokemon but it's not working, I'm using:

api.nickname_pokemon(pokemon_id = "XXX", nickname = "test")

This is the console output:

2016-07-21 00:15:22,248 [    pgoapi] [ INFO] Execution of RPC
2016-07-21 00:15:22,248 [   rpc_api] [WARNING] Argument pokemon_id with value REDACTED unknown inside NicknamePokemonMessage (Exception: 'long' object has no attribute 'append')
2016-07-21 00:15:27,761 [    pgoapi] [ INFO] Cleanup of request!
Response dictionary: 
{   'auth_ticket': {   'end': 'REDACTED',
                       'expire_timestamp_ms': 1469054727504L,
                       'start': 'REDACTED'},
    'request_id': REDACTED,
    'responses': {   'NICKNAME_POKEMON': {   'result': 3}},
    'status_code': 1}

Any idea what I'm doing wrong ?

get_api_endpoint fails: Unexpected end-group tag

Output:
[!] Your given location: ---
[!] lat/long/alt: ---, --- 0.0
[!] login for: ----
[+] RPC Session Token: TGT-6730523-TUZOag4OqN1wU ...
Unexpected end-group tag.
[-] RPC server offline

Seems that get_api_endpoint() is failing, potentially related to an updated constant in the newest release?

Occasional KeyError when logging in

First of all thanks for the great API!
I occasionally get the following stack trace when trying to login. I can't exactly reproduce it. It just happens from time to time.

File "/home/mglauser/PycharmProjects/pokemap/pokeworld/views.py", line 31, in asdf
if not api.login(config['auth_service'], config['username'], config['password']):
File "/home/mglauser/PycharmProjects/pokemap/venv/local/lib/python2.7/site-packages/pgoapi/pgoapi.py", line 157, in login
response = self.call()
File "/home/mglauser/PycharmProjects/pokemap/venv/local/lib/python2.7/site-packages/pgoapi/pgoapi.py", line 80, in call
response = request.request(api_endpoint, self._req_method_list, player_position)
File "/home/mglauser/PycharmProjects/pokemap/venv/local/lib/python2.7/site-packages/pgoapi/rpc_api.py", line 93, in request
response_dict = self._parse_main_response(response, subrequests)
File "/home/mglauser/PycharmProjects/pokemap/venv/local/lib/python2.7/site-packages/pgoapi/rpc_api.py", line 201, in _parse_main_response
response_proto_dict = self._parse_sub_responses(response_proto, subrequests, response_proto_dict)
File "/home/mglauser/PycharmProjects/pokemap/venv/local/lib/python2.7/site-packages/pgoapi/rpc_api.py", line 208, in _parse_sub_responses
del response_proto_dict['returns']
KeyError: 'returns'

Recycle_inventory_item api function

recycle_inventory_item is defined in RpcEnum, but don't have a Request\Response realisation in RpcSub. Could something be done with that and who actually made other Requests realisation?

Python3 - ImportError: cannot import name 'protos'

Python 3.5.1 (default, Mar  4 2016, 01:39:17)
[GCC 4.9.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import pgoapi
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.5/site-packages/pgoapi/__init__.py", line 19, in <module>
    from pgoapi.pgoapi import PGoApi
  File "/usr/local/lib/python3.5/site-packages/pgoapi/pgoapi.py", line 33, in <module>
    from pgoapi.rpc_api import RpcApi
  File "/usr/local/lib/python3.5/site-packages/pgoapi/rpc_api.py", line 39, in <module>
    from . import protos
ImportError: cannot import name 'protos'

I'm on Debian stretch running Python 3.5.1 with protobuf3.0.0b4. I'm not sure if there's something I'm missing or if I have installed the wrong dependency. Thanks!

KeyError: 'profile' when running

Traceback (most recent call last):
  File "pokecli.py", line 120, in <module>
    main()
  File "pokecli.py", line 114, in main
    bot.start()
  File "/home/xxx/PokemonGo-Bot/bot.py", line 24, in start
    self._setup_api()
  File "/home/xxx/PokemonGo-Bot/bot.py", line 155, in _setup_api
    player = response_dict['responses']['GET_PLAYER']['profile']
KeyError: 'profile'

I'm having this error whenever i'm trying to run the client , every requirement is installed and i'm pretty sure my account's data are correct .
does anyone know where the problem is coming from?

Loggin Problem?

Is anyone having a problem with the login? Sometimes I login but another times I get

File "/usr/lib/python2.7/dist-packages/google/protobuf/internal/python_message.py", line 844, in MergeFromString
raise message_mod.DecodeError('Unexpected end-group tag.')
google.protobuf.message.DecodeError: Unexpected end-group tag.

Get other player's profile

I've built a simple Trainer Card web app here: https://pokemon-go-trainer-card.herokuapp.com/

Sauce here: https://github.com/Gimpneek/pokemon-go-trainer-card

I'm getting loads of negative feedback about the need to login to generate the card (people worrying about the app stealing credenitals etc).

Is it possible with the API to grab a player without logging in as that player?
So for instance if I were login in as Player A would I be able to then get details for Player B?

I know in the app we're able to see the name of players who have placed lures on pokestops and on the gym screen we can see player avatars for those who have pokemon at the gym.

RpcEnum.proto

Hi , you talk about the RpcEnum.proto that have all api calls. I couldn't find this file.
Maybe create a option to describe the methods , with arg options like a man page in the linux.
If you show me a example in the api I can start this .

Suggestion - Slack Channel

Hello everyone,

Looking to get some thoughts on setting up a slack channel for this API. I think at this early point in the project it could be of good use to collaborate and share our findings.

What do you think?

UTF8 decoding error

python2 main.py --debug -u poke-trainer -p super-secret --location "New York, Washington Square"
[!] DEBUG mode on
[!] Your given location: Washington Square, Greenwich, NY 12834, USA
[!] lat/long/alt: 43.0909305 -73.4989367 0.0
[!] login for: poke-trainer
[+] RPC Session Token: JibberishHere ...
[+] Received API endpoint: https://pgorelease.nianticlabs.com/plfe/666/rpc
'utf8' codec can't decode bytes in position 1-3: 'utf8' codec can't decode bytes in position 1-3: invalid continuation byte in field: ResponseEnvelop.Profile.unknown11
[-] Oops...

Printing problem

bomb = api.catch_pokemon(...)
print ('\n\r{}'.format(pprint.PrettyPrinter(indent=1).pformat(bomb)))

results:
<pgoapi.pgoapi.PGoApi instance at 0x02D41148>

expected something like
"responses": { "CATCH_POKEMON": { status: CATCH_SUCCESS } }

Catch Response: 
status: CATCH_FAILED

What i am missing to decode the results of the method?

.proto file for Protobuf

This might help:

Module: mscorlib.dll
Module: System.dll
Module: Mono.Security.dll
Module: Mono.Data.Tds.dll
Module: System.Core.dll
Module: Google.Protobuf.dll
 message MessageAdapter {
 }
 message FileDescriptorSet {
 }
 message FileDescriptorProto {
 }
 message DescriptorProto {
 }
 message ExtensionRange {
 }
 message ReservedRange {
 }
 message FieldDescriptorProto {
 }
 message OneofDescriptorProto {
 }
 message EnumDescriptorProto {
 }
 message EnumValueDescriptorProto {
 }
 message ServiceDescriptorProto {
 }
 message MethodDescriptorProto {
 }
 message FileOptions {
 }
 message MessageOptions {
 }
 message FieldOptions {
 }
 message EnumOptions {
 }
 message EnumValueOptions {
 }
 message ServiceOptions {
 }
 message MethodOptions {
 }
 message UninterpretedOption {
 }
 message NamePart {
 }
 message SourceCodeInfo {
 }
 message Location {
 }
 message Any {
 }
 message Duration {
 }
 message FieldMask {
 }
 message Struct {
 }
 message Value {
 }
 message ListValue {
 }
 message Timestamp {
 }
Module: Niantic.Promenade.dll
 message GoogleAuthEventParams {
 }
 message ChannelAuthEventParams {
 }
 message LocationUpdateEventParams {
 }
 message RpcResponseEventParams {
 }
Module: Niantic.Promenade.Auth.dll
 message GoogleToken {
 }
Module: OSCsharp.dll
Module: System.Transactions.dll
Module: System.Xml.dll
Module: System.Data.dll
Module: Newtonsoft.Json.dll
Module: TUIOsharp.dll
Module: UnityEngine.dll
Module: UnityEngine.UI.dll
Module: Assembly-CSharp-firstpass.dll
Module: Assembly-CSharp.dll
 message AssetDigestRequestProto {
    ENUM.Holoholo.Rpc.Platform Platform = 1;
    string DeviceManufacturer = 2;
    string DeviceModel = 3;
    string Locale = 4;
    uint32 AppVersion = 5;
 }
 message AssetDigestEntryProto {
    string AssetId = 1;
    string BundleName = 2;
    int64 Version = 3;
    uint32 Checksum = 4;
    int32 Size = 5;
    Google.Protobuf.ByteString Key = 6;
 }
 message AssetDigestOutProto {
    //unknown Digest = 1;
    uint64 Timestamp = 2;
 }
 message DownloadUrlRequestProto {
    //unknown AssetId = 1;
 }
 message DownloadUrlEntryProto {
    string AssetId = 1;
    string Url = 2;
    int32 Size = 3;
    uint32 Checksum = 4;
 }
 message DownloadUrlOutProto {
    //unknown DownloadUrls = 1;
 }
 message CollectDailyBonusProto {
 }
 message CollectDailyBonusOutProto {
    ENUM.Holoholo.Rpc.Result.Types.CollectDailyBonusOutProto.Result Result = 1;
 }
 message CollectDailyDefenderBonusProto {
 }
 message CollectDailyDefenderBonusOutProto {
    ENUM.Holoholo.Rpc.Result.Types.CollectDailyDefenderBonusOutProto.Result Result = 1;
    //unknown CurrencyType = 2;
    //unknown CurrencyAwarded = 3;
    int32 NumDefenders = 4;
 }
 message EchoProto {
 }
 message EchoOutProto {
    string Context = 1;
 }
 message GetHatchedEggsProto {
 }
 message GetHatchedEggsOutProto {
    bool Success = 1;
    //unknown PokemonId = 2;
    //unknown ExpAwarded = 3;
    //unknown CandyAwarded = 4;
    //unknown StardustAwarded = 5;
 }
 message EncounterProto {
    uint64 EncounterId = 1;
    string SpawnpointId = 2;
    double PlayerLatDegrees = 3;
    double PlayerLngDegrees = 4;
 }
 message EncounterOutProto {
    Holoholo.Rpc.WildPokemonProto Pokemon = 1;
    ENUM.Holoholo.Rpc.Background.Types.EncounterOutProto.Background Background = 2;
    ENUM.Holoholo.Rpc.Status.Types.EncounterOutProto.Status Status = 3;
    Holoholo.Rpc.CaptureProbabilityProto CaptureProbability = 4;
 }
 message CatchPokemonProto {
    uint64 EncounterId = 1;
    int32 Pokeball = 2;
    double NormalizedReticleSize = 3;
    string SpawnPointGuid = 4;
    bool HitPokemon = 5;
    double SpinModifier = 6;
    double NormalizedHitPosition = 7;
 }
 message CatchPokemonOutProto {
    ENUM.Holoholo.Rpc.Status.Types.CatchPokemonOutProto.Status Status = 1;
    double MissPercent = 2;
    uint64 CapturedPokemonId = 3;
    Holoholo.Rpc.CaptureScoreProto Scores = 4;
 }
 message UseItemCaptureProto {
    ENUM.Holoholo.Rpc.Item Item = 1;
    uint64 EncounterId = 2;
    string SpawnPointGuid = 3;
 }
 message UseItemCaptureOutProto {
    bool Success = 1;
    double ItemCaptureMult = 2;
    double ItemFleeMult = 3;
    bool StopMovement = 4;
    bool StopAttack = 5;
    bool TargetMax = 6;
    bool TargetSlow = 7;
 }
 message EncounterTutorialCompleteProto {
    int32 PokedexId = 1;
 }
 message EncounterTutorialCompleteOutProto {
    ENUM.Holoholo.Rpc.Result.Types.EncounterTutorialCompleteOutProto.Result Result = 1;
    Holoholo.Rpc.PokemonProto Pokemon = 2;
    Holoholo.Rpc.CaptureScoreProto Scores = 3;
 }
 message CaptureProbabilityProto {
    //unknown PokeballType = 1;
    //unknown CaptureProbability = 2;
    double ReticleDifficultyScale = 12;
 }
 message CaptureScoreProto {
    //unknown ActivityType = 1;
    //unknown Exp = 2;
    //unknown Candy = 3;
    //unknown Stardust = 4;
 }
 message UseIncenseActionProto {
    ENUM.Holoholo.Rpc.Item IncenseType = 1;
 }
 message UseIncenseActionOutProto {
    ENUM.Holoholo.Rpc.Result.Types.UseIncenseActionOutProto.Result Result = 1;
    Holoholo.Rpc.AppliedItemProto AppliedIncense = 2;
 }
 message GetIncensePokemonProto {
    double PlayerLatDegrees = 1;
    double PlayerLngDegrees = 2;
 }
 message GetIncensePokemonOutProto {
    ENUM.Holoholo.Rpc.Result.Types.GetIncensePokemonOutProto.Result Result = 1;
    int32 PokemonTypeId = 2;
    double Lat = 3;
    double Lng = 4;
    string EncounterLocation = 5;
    uint64 EncounterId = 6;
    int64 DisappearTimeMs = 7;
 }
 message IncenseEncounterProto {
    int64 EncounterId = 1;
    string EncounterLocation = 2;
 }
 message IncenseEncounterOutProto {
    ENUM.Holoholo.Rpc.Result.Types.IncenseEncounterOutProto.Result Result = 1;
    Holoholo.Rpc.PokemonProto Pokemon = 2;
    Holoholo.Rpc.CaptureProbabilityProto CaptureProbability = 3;
 }
 message DiskEncounterProto {
    int64 EncounterId = 1;
    string FortId = 2;
    double PlayerLatDegrees = 3;
    double PlayerLngDegrees = 4;
 }
 message DiskEncounterOutProto {
    ENUM.Holoholo.Rpc.Result.Types.DiskEncounterOutProto.Result Result = 1;
    Holoholo.Rpc.PokemonProto Pokemon = 2;
    Holoholo.Rpc.CaptureProbabilityProto CaptureProbability = 3;
 }
 message EvolvePokemonProto {
    uint64 PokemonId = 1;
 }
 message EvolvePokemonOutProto {
    ENUM.Holoholo.Rpc.Result.Types.EvolvePokemonOutProto.Result Result = 1;
    Holoholo.Rpc.PokemonProto EvolvedPokemon = 2;
    int32 ExpAwarded = 3;
    int32 CandyAwarded = 4;
 }
 message AwardItemProto {
    ENUM.Holoholo.Rpc.Item Item = 1;
    int32 ItemCount = 2;
 }
 message FortSearchProto {
    string Id = 1;
    double PlayerLatDegrees = 2;
    double PlayerLngDegrees = 3;
    double FortLatDegrees = 4;
    double FortLngDegrees = 5;
 }
 message FortSearchOutProto {
    ENUM.Holoholo.Rpc.Result.Types.FortSearchOutProto.Result Result = 1;
    //unknown Items = 2;
    int32 GemsAwarded = 3;
    Holoholo.Rpc.PokemonProto EggPokemon = 4;
    int32 XpAwarded = 5;
    int64 CooldownComplete = 6;
    int32 ChainHackSequenceNumber = 7;
 }
 message FortDetailsProto {
    string Id = 1;
    double Latitude = 2;
    double Longitude = 3;
 }
 message FortDetailsOutProto {
    string Id = 1;
    int32 Team = 2;
    //unknown Pokemon = 3;
    string Name = 4;
    //unknown ImageUrl = 5;
    int32 Fp = 6;
    int32 Stamina = 7;
    int32 MaxStamina = 8;
    ENUM.Holoholo.Rpc.FortType FortType = 9;
    double Latitude = 10;
    double Longitude = 11;
    string Description = 12;
    //unknown Modifier = 13;
 }
 message ClientFortModifierProto {
    ENUM.Holoholo.Rpc.Item ModifierType = 1;
    int64 ExpirationTimeMs = 2;
    string DeployingPlayerCodename = 3;
 }
 message FortDeployProto {
    string FortId = 1;
    uint64 PokemonId = 2;
    double PlayerLatDegrees = 3;
    double PlayerLngDegrees = 4;
 }
 message FortDeployOutProto {
    ENUM.Holoholo.Rpc.Result.Types.FortDeployOutProto.Result Result = 1;
    Holoholo.Rpc.FortDetailsOutProto FortDetailsOutProto = 2;
    Holoholo.Rpc.PokemonProto EggPokemon = 3;
    Holoholo.Rpc.GymStateProto GymStateProto = 4;
 }
 message FortRecallProto {
    string FortId = 1;
    uint64 PokemonId = 2;
    double PlayerLatDegrees = 3;
    double PlayerLngDegrees = 4;
 }
 message FortRecallOutProto {
    ENUM.Holoholo.Rpc.Result.Types.FortRecallOutProto.Result Result = 1;
    Holoholo.Rpc.FortDetailsOutProto FortDetailsOutProto = 2;
 }
 message AddFortModifierProto {
    ENUM.Holoholo.Rpc.Item ModifierType = 1;
    string FortId = 2;
    double PlayerLatDegrees = 3;
    double PlayerLngDegrees = 4;
 }
 message AddFortModifierOutProto {
    ENUM.Holoholo.Rpc.Result.Types.AddFortModifierOutProto.Result Result = 1;
    Holoholo.Rpc.FortDetailsOutProto FortDetailsOutProto = 2;
 }
 message PokemonCameraAttributesProto {
    float DiskRadiusM = 1;
    float CylRadiusM = 2;
    float CylHeightM = 3;
    float CylGroundM = 4;
    float ShoulderModeScale = 5;
 }
 message PokemonEncounterAttributesProto {
    float BaseCaptureRate = 1;
    float BaseFleeRate = 2;
    float CollisionRadiusM = 3;
    float CollisionHeightM = 4;
    float CollisionHeadRadiusM = 5;
    ENUM.Holoholo.Rpc.HoloPokemonMovementType MovementType = 6;
    float MovementTimerS = 7;
    float JumpTimeS = 8;
    float AttackTimerS = 9;
 }
 message PokemonStatsAttributesProto {
    int32 BaseStamina = 1;
    int32 BaseAttack = 2;
    int32 BaseDefense = 3;
    int32 DodgeEnergyDelta = 8;
 }
 message PokemonSettingsProto {
    ENUM.Holoholo.Rpc.HoloPokemonId UniqueId = 1;
    float ModelScale = 3;
    ENUM.Holoholo.Rpc.HoloPokemonType Type1 = 4;
    ENUM.Holoholo.Rpc.HoloPokemonType Type2 = 5;
    Holoholo.Rpc.PokemonCameraAttributesProto Camera = 6;
    Holoholo.Rpc.PokemonEncounterAttributesProto Encounter = 7;
    Holoholo.Rpc.PokemonStatsAttributesProto Stats = 8;
    //unknown QuickMoves = 9;
    //unknown CinematicMoves = 10;
    //unknown AnimTime = 11;
    //unknown Evolution = 12;
    int32 EvolutionPips = 13;
    ENUM.Holoholo.Rpc.HoloPokemonClass PokemonClass = 14;
    float PokedexHeightM = 15;
    float PokedexWeightKg = 16;
    ENUM.Holoholo.Rpc.HoloPokemonId ParentId = 17;
    float HeightStdDev = 18;
    float WeightStdDev = 19;
    float KmDistanceToHatch = 20;
    ENUM.Holoholo.Rpc.HoloPokemonFamilyId FamilyId = 21;
    int32 CandyToEvolve = 22;
 }
 message PokeBallAttributesProto {
    ENUM.Holoholo.Rpc.HoloItemEffect ItemEffect = 1;
    float CaptureMulti = 2;
    float CaptureMultiEffect = 3;
    float ItemEffectMod = 4;
 }
 message PotionAttributesProto {
    float StaPercent = 1;
    int32 StaAmount = 2;
 }
 message ReviveAttributesProto {
    float StaPercent = 1;
 }
 message BattleAttributesProto {
    float StaPercent = 1;
    float AtkPercent = 2;
    float DefPercent = 3;
    float DurationS = 4;
 }
 message FoodAttributesProto {
    //unknown ItemEffect = 1;
    //unknown ItemEffectPercent = 2;
    float GrowthPercent = 3;
 }
 message InventoryUpgradeAttributesProto {
    int32 AdditionalStorage = 1;
    ENUM.Holoholo.Rpc.InventoryUpgradeType UpgradeType = 2;
 }
 message ExperienceBoostAttributesProto {
    float XpMultiplier = 1;
    int32 BoostDurationMs = 2;
 }
 message EggIncubatorAttributesProto {
    ENUM.Holoholo.Rpc.EggIncubatorType IncubatorType = 1;
    int32 Uses = 2;
    float DistanceMultiplier = 3;
 }
 message IncenseAttributesProto {
    int32 IncenseLifetimeSeconds = 1;
    //unknown PokemonType = 2;
    float PokemonIncenseTypeProbability = 3;
    int32 StandingTimeBetweenEncountersSec = 4;
    int32 MovingTimeBetweenEncounterSec = 5;
    int32 DistanceRequiredForShorterIntervalMeters = 6;
    int32 PokemonAttractedLengthSec = 7;
 }
 message FortModifierAttributesProto {
    int32 ModifierLifetimeSeconds = 1;
    int32 TroyDiskNumPokemonSpawned = 2;
 }
 message ItemSettingsProto {
    ENUM.Holoholo.Rpc.Item UniqueId = 1;
    ENUM.Holoholo.Rpc.HoloItemType ItemType = 2;
    ENUM.Holoholo.Rpc.HoloItemCategory Category = 3;
    float DropFreq = 4;
    int32 DropTrainerLevel = 5;
    Holoholo.Rpc.PokeBallAttributesProto Pokeball = 6;
    Holoholo.Rpc.PotionAttributesProto Potion = 7;
    Holoholo.Rpc.ReviveAttributesProto Revive = 8;
    Holoholo.Rpc.BattleAttributesProto Battle = 9;
    Holoholo.Rpc.FoodAttributesProto Food = 10;
    Holoholo.Rpc.InventoryUpgradeAttributesProto InventoryUpgrade = 11;
    Holoholo.Rpc.ExperienceBoostAttributesProto XpBoost = 12;
    Holoholo.Rpc.IncenseAttributesProto Incense = 13;
    Holoholo.Rpc.EggIncubatorAttributesProto EggIncubator = 14;
    Holoholo.Rpc.FortModifierAttributesProto FortModifier = 15;
 }
 message IapItemDisplayProto {
    string Sku = 1;
    ENUM.Holoholo.Rpc.HoloIapItemCategory Category = 2;
    int32 SortOrder = 3;
    //unknown Items = 4;
    //unknown Counts = 5;
 }
 message MoveSettingsProto {
    ENUM.Holoholo.Rpc.HoloPokemonMove UniqueId = 1;
    int32 AnimationId = 2;
    ENUM.Holoholo.Rpc.HoloPokemonType Type = 3;
    float Power = 4;
    float AccuracyChance = 5;
    float CriticalChance = 6;
    float HealScalar = 7;
    float StaminaLossScalar = 8;
    int32 TrainerLevelMin = 9;
    int32 TrainerLevelMax = 10;
    string VfxName = 11;
    int32 DurationMs = 12;
    int32 DamageWindowStartMs = 13;
    int32 DamageWindowEndMs = 14;
    int32 EnergyDelta = 15;
 }
 message MoveSequenceSettingsProto {
    //unknown Sequence = 1;
 }
 message TypeEffectiveSettingsProto {
    ENUM.Holoholo.Rpc.HoloPokemonType AttackType = 2;
    //unknown AttackScalar = 1;
 }
 message BadgeSettingsProto {
    ENUM.Holoholo.Rpc.HoloBadgeType BadgeType = 1;
    int32 BadgeRanks = 2;
    //unknown Targets = 3;
 }
 message CameraSettingsProto {
    string NextCamera = 1;
    //unknown Interpolation = 2;
    //unknown TargetType = 3;
    //unknown EaseInSpeed = 4;
    //unknown EaseOutSpeed = 5;
    //unknown DurationS = 6;
    //unknown WaitS = 7;
    //unknown TransitionS = 8;
    //unknown AngleDeg = 9;
    //unknown AngleOffsetDeg = 10;
    //unknown PitchDeg = 11;
    //unknown PitchOffsetDeg = 12;
    //unknown RollDeg = 13;
    //unknown DistanceM = 14;
    //unknown HeightPercent = 15;
    //unknown VertCtrRatio = 16;
 }
 message PlayerLevelSettingsProto {
    //unknown RankNum = 1;
    //unknown RequiredExp = 2;
    //unknown CpMultiplier = 3;
    int32 MaxEggPlayerLevel = 4;
    int32 MaxEncounterPlayerLevel = 5;
 }
 message GymLevelSettingsProto {
    //unknown RequiredExp = 1;
    //unknown LeaderSlots = 2;
    //unknown TrainerSlots = 3;
    //unknown SearchRollBonus = 4;
 }
 message GymBattleSettingsProto {
    float EnergyPerSec = 1;
    float DodgeEnergyCost = 2;
    float RetargetSeconds = 3;
    float EnemyAttackInterval = 4;
    float AttackServerInterval = 5;
    float RoundDurationSeconds = 6;
    float BonusTimePerAllySeconds = 7;
    int32 MaximumAttackersPerBattle = 8;
    float SameTypeAttackBonusMultiplier = 9;
    int32 MaximumEnergy = 10;
    float EnergyDeltaPerHealthLost = 11;
    int32 DodgeDurationMs = 12;
    int32 MinimumPlayerLevel = 13;
    int32 SwapDurationMs = 14;
 }
 message EncounterSettingsProto {
    float SpinBonusThreshold = 1;
    float ExcellentThrowThreshold = 2;
    float GreatThrowThreshold = 3;
    float NiceThrowThreshold = 4;
    int32 MilestoneThreshold = 5;
 }
 message IapSettingsProto {
    int32 DailyBonusCoins = 1;
    //unknown DailyDefenderBonusPerPokemon = 2;
    int32 DailyDefenderBonusMaxDefenders = 3;
    //unknown DailyDefenderBonusCurrency = 4;
    int64 MinTimeBetweenClaimsMs = 5;
    bool DailyBonusEnabled = 6;
    bool DailyDefenderBonusEnabled = 7;
 }
 message PokemonUpgradeSettingsProto {
    int32 UpgradesPerLevel = 1;
    int32 AllowedLevelsAbovePlayer = 2;
    //unknown CandyCost = 3;
    //unknown StardustCost = 4;
 }
 message EquippedBadgeSettingsProto {
    int64 EquipBadgeCooldownMs = 1;
    //unknown CatchProbabilityBonus = 2;
    //unknown FleeProbabilityBonus = 3;
 }
 message GameMasterClientTemplateProto {
    string TemplateId = 1;
    Holoholo.Rpc.PokemonSettingsProto Pokemon = 2;
    Holoholo.Rpc.ItemSettingsProto Item = 3;
    Holoholo.Rpc.MoveSettingsProto Move = 4;
    Holoholo.Rpc.MoveSequenceSettingsProto MoveSequence = 5;
    Holoholo.Rpc.TypeEffectiveSettingsProto TypeEffective = 8;
    Holoholo.Rpc.BadgeSettingsProto Badge = 10;
    Holoholo.Rpc.CameraSettingsProto Camera = 11;
    Holoholo.Rpc.PlayerLevelSettingsProto PlayerLevel = 12;
    Holoholo.Rpc.GymLevelSettingsProto GymLevel = 13;
    Holoholo.Rpc.GymBattleSettingsProto BattleSettings = 14;
    Holoholo.Rpc.EncounterSettingsProto EncounterSettings = 15;
    Holoholo.Rpc.IapItemDisplayProto IapItemDisplay = 16;
    Holoholo.Rpc.IapSettingsProto IapSettings = 17;
    Holoholo.Rpc.PokemonUpgradeSettingsProto PokemonUpgrades = 18;
    Holoholo.Rpc.EquippedBadgeSettingsProto EquippedBadges = 19;
 }
 message GetGameMasterClientTemplatesProto {
 }
 message GetGameMasterClientTemplatesOutProto {
    ENUM.Holoholo.Rpc.Result.Types.GetGameMasterClientTemplatesOutProto.Result Result = 1;
    //unknown Items = 2;
    uint64 Timestamp = 3;
 }
 message GetRemoteConfigVersionsProto {
    ENUM.Holoholo.Rpc.Platform Platform = 1;
    string DeviceManufacturer = 2;
    string DeviceModel = 3;
    string Locale = 4;
    uint32 AppVersion = 5;
 }
 message GetRemoteConfigVersionsOutProto {
    ENUM.Holoholo.Rpc.Result.Types.GetRemoteConfigVersionsOutProto.Result Result = 1;
    uint64 GameMasterTimestamp = 2;
    uint64 AssetDigestTimestamp = 3;
 }
 message ClientMapCellProto {
    uint64 S2CellId = 1;
    int64 AsOfTimeMs = 2;
    //unknown Fort = 3;
    //unknown SpawnPoint = 4;
    //unknown WildPokemon = 5;
    //unknown DeletedObject = 6;
    bool IsTruncatedList = 7;
    //unknown FortSummary = 8;
    //unknown DecimatedSpawnPoint = 9;
    //unknown CatchablePokemon = 10;
    //unknown NearbyPokemon = 11;
 }
 message GetMapObjectsProto {
    //unknown CellId = 1;
    //unknown SinceTimeMs = 2;
    double PlayerLat = 3;
    double PlayerLng = 4;
 }
 message GetMapObjectsOutProto {
    //unknown MapCell = 1;
    ENUM.Holoholo.Rpc.Status.Types.GetMapObjectsOutProto.Status Status = 2;
 }
 message NearbyPokemonProto {
    int32 PokedexNumber = 1;
    float DistanceMeters = 2;
    uint64 EncounterId = 3;
 }
 message GetGymDetailsProto {
    string GymId = 1;
    double PlayerLatDegrees = 2;
    double PlayerLngDegrees = 3;
    double GymLatDegrees = 4;
    double GymLngDegrees = 5;
 }
 message GetGymDetailsOutProto {
    Holoholo.Rpc.GymStateProto GymState = 1;
    string Name = 2;
    //unknown Url = 3;
    ENUM.Holoholo.Rpc.Result.Types.GetGymDetailsOutProto.Result Result = 4;
    string Description = 5;
 }
 message GymStateProto {
    Holoholo.Rpc.PokemonFortProto FortMapData = 1;
    //unknown GymMembership = 2;
 }
 message StartGymBattleProto {
    string GymId = 1;
    //unknown AttackingPokemonId = 2;
    uint64 DefendingPokemonId = 3;
    double PlayerLatDegrees = 4;
    double PlayerLngDegrees = 5;
 }
 message StartGymBattleOutProto {
    ENUM.Holoholo.Rpc.Result.Types.StartGymBattleOutProto.Result Result = 1;
    int64 BattleStartMs = 2;
    int64 BattleEndMs = 3;
    string BattleId = 4;
    Holoholo.Rpc.BattleParticipantProto Defender = 5;
    Holoholo.Rpc.BattleLogProto BattleLog = 6;
 }
 message AttackGymProto {
    string GymId = 1;
    string BattleId = 2;
    //unknown AttackerActions = 3;
    Holoholo.Rpc.BattleActionProto LastRetrievedAction = 4;
    double PlayerLatDegrees = 5;
    double PlayerLngDegrees = 6;
 }
 message BattleActionProto {
    ENUM.Holoholo.Rpc.ActionType.Types.BattleActionProto.ActionType Type = 1;
    int64 ActionStartMs = 2;
    int32 DurationMs = 3;
    int32 EnergyDelta = 5;
    int32 AttackerIndex = 6;
    int32 TargetIndex = 7;
    uint64 ActivePokemonId = 8;
    Holoholo.Rpc.BattleParticipantProto JoinedPlayer = 9;
    Holoholo.Rpc.BattleResultsProto BattleResults = 10;
    int64 DamageWindowStartMs = 11;
    int64 DamageWindowEndMs = 12;
    Holoholo.Rpc.BattleParticipantProto QuitPlayer = 13;
    uint64 TargetPokemonId = 14;
 }
 message AttackGymOutProto {
    ENUM.Holoholo.Rpc.Result.Types.AttackGymOutProto.Result Result = 1;
    Holoholo.Rpc.BattleLogProto BattleLog = 2;
    string BattleId = 3;
    Holoholo.Rpc.PokemonInfo ActiveDefender = 4;
    Holoholo.Rpc.PokemonInfo ActiveAttacker = 5;
 }
 message GymMembershipProto {
    Holoholo.Rpc.PokemonProto Pokemon = 1;
    Holoholo.Rpc.PlayerPublicProfileProto TrainerPublicProfile = 2;
 }
 message BattleParticipantProto {
    Holoholo.Rpc.PokemonInfo ActivePokemon = 1;
    Holoholo.Rpc.PlayerPublicProfileProto TrainerPublicProfile = 2;
    //unknown ReservePokemon = 3;
    //unknown DefeatedPokemon = 4;
 }
 message PokemonInfo {
    Holoholo.Rpc.PokemonProto Pokemon = 1;
    int32 CurrentHealth = 2;
    int32 CurrentEnergy = 3;
 }
 message BattleResultsProto {
    Holoholo.Rpc.GymStateProto GymState = 1;
    //unknown Attackers = 2;
    //unknown PlayerXpAwarded = 3;
    int64 NextDefenderPokemonId = 4;
    int32 GymPointsDelta = 5;
 }
 message BattleLogProto {
    ENUM.Holoholo.Rpc.State.Types.BattleLogProto.State State = 1;
    ENUM.Holoholo.Rpc.BattleType.Types.BattleLogProto.BattleType BattleType = 2;
    int64 ServerMs = 3;
    //unknown BattleActions = 4;
    int64 BattleStartMs = 5;
    int64 BattleEndMs = 6;
 }
 message HoloInventoryKeyProto {
    uint64 PokemonId = 1;
    ENUM.Holoholo.Rpc.Item Item = 2;
    int32 PokedexEntryId = 3;
    bool PlayerStats = 4;
    bool PlayerCurrency = 5;
    bool PlayerCamera = 6;
    bool InventoryUpgrades = 7;
    bool AppliedItems = 8;
    bool EggIncubators = 9;
    int32 PokemonFamilyId = 10;
 }
 message HoloInventoryItemProto {
    Holoholo.Rpc.PokemonProto Pokemon = 1;
    Holoholo.Rpc.ItemProto Item = 2;
    Holoholo.Rpc.PokedexEntryProto PokedexEntry = 3;
    Holoholo.Rpc.PlayerStatsProto PlayerStats = 4;
    Holoholo.Rpc.PlayerCurrencyProto PlayerCurrency = 5;
    Holoholo.Rpc.PlayerCameraProto PlayerCamera = 6;
    Holoholo.Rpc.InventoryUpgradesProto InventoryUpgrades = 7;
    Holoholo.Rpc.AppliedItemsProto AppliedItems = 8;
    Holoholo.Rpc.EggIncubatorsProto EggIncubators = 9;
    Holoholo.Rpc.PokemonFamilyProto PokemonFamily = 10;
 }
 message FortSponsor {
 }
 message FortRenderingType {
 }
 message PokemonProto {
    uint64 Id = 1;
    int32 PokemonId = 2;
    int32 Cp = 3;
    int32 Stamina = 4;
    int32 MaxStamina = 5;
    int32 Move1 = 6;
    int32 Move2 = 7;
    string DeployedFortId = 8;
    string OwnerName = 9;
    bool IsEgg = 10;
    double EggKmWalkedTarget = 11;
    double EggKmWalkedStart = 12;
    ENUM.Holoholo.Rpc.PokemonCreateContext Origin = 14;
    float HeightM = 15;
    float WeightKg = 16;
    int32 IndividualAttack = 17;
    int32 IndividualDefense = 18;
    int32 IndividualStamina = 19;
    float CpMultiplier = 20;
    ENUM.Holoholo.Rpc.Item Pokeball = 21;
    int64 CapturedS2CellId = 22;
    int32 BattlesAttacked = 23;
    int32 BattlesDefended = 24;
    string EggIncubatorId = 25;
    int64 CreationTimeMs = 26;
    int32 NumUpgrades = 27;
    float AdditionalCpMultiplier = 28;
    bool Favorite = 29;
    string Nickname = 30;
    bool FromFort = 31;
 }
 message ItemProto {
    ENUM.Holoholo.Rpc.Item Item = 1;
    int32 Count = 2;
    bool Unseen = 3;
 }
 message PokedexEntryProto {
    int32 PokedexEntryNumber = 1;
    int32 TimesEncountered = 2;
    int32 TimesCaptured = 3;
    int32 EvolutionStonePieces = 4;
    int32 EvolutionStones = 5;
 }
 message PlayerStatsProto {
    int32 Level = 1;
    int64 Experience = 2;
    int64 PrevLevelExp = 3;
    int64 NextLevelExp = 4;
    float KmWalked = 5;
    int32 NumPokemonEncountered = 6;
    int32 NumUniquePokedexEntries = 7;
    int32 NumPokemonCaptured = 8;
    int32 NumEvolutions = 9;
    int32 PokeStopVisits = 10;
    int32 NumberOfPokeballThrown = 11;
    int32 NumEggsHatched = 12;
    int32 BigMagikarpCaught = 13;
    int32 NumBattleAttackWon = 14;
    int32 NumBattleAttackTotal = 15;
    int32 NumBattleDefendedWon = 16;
    int32 NumBattleTrainingWon = 17;
    int32 NumBattleTrainingTotal = 18;
    int32 PrestigeRaisedTotal = 19;
    int32 PrestigeDroppedTotal = 20;
    int32 NumPokemonDeployed = 21;
    //unknown NumPokemonCaughtByType = 22;
    int32 SmallRattataCaught = 23;
 }
 message PlayerCurrencyProto {
    int32 Gems = 1;
 }
 message PlayerCameraProto {
    bool DefaultCamera = 1;
 }
 message InventoryUpgradesProto {
    //unknown InventoryUpgrade = 1;
 }
 message InventoryUpgradeProto {
    ENUM.Holoholo.Rpc.Item Item = 1;
    ENUM.Holoholo.Rpc.InventoryUpgradeType UpgradeType = 2;
    int32 AdditionalStorage = 3;
 }
 message EggIncubatorsProto {
    //unknown EggIncubator = 1;
 }
 message EggIncubatorProto {
    string ItemId = 1;
    ENUM.Holoholo.Rpc.Item Item = 2;
    ENUM.Holoholo.Rpc.EggIncubatorType IncubatorType = 3;
    int32 UsesRemaining = 4;
    int64 PokemonId = 5;
    double StartKmWalked = 6;
    double TargetKmWalked = 7;
 }
 message AppliedItemsProto {
    //unknown Item = 4;
 }
 message AppliedItemProto {
    ENUM.Holoholo.Rpc.Item Item = 1;
    ENUM.Holoholo.Rpc.HoloItemType ItemType = 2;
    int64 ExpirationMs = 3;
    int64 AppliedMs = 4;
 }
 message PokemonFamilyProto {
    ENUM.Holoholo.Rpc.HoloPokemonFamilyId FamilyId = 1;
    int32 Candy = 2;
 }
 message PlayerPublicProfileProto {
    string Name = 1;
    int32 Level = 2;
    Holoholo.Rpc.PlayerAvatarProto Avatar = 3;
 }
 message PlayerAvatarProto {
    int32 Avatar = 8;
    int32 Skin = 2;
    int32 Hair = 3;
    int32 Shirt = 4;
    int32 Pants = 5;
    int32 Hat = 6;
    int32 Shoes = 7;
    int32 Eyes = 9;
    int32 Backpack = 10;
 }
 message ActionLogEntry {
    int64 TimestampMs = 1;
    bool Sfida = 2;
    Holoholo.Rpc.CatchPokemonLogEntry CatchPokemon = 3;
    Holoholo.Rpc.FortSearchLogEntry FortSearch = 4;
 }
 message CatchPokemonLogEntry {
    ENUM.Holoholo.Rpc.Result.Types.CatchPokemonLogEntry.Result Result = 1;
    int32 PokedexNumber = 2;
    int32 CombatPoints = 3;
    uint64 PokemonId = 4;
 }
 message FortSearchLogEntry {
    ENUM.Holoholo.Rpc.Result.Types.FortSearchLogEntry.Result Result = 1;
    string FortId = 2;
    //unknown Items = 3;
    int32 Eggs = 4;
 }
 message InventoryProto {
    //unknown InventoryItem = 1;
 }
 message InventoryItemProto {
    int64 ModifiedTimestamp = 1;
    Google.Protobuf.ByteString DeletedItemKey = 2;
    Google.Protobuf.ByteString Item = 3;
 }
 message InventoryDeltaProto {
    int64 OriginalTimestamp = 1;
    int64 NewTimestamp = 2;
    //unknown InventoryItem = 3;
 }
 message PlayerBadgeProto {
    ENUM.Holoholo.Rpc.HoloBadgeType BadgeType = 1;
    int32 Rank = 2;
    int32 StartValue = 3;
    int32 EndValue = 4;
    double CurrentValue = 5;
 }
 message PlayerProfileProto {
    string PlayerName = 1;
 }
 message PlayerProfileOutProto {
    ENUM.Holoholo.Rpc.Result.Types.PlayerProfileOutProto.Result Result = 1;
    int64 StartTime = 2;
    //unknown Badges = 3;
 }
 message LevelUpRewardsProto {
    int32 Level = 1;
 }
 message LevelUpRewardsOutProto {
    ENUM.Holoholo.Rpc.Result.Types.LevelUpRewardsOutProto.Result Result = 1;
    //unknown Items = 2;
    //unknown ItemsUnlocked = 4;
 }
 message PokemonFortProto {
    string FortId = 1;
    int64 LastModifiedMs = 2;
    double Latitude = 3;
    double Longitude = 4;
    int32 Team = 5;
    int32 GuardPokemonId = 6;
    int32 GuardPokemonLevel = 7;
    bool Enabled = 8;
    ENUM.Holoholo.Rpc.FortType FortType = 9;
    int64 GymPoints = 10;
    bool IsInBattle = 11;
    //unknown ActiveFortModifier = 12;
    Holoholo.Rpc.MapPokemonProto ActivePokemon = 13;
    int64 CooldownCompleteMs = 14;
    ENUM.Holoholo.Rpc.Sponsor.Types.FortSponsor.Sponsor Sponsor = 15;
    ENUM.Holoholo.Rpc.RenderingType.Types.FortRenderingType.RenderingType RenderingType = 16;
 }
 message PokemonSummaryFortProto {
    string FortSummaryId = 1;
    int64 LastModifiedMs = 2;
    double Latitude = 3;
    double Longitude = 4;
 }
 message ClientSpawnPointProto {
    double Latitude = 2;
    double Longitude = 3;
 }
 message WildPokemonProto {
    uint64 EncounterId = 1;
    int64 LastModifiedMs = 2;
    double Latitude = 3;
    double Longitude = 4;
    string SpawnPointId = 5;
    Holoholo.Rpc.PokemonProto Pokemon = 7;
    int32 TimeTillHiddenMs = 11;
 }
 message MapPokemonProto {
    string SpawnpointId = 1;
    uint64 EncounterId = 2;
    int32 PokedexTypeId = 3;
    int64 ExpirationTimeMs = 4;
    double Latitude = 5;
    double Longitude = 6;
 }
 message ClientPlayerProto {
    int64 CreationTimeMs = 1;
    string Name = 2;
    int32 Team = 5;
    //unknown TutorialComplete = 7;
    Holoholo.Rpc.PlayerAvatarProto PlayerAvatarProto = 8;
    int32 MaxPokemonStorage = 9;
    int32 MaxItemStorage = 10;
    Holoholo.Rpc.DailyBonusProto DailyBonusProto = 11;
    Holoholo.Rpc.EquippedBadgeProto EquippedBadgeProto = 12;
    Holoholo.Rpc.ContactSettingsProto ContactSettingsProto = 13;
    //unknown CurrencyBalance = 14;
 }
 message CurrencyQuantityProto {
    string CurrencyType = 1;
    int32 Quantity = 2;
 }
 message ContactSettingsProto {
    bool SendMarketingEmails = 1;
    bool SendPushNotifications = 2;
 }
 message DailyBonusProto {
    int64 NextCollectTimestampMs = 1;
    int64 NextDefenderBonusCollectTimestampMs = 2;
 }
 message EquippedBadgeProto {
    ENUM.Holoholo.Rpc.HoloBadgeType EquippedBadge = 1;
    int32 Level = 2;
    int64 NextEquipChangeAllowedTimestampMs = 3;
 }
 message GetPlayerProto {
 }
 message GetPlayerOutProto {
    bool Success = 1;
    Holoholo.Rpc.ClientPlayerProto Player = 2;
 }
 message PlayerUpdateProto {
    double Lat = 1;
    double Lng = 2;
 }
 message PlayerUpdateOutProto {
    //unknown WildPokemon = 1;
    //unknown Fort = 2;
    int32 FortsNearby = 3;
 }
 message GetInventoryProto {
    int64 TimestampMillis = 1;
    //unknown ItemBeenSeen = 2;
 }
 message GetInventoryOutProto {
    bool Success = 1;
    Holoholo.Rpc.InventoryDeltaProto InventoryDelta = 2;
 }
 message DebugUpdateInventoryProto {
    //unknown Pokemon = 1;
    //unknown Item = 2;
 }
 message DebugUpdateInventoryOutProto {
    bool Success = 1;
 }
 message SetFavoritePokemonProto {
    int64 PokemonId = 1;
    bool IsFavorite = 2;
 }
 message SetFavoritePokemonOutProto {
    ENUM.Holoholo.Rpc.Result.Types.SetFavoritePokemonOutProto.Result Result = 1;
 }
 message ReleasePokemonProto {
    uint64 PokemonId = 1;
    //unknown PokemonIds = 2;
 }
 message ReleasePokemonOutProto {
    ENUM.Holoholo.Rpc.Status.Types.ReleasePokemonOutProto.Status Status = 1;
    int32 CandyAwarded = 2;
 }
 message NicknamePokemonProto {
    uint64 PokemonId = 1;
    string Nickname = 2;
 }
 message NicknamePokemonOutProto {
    ENUM.Holoholo.Rpc.Result.Types.NicknamePokemonOutProto.Result Result = 1;
 }
 message DebugDeletePlayerProto {
 }
 message DebugDeletePlayerOutProto {
    bool Success = 1;
 }
 message GetSuggestedCodenamesRequestProto {
 }
 message GetSuggestedCodenamesResponseProto {
    //unknown Codename = 1;
    bool Success = 2;
 }
 message CheckCodenameAvailableRequestProto {
    string Codename = 1;
 }
 message ClaimCodenameRequestProto {
    string Codename = 1;
 }
 message CodenameResultProto {
    string Codename = 1;
    string UserMessage = 2;
    bool IsAssignable = 3;
    ENUM.Holoholo.Rpc.Status.Types.CodenameResultProto.Status Status = 4;
 }
 message SetAvatarProto {
    Holoholo.Rpc.PlayerAvatarProto PlayerAvatarProto = 2;
 }
 message SetAvatarOutProto {
    ENUM.Holoholo.Rpc.Status.Types.SetAvatarOutProto.Status Status = 1;
    Holoholo.Rpc.ClientPlayerProto Player = 2;
 }
 message SetContactSettingsProto {
    Holoholo.Rpc.ContactSettingsProto ContactSettingsProto = 1;
 }
 message SetContactSettingsOutProto {
    ENUM.Holoholo.Rpc.Status.Types.SetContactSettingsOutProto.Status Status = 1;
    Holoholo.Rpc.ClientPlayerProto Player = 2;
 }
 message SetPlayerTeamProto {
    ENUM.Holoholo.Rpc.Team Team = 1;
 }
 message SetPlayerTeamOutProto {
    ENUM.Holoholo.Rpc.Status.Types.SetPlayerTeamOutProto.Status Status = 1;
    Holoholo.Rpc.ClientPlayerProto Player = 2;
 }
 message MarkTutorialCompleteProto {
    //unknown TutorialComplete = 1;
    bool SendMarketingEmails = 2;
    bool SendPushNotifications = 3;
 }
 message MarkTutorialCompleteOutProto {
    bool Success = 1;
    Holoholo.Rpc.ClientPlayerProto Player = 2;
 }
 message CheckAwardedBadgesProto {
 }
 message CheckAwardedBadgesOutProto {
    bool Success = 1;
    //unknown AwardedBadges = 2;
    //unknown AwardedBadgeLevels = 3;
 }
 message RecycleItemProto {
    ENUM.Holoholo.Rpc.Item Item = 1;
    int32 Count = 2;
 }
 message RecycleItemOutProto {
    ENUM.Holoholo.Rpc.Result.Types.RecycleItemOutProto.Result Result = 1;
    int32 NewCount = 2;
 }
 message PtcToken {
    string Token = 1;
    int32 Expiration = 2;
 }
 message EquipBadgeProto {
    ENUM.Holoholo.Rpc.HoloBadgeType Badge = 1;
 }
 message EquipBadgeOutProto {
    ENUM.Holoholo.Rpc.Result.Types.EquipBadgeOutProto.Result Result = 1;
    Holoholo.Rpc.EquippedBadgeProto Equipped = 2;
 }
 message GetActionLogRequest {
 }
 message GetActionLogResponse {
    ENUM.Holoholo.Rpc.Result.Types.GetActionLogResponse.Result Result = 1;
    //unknown Log = 2;
 }
 message GlobalSettingsProto {
    Holoholo.Rpc.FortSettingsProto FortSettings = 2;
    Holoholo.Rpc.MapSettingsProto MapSettings = 3;
    Holoholo.Rpc.LevelSettingsProto LevelSettings = 4;
    Holoholo.Rpc.InventorySettingsProto InventorySettings = 5;
    string MinimumClientVersion = 6;
 }
 message FortSettingsProto {
    double InteractionRangeMeters = 1;
    int32 MaxTotalDeployedPokemon = 2;
    int32 MaxPlayerDeployedPokemon = 3;
    double DeployStaminaMultiplier = 4;
    double DeployAttackMultiplier = 5;
    double FarInteractionRangeMeters = 6;
 }
 message MapSettingsProto {
    double PokemonVisibleRange = 1;
    double PokeNavRangeMeters = 2;
    double EncounterRangeMeters = 3;
    float GetMapObjectsMinRefreshSeconds = 4;
    float GetMapObjectsMaxRefreshSeconds = 5;
    float GetMapObjectsMinDistanceMeters = 6;
    string GoogleMapsApiKey = 7;
 }
 message LevelSettingsProto {
    double TrainerCpModifier = 2;
    double TrainerDifficultyModifier = 3;
 }
 message InventorySettingsProto {
    int32 MaxPokemon = 1;
    int32 MaxBagItems = 2;
    int32 BasePokemon = 3;
    int32 BaseBagItems = 4;
    int32 BaseEggs = 5;
 }
 message DownloadSettingsActionProto {
    string Sha1 = 1;
 }
 message DownloadSettingsResponseProto {
    string Error = 1;
    string Sha1 = 2;
    Google.Protobuf.ByteString Values = 3;
 }
 message RegisterSfidaRequest {
    string SfidaId = 1;
 }
 message RegisterSfidaResponse {
    Google.Protobuf.ByteString AccessToken = 1;
 }
 message TradingSearchProto {
    double Lat = 1;
    double Lng = 2;
 }
 message TradingSearchOutProto {
    ENUM.Holoholo.Rpc.Result.Types.TradingSearchOutProto.Result Result = 1;
    //unknown PlayerNames = 2;
 }
 message TradingOfferProto {
    string TradingPlayer = 1;
    uint64 PokemonId = 2;
 }
 message TradingOfferOutProto {
    ENUM.Holoholo.Rpc.Result.Types.TradingOfferOutProto.Result Result = 1;
    uint64 TradeId = 2;
 }
 message PollForTradeResponseProto {
    uint64 TradeId = 1;
    uint64 PokemonId = 2;
    bool RequestCancel = 3;
 }
 message PollForTradeResponseOutProto {
    ENUM.Holoholo.Rpc.Result.Types.PollForTradeResponseOutProto.Result Result = 1;
    Holoholo.Rpc.PokemonProto ReturnPokemon = 2;
 }
 message TradingResultProto {
    uint64 TradeId = 1;
    bool PlayerAccept = 2;
 }
 message TradingResultOutProto {
    ENUM.Holoholo.Rpc.Result.Types.TradingResultOutProto.Result Result = 1;
 }
 message UpgradePokemonProto {
    uint64 PokemonId = 1;
 }
 message UpgradePokemonOutProto {
    ENUM.Holoholo.Rpc.Result.Types.UpgradePokemonOutProto.Result Result = 1;
    Holoholo.Rpc.PokemonProto UpgradedPokemon = 2;
 }
 message UseItemPotionProto {
    ENUM.Holoholo.Rpc.Item Item = 1;
    uint64 PokemonId = 2;
 }
 message UseItemPotionOutProto {
    ENUM.Holoholo.Rpc.Result.Types.UseItemPotionOutProto.Result Result = 1;
    int32 Stamina = 2;
 }
 message UseItemReviveProto {
    ENUM.Holoholo.Rpc.Item Item = 1;
    uint64 PokemonId = 2;
 }
 message UseItemReviveOutProto {
    ENUM.Holoholo.Rpc.Result.Types.UseItemReviveOutProto.Result Result = 1;
    int32 Stamina = 2;
 }
 message UseItemGymProto {
    ENUM.Holoholo.Rpc.Item Item = 1;
    string GymId = 2;
    double PlayerLatDegrees = 3;
    double PlayerLngDegrees = 4;
 }
 message UseItemGymOutProto {
    ENUM.Holoholo.Rpc.Result.Types.UseItemGymOutProto.Result Result = 1;
    int64 UpdatedGp = 2;
 }
 message UseItemXpBoostProto {
    ENUM.Holoholo.Rpc.Item Item = 1;
 }
 message UseItemXpBoostOutProto {
    ENUM.Holoholo.Rpc.Result.Types.UseItemXpBoostOutProto.Result Result = 1;
    Holoholo.Rpc.AppliedItemsProto AppliedItems = 2;
 }
 message UseItemEggIncubatorProto {
    string ItemId = 1;
    int64 PokemondId = 2;
 }
 message UseItemEggIncubatorOutProto {
    ENUM.Holoholo.Rpc.Result.Types.UseItemEggIncubatorOutProto.Result Result = 1;
    Holoholo.Rpc.EggIncubatorProto EggIncubator = 2;
 }

Why Dict?

Am I the only one who finds writing code dealing with a dictionary way more non-intuitive than if you were returning the ResponseEnvelop directly?

Driving me nuts...

catch _pokemon give empty response

I run this code
api.catch_pokemon(encounter_id=poke['encounter_id'], pokeball=1, normalized_reticle_size=1.950, spawn_point_guid=poke['spawnpoint_id'], hit_pokemon=True, spin_modifier=1, NormalizedHitPosition=1)
When i print the response, i get
"responses": { "CATCH_POKEMON": {} }

No Module named google.protobuf

Hi, I am getting the following error. What am I doing wrong?

python main.py --debug -u tejado -p 1234 --location "New York, Washington Square"
Traceback (most recent call last):
  File "main.py", line 6, in <module>
    import pokemon_pb2
  File "C:\Users\Akash\Downloads\pokemongo-api-demo-master\pokemongo-api-demo-master\pokemon_pb2.py", line 6, in <module>
    from google.protobuf import descriptor as _descriptor
ImportError: No module named google.protobuf

JSONDecodeError, when the API is down

This error gets thrown, when the Servers are down:

if not self._auth_provider.login(username, password):
  File "/home/wegi/.virtualenvs/poke-cruncher/src/pgoapi/pgoapi/auth_ptc.py", line 56, in login
    jdata = json.loads(r.content.decode('utf-8'))
  File "/usr/lib64/python3.5/json/__init__.py", line 319, in loads
    return _default_decoder.decode(s)
  File "/usr/lib64/python3.5/json/decoder.py", line 339, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/lib64/python3.5/json/decoder.py", line 357, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 3 column 1 (char 2)

Maybe add a softfail or a specific exception which can be caught, when server responses are abnormal.

File "main.py", line 83 except Exception,e :

Hi, I had a problem. I cant run because it says :
File "main.py", line 83
except Exception,e :
SyntaxError: Invalid syntax
OR screen - http://prntscr.com/btxp2x

My Command - python main.py -a "google" -u "......gmail.com" -p "......." -l "Location..."

Line 83 :
return p_ret
except Exception,e:
if DEBUG:
print(e)
return None

SSL: CERTIFICATE_VERIFY_FAILED

Hey there!

I'm trying to run the main.py with:
python main.py -a "google" -u "[email protected]" -p "password" -l "Washington Square, New York"

But I get this as error:

Traceback (most recent call last):
  File "main.py", line 247, in <module>
    main()
  File "main.py", line 206, in main
    set_location(args.location)
  File "main.py", line 47, in set_location
    loc = geolocator.geocode(location_name)
  File "c:\Python27\lib\site-packages\geopy\geocoders\googlev3.py", line 217, in geocode
    self._call_geocoder(url, timeout=timeout), exactly_one
  File "c:\Python27\lib\site-packages\geopy\geocoders\base.py", line 171, in _call_geocoder
    raise GeocoderServiceError(message)
geopy.exc.GeocoderServiceError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590)>

I installed the requirements. and I'm using Python 2.7.11. How can I fix this?

Thanks :)!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.