Page 47 of 82 FirstFirst ... 37 45 46 47 48 49 57 ... LastLast
Results 461 to 470 of 814

Thread: Dota 2 Match History WebAPI

  1. #461
    Basic Member
    Join Date
    Oct 2011
    Posts
    75
    We should continue the discussion on how to make the API more reliable in a own thread. I created one here: http://dev.dota2.com/showthread.php?t=58174

    Maybe this topic should be closed so the board is actually used and not only this topic ever.

  2. #462
    Quote Originally Posted by googlexx View Post
    they need to just setup a really strict rate limit. Like 1 request every 5 seconds per key.

    Slow stats are better than no stats.
    Problem is, that you somehow need to get the whole matches including old ones. If you only need fresh data, no problem. 1 per five is okay. But only if we get some kind of dump of the current dbs state.

  3. #463
    Quote Originally Posted by unkie View Post
    Well a good approach would be to limit the age of games that can be fetched through the API and provide the rest of the matches through a DB dumb. Then provide one DB dump for each step in the interval.
    Actually, the current API for the test client is already limited to 500 results.

  4. #464
    Basic Member
    Join Date
    Nov 2011
    Posts
    149
    Quote Originally Posted by radonthetyrant View Post
    Actually, the current API for the test client is already limited to 500 results.
    Only per query - change the date or other filter options and you should find yourself getting the first 25 of a "new" 500

  5. #465
    Basic Member
    Join Date
    Mar 2012
    Posts
    51
    Quote Originally Posted by GeoStrik3r View Post
    do you mean hez not using official api? I dont think so
    game gets a match statistics through GameCoordinator CGCClient

    https://bitbucket.org/VoiDeD/steamre...est?at=default
    add multithread and glhf

    and you can get player level

    Code:
    message CMsgDOTAProfileRequest {
            optional uint32 account_id = 1;
            optional bool request_name = 2;
    }
    
    message CMsgDOTAProfileResponse {
            message PlayedHero {
                    optional uint32 hero_id = 1;
                    optional uint32 wins = 2;
            }
    
            message ShowcaseHero {
                    optional uint32 hero_id = 1;
                    repeated bytes object_data = 2;
            }
    
            message LeaguePass {
                    optional uint32 league_id = 1;
                    optional uint32 item_def = 2;
            }
    
            message EventTicket {
                    optional uint32 event_id = 1;
            }
    
            optional uint32 result = 1;
            optional .CSODOTAGameAccountClient game_account_client = 2;
            repeated .CMsgDOTAMatch latest_matches = 3;
            repeated .CMsgDOTAProfileResponse.PlayedHero heroes = 4;
            optional string player_name = 5;
            optional string team_name = 6;
            optional string team_tag = 7;
            optional uint64 team_logo = 8;
            optional .CMsgDOTAProfileResponse.ShowcaseHero showcase_hero = 9;
            repeated .CMsgDOTAProfileResponse.LeaguePass league_passes = 10;
            repeated .CMsgDOTAProfileResponse.EventTicket event_tickets = 11;
            optional uint32 team_id = 12;
    }
    
    
    message CSODOTAGameAccountClient {
            optional uint32 account_id = 1 [(key_field) = true];
            optional uint32 wins = 3;
            optional uint32 losses = 4;
            optional uint32 avatar = 7;
            optional uint32 xp = 12;
            optional uint32 level = 13;
            optional uint32 initial_skill = 14;
            optional uint32 leaver_count = 15;
            optional uint32 prevent_match_until_date = 18;
            optional uint32 prevent_text_chat_until_date = 20;
            optional uint32 prevent_voice_until_date = 21;
            optional uint32 last_abandoned_game_date = 22;
            optional uint32 leaver_penalty_count = 23;
            optional uint32 completed_game_streak = 24;
            optional uint32 teaching = 28;
            optional uint32 leadership = 29;
            optional uint32 friendly = 30;
            optional uint32 forgiving = 31;
            optional uint32 successful_report_count = 36;
            optional uint32 notify_successful_report = 37;
            optional uint32 account_disabled_until_date = 38;
            optional uint32 account_disabled_count = 39;
            optional uint32 showcase_hero_id = 40;
            optional uint32 match_disabled_until_date = 41;
            optional uint32 match_disabled_count = 42;
    }
    Last edited by natj; 10-09-2012 at 04:26 PM.

  6. #466
    Basic Member
    Join Date
    Mar 2012
    Posts
    51
    Lool if limit 5 req. per sec for 1 key: ~160 days ololo

  7. #467
    Basic Member MuppetMaster42's Avatar
    Join Date
    Nov 2011
    Location
    Australia
    Posts
    585
    Quote Originally Posted by unkie View Post
    Well a good approach would be to limit the age of games that can be fetched through the API and provide the rest of the matches through a DB dumb. Then provide one DB dump for each step in the interval.
    Quote Originally Posted by googlexx View Post
    Obviously this is the best idea. But in the meantime they should just rate limit the api so development can happen and sites can work and not effect the servers. It's better than it being completely down.
    I would go with this is a poor solution.
    what happens if you as a developer, say, didn't have enough storage/memory to store every single game in a database (or hold onto a DB dump) and thus relied on the API server to get full match details.
    I.e. an iOS/Android app that simply queries the server to look at a list of matches then into match's details (so you don't save anything apart from short-term caching).

    If they limited the age of matches then it would mean that this type of user is unable to use the API because many requests would fail.


    Quote Originally Posted by googlexx View Post
    they need to just setup a really strict rate limit. Like 1 request every 5 seconds per key.
    1 per 5 secs is too slow... somewhere near the first page (first post i think?) zoid said "limit yourself to 1 per second". this is more than slow enough.
    the problem is that because zoid said to limit yourself, rather than it being an officially implemented limit, some people disregarded this limit and pulled data as quick as they could, which flooded the servers.

    think of it like this, in order to get the details of a page of matches from GetMatchHistory, you need to make 25 requests to GetMatchDetails.. which means that it takes you 125seconds to get a single page of results.
    this is stupidly slow and is only punishing the people who do the right thing.
    it also means that you have thread(s) on your server that have to sit and idle for almost 5 whole seconds at a time (it shouldn't really take any more than 0.5s to do something with a match's data..), which is an atrocious waste of resources!!!!!




    The DB dump(s) on its own would reduce the strain on the API significantly as that's where most of the traffic is coming from - people pulling the entire database.

  8. #468
    Basic Member VeRychard's Avatar
    Join Date
    Feb 2012
    Posts
    292
    When will it be back again??
    >Click< here to make a clicking sound.

    Overall average (K+A)/D and K/D tracker, and a MMR solution?


  9. #469
    Basic Member MuppetMaster42's Avatar
    Join Date
    Nov 2011
    Location
    Australia
    Posts
    585
    Quote Originally Posted by VeRychard View Post
    When will it be back again??
    Answer: How long is a piece of string?

    They'll turn it back on when they've implemented some changes to stop it from causing players to lag.
    They're probably spending most of their time on finishing the game - something that will earn them money,
    rather than the API - something that will cost them money.

  10. #470
    Quote Originally Posted by MuppetMaster42 View Post
    Answer: How long is a piece of string?

    They'll turn it back on when they've implemented some changes to stop it from causing players to lag.
    They're probably spending most of their time on finishing the game - something that will earn them money,
    rather than the API - something that will cost them money.
    I agree that they are focusing their resources on finishing the game. That said, a vibrant third-party developer community will pay for itself, the resources put into the API will ultimately feed back into growing DOTA2.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •