s32x / ovrstat

:video_game: An Unofficial Overwatch Stats API
https://ovrstat.com
BSD 3-Clause "New" or "Revised" License
99 stars 18 forks source link

Site cannot fully load sometime #38

Open savely-krasovsky opened 5 years ago

savely-krasovsky commented 5 years ago

It looks like this: default We should somehow mitigate it, current answer in such cases:

"icon": "https://d15f34w2p8l1cc.cloudfront.net/overwatch/7d21d4ae099ba3299fef3688cd45e6635478bc9a0ff957643f873c18522b6839.png",
    "name": "Example-1234",
    "level": 100,
    "rating": 2000,
    "private": false,
    "gamesWon": 500,
    "prestige": 1,
    "levelIcon": "https://d15f34w2p8l1cc.cloudfront.net/overwatch/e8b7df4b88998380658d49d00e7bc483c740432ac417218e94fab4137bec4ae0.png",
    "ratingIcon": "https://d1u1mce87gyfbn.cloudfront.net/game/rank-icons/rank-GoldTier.png",
    "endorsement": 3,
    "prestigeIcon": "https://d15f34w2p8l1cc.cloudfront.net/overwatch/8de2fe5d938256a5725abe4b3655ee5e9067b7a1f4d5ff637d974eb9c2e4a1ea.png",
    "quickPlayStats": {
      "topHeroes": {
        "": {
          "gamesWon": 0,
          "timePlayed": "0",
          "multiKillBest": 0,
          "winPercentage": 0,
          "objectiveKills": 0,
          "weaponAccuracy": 0,
          "eliminationsPerLife": 0,
          "timePlayedInSeconds": 0
        }
      },
      "careerStats": {
        "": {
          "best": null,
          "game": null,
          "combat": null,
          "deaths": null,
          "assists": null,
          "average": null,
          "matchAwards": null,
          "heroSpecific": null,
          "miscellaneous": null
        },
        "allHeroes": {
          "best": null,
          "game": null,
          "combat": null,
          "deaths": null,
          "assists": null,
          "average": null,
          "matchAwards": null,
          "heroSpecific": null,
          "miscellaneous": null
        }
      }
    },
    "endorsementIcon": "https://d3hmvhl7ru3t12.cloudfront.net/svg/icons/endorsement-frames-aa182c1f63b51afa951daec63595791283ab97ea3a07f8d47abf9dc7aeda5cc67c786041042de0b8e427194ed084f7cee6b56fa984532199e7ea95bc12bbd995.svg#_3",
    "competitiveStats": {
      "topHeroes": {
        "": {
          "gamesWon": 0,
          "timePlayed": "0",
          "multiKillBest": 0,
          "winPercentage": 0,
          "objectiveKills": 0,
          "weaponAccuracy": 0,
          "eliminationsPerLife": 0,
          "timePlayedInSeconds": 0
        }
      },
      "careerStats": {
        "": {
          "best": null,
          "game": null,
          "combat": null,
          "deaths": null,
          "assists": null,
          "average": null,
          "matchAwards": null,
          "heroSpecific": null,
          "miscellaneous": null
        },
        "allHeroes": {
          "best": null,
          "game": null,
          "combat": null,
          "deaths": null,
          "assists": null,
          "average": null,
          "matchAwards": null,
          "heroSpecific": null,
          "miscellaneous": null
        }
      }
    }
  }

It happens pretty often (40% of page loads).

Related to #22

savely-krasovsky commented 5 years ago

TBH, I am pretty disappointed HOW bad blizzard site is. It uses crazy cache that can show you literally three different profiles just by clicking "refresh" button in browser. Refresh -- profile is private. Refresh -- profile SUDDENLY NOT private. Refresh -- profile not private, but dozen of info not loaded. It's f...in crazy.

I am thinking about abandoning my project until API will be released (so sort of never, I guess).

s32x commented 5 years ago

I see what you're saying. It's pretty sad that it would load this way via blizzards frontend. The most I could recommend is hitting the endpoint several times (perhaps concurrently) and hope one of the payloads is larger than the rest and has real data. Since this app is a basic passthrough I don't think there's much I can do on my end besides performing the same concurrent logic.

Web scraping is never fun. This project and my anime ripper are both projects I don't keep up with very often for this particular reason. It's almost not worth the trouble.

savely-krasovsky commented 5 years ago

I tried to make stats-function recursive with attempts counter. Even with 100 attempts it not loads some profiles. Because their caching is NIGHTMARE. It started only after december, their forums have tons of reports, but nobody cares, "api is not a priority"...