TeKrop / overfast-api

âš¡ Unofficial Overwatch 2 API, built with FastAPI, provides data on heroes, game modes, maps, and player careers
https://overfast-api.tekrop.fr
MIT License
102 stars 14 forks source link

More Herodata 👯 #50

Closed Backxtar closed 1 year ago

Backxtar commented 1 year ago

What do you think about specific herodata? I think about

Hero: Ana
Synergy: Genji, ...
Strong against: Junker Queen
Weak against: Kiriko

Maybe we could add those informations to the csv. If you give me the csv data structure i can add those information to it and you can put this into the api.

Those informations are really helpful but no given by blizzard and overwatch. Would make our wiki a lot better or do you think i need to implement this into my code?

Btw: there is a beta version out for android if you wanna test it with your api :) https://github.com/Backxtar/watch-over-support/releases/tag/v1.0.0%2B33

TeKrop commented 1 year ago

Hello !

Hmm it's interesting but the aim of my API is to give factual data, and in my opinion this kind of data is subjective even if some of synergies can be obvious ingame 🤔 So it would not fit the API in my opinion and would be better if you implement it into your app directly 😉

Thank you for the link of your app, I'll give it a look when I've some time 😄

Backxtar commented 1 year ago

There is a new mode out - Team Ranked. So are the ranked symbols in https://overfast-api.tekrop.fr/players/{player_id}/summary just for role picking? maybe we can add some more details: all queue missing, free role missing, and team ranked missing.

See: https://overwatch.blizzard.com/en-us/news/patch-notes/

TeKrop commented 1 year ago

I'll just update the description in the API by saying these are ranks for Role Queue ;) And we'll wait if Blizzard is making an update of their profile page with all the different ranks of not 🙈

Backxtar commented 1 year ago

Btw the profile images etc and some stats are not updated :) still getting my old avatar and banner displayed

Backxtar commented 1 year ago

The app is close to release btw :)

Available for Android and iOS

TeKrop commented 1 year ago

I'll make an update this month with the description mentioned in my previous comment 😉 Regarding your profile image, banner and stats, is the data still outdated ? If not, I think it's related to Blizzard, it's not the first time, and it seems that after every season update, there is a delay with statistics update 🤔 Good news for your app release, keep up the good work 😄

Backxtar commented 1 year ago

All data is now up to date :)!

Here is something for you: https://play.google.com/store/apps/details?id=de.backxtar.watchoveroverwatch

App is released for Android, iOS still need some checks from Apple.

Btw. your api is mentioned in privacy policy and terms of use :)!

Backxtar commented 1 year ago

Maybe you can link the app to the github desc :)

TeKrop commented 1 year ago

I tested your app and it looks great, I'll certainly update the README with the link 😄

aaronfisher-code commented 1 year ago

Maybe we could add those informations to the csv. If you give me the csv data structure i can add those information to it and you can put this into the api.

If youre looking for hero synergy info, you could look into https://overpicker.win, it would require an extra api call for your app, but it seems to have the info youre after and is actively updated based on new patches/metas across different ranks

TeKrop commented 1 year ago

@Backxtar I think @s3840619 gave you a good hint if you're looking for hero synergy informations 😄 On my side, I'm updated the API with the comment regarding ranks concerning only Role Queue. Can I consider this issue closed ? 🤔

Backxtar commented 1 year ago

@s3840619 thanks :3 so I have to mention you also :) Uhm but I don’t know how to pick the conter and synergie out of a number value there :3

this could be a really good community project

aaronfisher-code commented 1 year ago

No need to mention me @Backxtar , the hero information is all handled by Autopoetico (not sure of their github tag, but heres their linktree https://linktr.ee/Autopoietico)

As for understanding the api, its a little abstract but theres two main api's you should look at from the site

https://api.overpicker.win/hero-counters https://api.overpicker.win/hero-synergies

This will return a large json with the synergy/counter values of each hero with each other hero on the roster

From what I can see, it seems like the values range from 0-30 Value Synergy Value Counter Value
0 Doesn't synergize well Doesnt counter
10 Synergizes somewhat Counters somewhat
20 Synergizes Well Counters well
30 Strong Synergy Strong Counter

For example if we take a look at the synergy values for ana:

"Ana":{ "Ana":0, "Ashe":0, "Baptiste":20, "Bastion":20, "Brigitte":20, "Cassidy":10, "D.Va":20, "Doomfist":20, "Echo":20, "Genji":30, "Hanzo":0, "Junker Queen":10, "Junkrat":0, "Kiriko":10, "Lifeweaver":20, "Lucio":10, "Mei":10, "Mercy":20, "Moira":0, "Orisa":20, "Pharah":20, "Ramattra":20, "Reaper":20, "Reinhardt":20, "Roadhog":10, "Sigma":10, "Soldier: 76":20, "Sojourn":10, "Sombra":10, "Symmetra":10, "Torbjörn":0, "Tracer":10, "Widowmaker":0, "Winston":20, "Wrecking Ball":10, "Zarya":10, "Zenyatta":0 }

We can see that she synergizes really well with Genji (30) and poorly with Ashe (0)

Similarly if we take a look at the counter values for ana:

"Ana":{ "Ana":10, "Ashe":20, "Baptiste":10, "Bastion":20, "Brigitte":20, "Cassidy":20, "D.Va":0, "Doomfist":20, "Echo":20, "Genji":10, "Hanzo":10, "Junker Queen":20, "Junkrat":10, "Kiriko":0, "Lifeweaver":10, "Lucio":20, "Mei":10, "Mercy":20, "Moira":20, "Orisa":0, "Pharah":20, "Ramattra":20, "Reaper":10, "Reinhardt":10, "Roadhog":30, "Sigma":0, "Soldier: 76":20, "Sombra":10, "Sojourn":0, "Symmetra":20, "Torbjörn":10, "Tracer":10, "Widowmaker":10, "Winston":10, "Wrecking Ball":20, "Zarya":10, "Zenyatta":20 }

We can see that she is a strong counter to roadhog (30), but does little to counter D.Va (0)

Hope this helps! Happy coding

Backxtar commented 1 year ago

Thanks :) I just didn’t know what these numbers are.

the json handling is not the problem

thanks 😊

Backxtar commented 1 year ago

I have added a basic data structure file:

class OWHeroCounters {
  List<Counters>? counters;

  OWHeroCounters({this.counters});

  OWHeroCounters.fromJson(Map<String, dynamic> json) {
    counters = _getCounters(json);
  }

  List<Counters> _getCounters(Map<String, dynamic> json) {
    List<Counters> counters = List<Counters>.empty(growable: true);
    json.forEach((key, value) {
      Counters conter = Counters.fromJson(value);
      conter.name = key;
      counters.add(conter);
    });
    return counters;
  }
}

class Counters {
  String? name;
  int? ana;
  int? ashe;
  int? baptiste;
  int? bastion;
  int? brigitte;
  int? cassidy;
  int? dVa;
  int? doomfist;
  int? echo;
  int? genji;
  int? hanzo;
  int? junkerQueen;
  int? junkrat;
  int? kiriko;
  int? lifeweaver;
  int? lucio;
  int? mei;
  int? mercy;
  int? moira;
  int? orisa;
  int? pharah;
  int? ramattra;
  int? reaper;
  int? reinhardt;
  int? roadhog;
  int? sigma;
  int? soldier76;
  int? sombra;
  int? sojourn;
  int? symmetra;
  int? torbjRn;
  int? tracer;
  int? widowmaker;
  int? winston;
  int? wreckingBall;
  int? zarya;
  int? zenyatta;

  Counters(
      {this.name,
      this.ana,
      this.ashe,
      this.baptiste,
      this.bastion,
      this.brigitte,
      this.cassidy,
      this.dVa,
      this.doomfist,
      this.echo,
      this.genji,
      this.hanzo,
      this.junkerQueen,
      this.junkrat,
      this.kiriko,
      this.lifeweaver,
      this.lucio,
      this.mei,
      this.mercy,
      this.moira,
      this.orisa,
      this.pharah,
      this.ramattra,
      this.reaper,
      this.reinhardt,
      this.roadhog,
      this.sigma,
      this.soldier76,
      this.sombra,
      this.sojourn,
      this.symmetra,
      this.torbjRn,
      this.tracer,
      this.widowmaker,
      this.winston,
      this.wreckingBall,
      this.zarya,
      this.zenyatta});

  Counters.fromJson(Map<String, dynamic> json) {
    ana = json['Ana'];
    ashe = json['Ashe'];
    baptiste = json['Baptiste'];
    bastion = json['Bastion'];
    brigitte = json['Brigitte'];
    cassidy = json['Cassidy'];
    dVa = json['D.Va'];
    doomfist = json['Doomfist'];
    echo = json['Echo'];
    genji = json['Genji'];
    hanzo = json['Hanzo'];
    junkerQueen = json['Junker Queen'];
    junkrat = json['Junkrat'];
    kiriko = json['Kiriko'];
    lifeweaver = json['Lifeweaver'];
    lucio = json['Lucio'];
    mei = json['Mei'];
    mercy = json['Mercy'];
    moira = json['Moira'];
    orisa = json['Orisa'];
    pharah = json['Pharah'];
    ramattra = json['Ramattra'];
    reaper = json['Reaper'];
    reinhardt = json['Reinhardt'];
    roadhog = json['Roadhog'];
    sigma = json['Sigma'];
    soldier76 = json['Soldier: 76'];
    sombra = json['Sombra'];
    sojourn = json['Sojourn'];
    symmetra = json['Symmetra'];
    torbjRn = json['Torbjörn'];
    tracer = json['Tracer'];
    widowmaker = json['Widowmaker'];
    winston = json['Winston'];
    wreckingBall = json['Wrecking Ball'];
    zarya = json['Zarya'];
    zenyatta = json['Zenyatta'];
  }
}

This should be the structure of the api's data.

Backxtar commented 1 year ago

The counter / synergy is in :)

Backxtar commented 1 year ago

@TeKrop can u add the new gamemode and maps :)?

TeKrop commented 1 year ago

@Backxtar The new maps are already here, I added them at the same time as the update went live.

Regarding the gamemode, I'm parsing Blizzard official page (maps section of https://overwatch.blizzard.com/en-us/) but it seems they didn't update it, so I'll need to handle gamemodes manually instead of parsing 🫠

I'll create a dedicated issue and handle it in a few days :wink:

Backxtar commented 1 year ago

@Backxtar The new maps are already here, I added them at the same time as the update went live.

Regarding the gamemode, I'm parsing Blizzard official page (maps section of https://overwatch.blizzard.com/en-us/) but it seems they didn't update it, so I'll need to handle gamemodes manually instead of parsing 🫠

I'll create a dedicated issue and handle it in a few days 😉

Nice :) I’m working now on sole user experience. For a better overview :) Also the core functions are now usable without any login.

Another point: Is it possible to get the ability data? I mean dmg values reload values etc? :)