Giter Site home page Giter Site logo

tekrop / overfast-api Goto Github PK

View Code? Open in Web Editor NEW
100.0 7.0 13.0 15.77 MB

⚡ Unofficial Overwatch 2 API, built with FastAPI, provides data on heroes, game modes, maps, and player careers

Home Page: https://overfast-api.tekrop.fr

License: MIT License

Python 98.59% Dockerfile 0.66% Shell 0.20% Makefile 0.55%
api beautifulsoup fastapi overwatch overwatch-api overwatch-stats python blizzard blizzard-profile-pages overwatch-heroes

overfast-api's People

Contributors

dependabot[bot] avatar mascherino avatar matthewsh avatar rapougnac avatar s-rigaud avatar sourcery-ai[bot] avatar tekrop 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

overfast-api's Issues

New endpoint for career stats without labels

Discussed in #39

Originally posted by davidetacchini May 15, 2023
Hi @TeKrop, nice API; can't wait to make the switch for my project and use it in production!

Wouldn't it be better using a dictionary of dictionaries than a list of dictionaries in the following section?

"career_stats": {
    "all-heroes": [
        {
          "category": "best",
          "label": "Best",
          "stats": [
            {
            "key": "eliminations_most_in_game",
            "label": "Eliminations - Most in Game",
            "value": 62
            },
          ]
        },
        {
          "category": "average",
          "label": "Average",
          "stats": [
            {
            "key": "objective_kills_avg_per_10_min",
            "label": "Objective Kills - Avg per 10 Min",
            "value": 5.9
            },
          ]
        }
    ]
}

Personally, I think it is better in case someone wants to get a specific category (e.g. "best") without having to iterate through the entire list each time, so the time complexity would be O(1) instead of the actual O(n).

"career_stats": {
    "all-heroes": {
        "best": {
            "eliminations_most_in_game": 62,
            "final_blows_most_in_game": 38,
            "all_damage_done_most_in_game": 21507,
            all the other stats...
        },
        "average": {
            "objective_kills_avg_per_10_min": 5.9,
            all the other stats...
        },
    }
}

I see that you can have multiple key/value pairs per object by using a list of objects, thus adding more information. However, in this specific case, it's pretty easy to get the label out of the key if a dictionary of dictionaries is used by simply formatting it. Thanks for the attention, keep up the good work :)

Dead project?

Can't even do a simple player request

import requests


player_id = "name-number"
x = requests.get(f'https://overfast-api.tekrop.fr/players/{player_id}/summary')
print(x.status_code)

Always 404

Add HTTP 429

Is your feature request related to a problem? Please describe.
HTTP 429 errors are not documented in the API, they should be at least for the live instance.

Describe the solution you'd like
Add HTTP 429 responses in documentation

Missing some hero-data

First of all - really nice api!

But can you provide some more informations about the heroes?
First of all can you create an endpoint where you can fetch all hero specific data with 1 api call? Atm i need to loop threw each hero to get the complete data. E.g. heroes/ana -> then heroes/ashe etc.

Maybe an endpoint heroes/all would be nice.

I have created an external json with some more informations needed for the heroes.
Would be really nice if this can be integraded into the normal heroes/all - heroes/ana request

[
    {
        "name": "Ana",
        "totalhp": 200,
        "hp": 200,
        "armor": 0,
        "shield": 0,
        "abilities": [
            {
                "name": "Biotic Rifle",
                "thumbnail": "https://images.blz-contentstack.com/v3/assets/blt2477dcaf4ebd440c/bltc56d4d9789a018d0/63390487ed7dcc6a0028039c/ANA_BIOTICRIFLE.jpg",
                "video": "https://assets.blz-contentstack.com/v3/assets/blt2477dcaf4ebd440c/blt90138e57c4b91c94/6339047e64fe5a7d4481a05c/OVERWATCH_WEBSITE_CHARACTER_CAPTURE_AnaBioticRifle_WEB_16x9_1920x1080p30_WEBM.webm"
            },
            {
                "name": "Sleep Dart",
                "thumbnail": "https://images.blz-contentstack.com/v3/assets/blt2477dcaf4ebd440c/bltb27e2783f517c7fe/63390487e3c2a2741688cba3/ANA_SLEEPDART.jpg",
                "video": "https://assets.blz-contentstack.com/v3/assets/blt2477dcaf4ebd440c/bltb6b9ecf5d9a2ec69/6339047ef87c00687e8ef222/OVERWATCH_WEBSITE_CHARACTER_CAPTURE_AnaSleepDart_WEB_16x9_1920x1080p30_WEBM.webm"
            },
            {
                "name": "Biotic Grenade",
                "thumbnail": "https://images.blz-contentstack.com/v3/assets/blt2477dcaf4ebd440c/bltcd66dcc6eb196187/633904873922a2677fc88cfa/ANA_BIOTICGRENADE.jpg",
                "video": "https://assets.blz-contentstack.com/v3/assets/blt2477dcaf4ebd440c/blt73fcfa06c4272760/6339047d3922a2677fc88cf6/OVERWATCH_WEBSITE_CHARACTER_CAPTURE_AnaBioticGrenade_WEB_16x9_1920x1080p30_WEBM.webm"
            },
            {
                "name": "Nano Boost",
                "thumbnail": "https://images.blz-contentstack.com/v3/assets/blt2477dcaf4ebd440c/blt5901c5f790bb82f9/63390487da1d806602f83eee/ANA_NANOBOOST.jpg",
                "video": "https://assets.blz-contentstack.com/v3/assets/blt2477dcaf4ebd440c/blt557e93a659cf572c/6339047e1a0b5e7d3d1ec595/OVERWATCH_WEBSITE_CHARACTER_CAPTURE_AnaNanoBoost_WEB_16x9_1920x1080p30_WEBM.webm"
            }
        ]
    },
    {
        "name": "Ashe",
        "totalhp": 200,
        "hp": 200,
        "armor": 0,
        "shield": 0,
        "abilities": [
            {
                "name": "The Viper",
                "thumbnail": "https://images.blz-contentstack.com/v3/assets/blt2477dcaf4ebd440c/bltde449a1db082c1a1/633904ac64fe5a7d4481a060/ASHE_THE_VIPER.jpg",
                "video": "https://assets.blz-contentstack.com/v3/assets/blt2477dcaf4ebd440c/bltfb9b1667be81b34b/633904bab8dbde69f52798ee/OVERWATCH_WEBSITE_CHARACTER_CAPTURE_AsheTheViper_WEB_16x9_1920x1080p30_WEBM.webm" 
            },
            {
                "name": "Coach Gun",
                "thumbnail": "https://images.blz-contentstack.com/v3/assets/blt2477dcaf4ebd440c/blt0f6057298d1c0012/633904ac3922a2677fc88cfe/ASHE_COACH_GUN.jpg",
                "video": "https://assets.blz-contentstack.com/v3/assets/blt2477dcaf4ebd440c/blt65112ab5e888622d/633904b91a0b5e7d3d1ec599/OVERWATCH_WEBSITE_CHARACTER_CAPTURE_AsheCoachGun_WEB_16x9_1920x1080p30_WEBM.webm"
            },
            {
                "name": "Dynamite",
                "thumbnail": "https://images.blz-contentstack.com/v3/assets/blt2477dcaf4ebd440c/bltbbcb722a61594c10/633904acf87c00687e8ef226/ASHE_DYNAMITE.jpg",
                "video": "https://assets.blz-contentstack.com/v3/assets/blt2477dcaf4ebd440c/blt9de32278cc1b4ea0/633904ba399a07678557c13d/OVERWATCH_WEBSITE_CHARACTER_CAPTURE_AsheDynamite_WEB_16x9_1920x1080p30_WEBM.webm"
            },
            {
                "name": "B.O.B.",
                "thumbnail": "https://images.blz-contentstack.com/v3/assets/blt2477dcaf4ebd440c/blt171114cdbf544989/633904aced7dcc6a002803a0/ASHE_BOB.jpg",
                "video": "https://assets.blz-contentstack.com/v3/assets/blt2477dcaf4ebd440c/bltc1dff03c9903dad0/633904baec7e18758be51042/OVERWATCH_WEBSITE_CHARACTER_CAPTURE_AsheBOB_WEB_16x9_1920x1080p30_WEBM.webm"
            }
        ]
    },
    {
        
    }
]

Error on player profiles not having any title ingame

Some player profiles are not properly returned (ex: JohnV1-1190) because something changed in HTML content structure from Blizzard (HTTP 500).
Will investigate.

EDIT : Found the issue, Blizzard changed the way they show that a profile doesn't have any title ingame, fixing.

Fix sections in heroes_comparisons of profile pages

Describe the bug*
Feedback by Keedosuul :

The API returns null for weapon_accuracy, critical_hit_accuracy and objective_kills. My profile also does not have these categories. Similar categories that do exist for me would be "weapon accuracy - best in game" and "objective kills - avg per 10min". I know weapon_accuracy exists in the client but not on the website it seems (at least for me). I'm not sure if these stats are really needed by anyone but I just wanted to let you know.

I'll make a proper update.

To Reproduce
Go on a player profile page

[Question] Way to get top 500 standings?

Haven't found anything in the docs and im not sure if blizzard even exposes this, but it would be cool if you could get a players top 500 standing or the global top 500 leaderboard for each region, is there a way to do this?

[Feature Request]: Expose season number for competitive stats

I mentioned this briefly in my previous issue. From the profile page it is possible to know from which competitive season stats on the page are. blz-section.competitive-view block contains 2 data atribbutes: data-latestherostatrankseason and data-latestherostatrankseasonow2 which contains last season of OW1 and OW2 player has played respectively. I suggest to expose this data into API as it could be used in multiple useful ways. For example, to filter old \ irrelevant data or to track when player started to play new season.

Error when analysing career pages with empty stats for a specific hero

In the "career stats" section of the career pages, there is a dropdown on right side allowing to display stats for a specific hero if the player has played him (or the statistics for all heroes). Sometimes, there is a hero in the list for which there is no stat to display (see the attached screenshot). Example (as of today), for Lùcio in competitive : https://overwatch.blizzard.com/en-us/career/copypasting-1216/
As the API enforces at least one item in this career stats list, the user is redirected to an HTTP 500 error page.

screenshot_usecase

URL of all ranks icons?

Sorry for creating an issuse, this is actually a question about the rank icons.
I want to collect all rank icons, wonder if it can be done via the OverFast API.

Use GM3 icon as example, heres the URL of it:
https://static.playoverwatch.com/img/pages/career/icons/rank/GrandmasterTier-3-e55e61f68f.png
I noticed that the file name is followed by something like hash code? I mean the e55e61f68f, but I wasn't able to figure out how the hashing of it works.

Thank you!

[bugfix] Adding Sourcery to the project

Adding Sourcery to explore and fix minor bugfixes in the projects might be a good thing to have. I only tested a few files but I found the following errors, not sure all of them are right, I let you decide 😄

  • Type for value in update_parser_cache is dict | list
  • Type for parser_data in test_update_and_get_parser_cache is list[dict[str, str]]
  • ......

[Docker] Several install problems

Hello,

I just installed your api on my VPS, using the docker-compose install. I encountered several issues during the installation, I fixed most of them, but i'm still facing a little one.

  1. In the Dockerfile, the apk build-base is not found, i replaced it with g++ make and it seems to work
  2. After, i started up the docker-compose, and it throw me an error in the app_volume, it created a folder instead of a file for the overfast_cron, so i deleted the folder and manually created the file, and it fixed too (at least it launch)
  3. And the last issue is that when i call an endpoint, it throw me this in logs:
overfast-app-1    | 2023-04-10 12:06:05.423 | INFO     | app.handlers.api_request_handler - Filtering the data using query...
overfast-app-1    | 2023-04-10 12:06:05.435 | WARNING  | app.common.cache_manager - Redis server error : Error 111 connecting to 127.0.0.1:6379. Connection refused.
overfast-app-1    | 2023-04-10 12:06:05.436 | INFO     | app.handlers.api_request_handler - Done ! Returning filtered data...
overfast-app-1    | 2023-04-10 12:06:05.998 | INFO     | logging - 172.18.0.2:34734 - "GET /players/Navalex-21525 HTTP/1.0" 200

Even if i put on for redis cache on the env file. I will try to fix it, and keep you in touch, but you can still comment if you know what's going wrong.

[Enhancement] Endpoint for damage values?

I've just started looking through the API; it's super cool.

I'd love to have to opportunity to also see damage values for abilities/weapons. I think it'd be fun for assembling together teams with the most/least damage. Perhaps I've missed it and this feature already exists, if so, please point it out.

It may be that there isn't a Blizzard-run page for these values, if that's the case, I understand why it can't be scraped reliably into the API.

TY :)

Blizzard down?

{
  "error": "Couldn't get Blizzard page (HTTP 502 error) : <html>\r\n<head><title>502 Bad Gateway</title></head>\r\n<body>\r\n<center><h1>502 Bad Gateway</h1></center>\r\n</body>\r\n</html>\r\n"
}

Is Blizzard down right now?

New URL UID

Noticed this today, Overwatch's website is now redirecting profiles from the name to a UID. For example mine redirects from Zencep-1489 to c85ba289b661d6fcbda82e|58a8345296109e00bdcb2af89f4118e3 now. It seems to not impact the API yet? although I can't tell with my profile:
image

I haven't played in season 9 so not sure if it's actually broken yet. Just informing early.

Also complete sidenote, I was wanting to start using Overfast's live instance for collecting player data. I'm not seeing anything about rate limits to the live instance, but is there a rational requests per second you expect without overloading your server?

Open queue competitive data somehow filtered out from player stats summary

I have noticed that sometimes players/{player_id}/stats/summary endpoint returns empty response for competitive data despite Blizzard profile page actually shows some competitive stats. So far, I only found 2 such cases and both times the common denominator is players only played in open competitive queue.

It could be intended behaviour in which case it probably should be added in the docs, but I'm more inclined to think it's a bug as I don't really now how you can reliably remove Open Queue stats. The only two options I could think of is either remove heroes by role, if player doesn't have rank, or to use data-attribute latestherostatrankseason (btw: can be useful to add it somewhere into api). I quickly glanced over the code and couldn't find any traces of such filtering. Moreover, /players/{player_id} enpoint returns this data just fine.

Profiles in question:
https://overwatch.blizzard.com/en-us/career/Progresso-2749/
https://overfast-api.tekrop.fr/players/Progresso-2749/stats/summary?gamemode=competitive&platform=pc

https://overwatch.blizzard.com/en-us/career/fluffy-24694/
https://overfast-api.tekrop.fr/players/fluffy-24694/stats/summary?gamemode=competitive&platform=pc

(Why Blizzard even mixes up Role Queue with Open queue on their site is a different question but it is what it is, I guess)

More Herodata 👯

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

Critical error on players careers : KeyError("option-id")

Critical errors are encountered when trying to parse Blizzard career pages. It seems Blizzard made some changes 1 hour ago, I'm investigating.

As a result, users may encounter HTTP 500 errors while calling players careers related endpoints on the API.
Background cache update is disabled on the live version in the meantime.

[Suggestion] Add Portrait value to heroes/{hero_key} endpoint

I'm not sure if this was overlooked, but the Portrait value for a hero is only available on /heroes endpoint and not on the heroes/{hero_key} endpoint, which I find odd. It might just be a simple overlook from your part and nothing beyond that. And its also fairly simple to workaround this and obtain it either way. But as I noticed that you accept contributions/suggestions I decided to pass on my thoughts about this matter.

As I build a Discord bot, its not hard to fetch the portrait from the /heroes endpoint matching the key value with whatever hero and add that to the new object (could use index too, but you never know when the index order might change). But, looking at it from a resource-intensive perspective, it is one API call too much for a single portrait value, so it would be nice to find it where it should originally belong.

Thanks for reading this suggestion!

[Proposal]: Expose actual numbers of games won\loss in stats summary endpoint

Is there any reason why only winrate percentage is shown in the summary endpoint?

I feel like showing actual number of games won\loss along with winrate percentage is fairly common practice for progress tracking and as this values is already used to calculate winrate I think it would only be fair to expose them in the final response.

Error while trying to start overfast-api

Describe the bug
Errored when trying to run overfast-api in production

To Reproduce

  1. git clone https://github.com/TeKrop/overfast-api && cd overfast-api
  2. Created and edited .env and changed APP_PORT, APP_BASE_URL
  3. apt install make (GNU make 4.3)
  4. make up (inside folder overfast-api)
  5. shows error
root@itzdrli-dev-armv8:/home/dev/overfast-api# make up
Building OverFastAPI (production mode)...
docker compose build
WARN[0000] /home/dev/overfast-api/docker-compose.yml: `version` is obsolete 
[+] Building 43.4s (37/44)                                                                                                                                                                            docker:default
 => [redis internal] load build definition from Dockerfile                                                                                                                                                      0.0s
 => => transferring dockerfile: 109B                                                                                                                                                                            0.0s
 => [redis internal] load metadata for docker.io/library/redis:alpine                                                                                                                                           1.2s
 => [redis internal] load .dockerignore                                                                                                                                                                         0.0s
 => => transferring context: 2B                                                                                                                                                                                 0.0s
 => [redis 1/4] FROM docker.io/library/redis:alpine@sha256:0389bb8416d7c6ed065c25745179bf5d358e5d9472dd30a687ab36ffbb650262                                                                                     1.3s
 => => resolve docker.io/library/redis:alpine@sha256:0389bb8416d7c6ed065c25745179bf5d358e5d9472dd30a687ab36ffbb650262                                                                                           0.0s
 => => sha256:0389bb8416d7c6ed065c25745179bf5d358e5d9472dd30a687ab36ffbb650262 10.20kB / 10.20kB                                                                                                                0.0s
 => => sha256:94747bd812346354fd5042870b6e44e5406880a4e6b5736a9cf9c753110df11b 4.09MB / 4.09MB                                                                                                                  0.3s
 => => sha256:cdfbf2aae844ce899e13c8e08b524cfba67d9ddd6c5ca10be36c85aac3dc2ce7 961B / 961B                                                                                                                      0.1s
 => => sha256:16098e28f60cd9af53fb043cf88a98958b3760bc0ac96b7a4e8ee40ce1e3e7d3 2.48kB / 2.48kB                                                                                                                  0.0s
 => => sha256:cdb453bbf44653b2fff791f1950bc858a4156551f0a99eb868a81e17144a5297 7.92kB / 7.92kB                                                                                                                  0.0s
 => => sha256:510e151e1774050d5f5bb60a85736a80fa6c006791db5cebe6d506d65dec84a1 178.15kB / 178.15kB                                                                                                              0.3s
 => => sha256:70498b03edf90991b22ce539adf5694ff45163da2c71ec1501e5611fd228913e 934.59kB / 934.59kB                                                                                                              0.4s
 => => extracting sha256:94747bd812346354fd5042870b6e44e5406880a4e6b5736a9cf9c753110df11b                                                                                                                       0.2s
 => => sha256:b4a58c1d515ac6de0babaf7b798a89ae1a6707d9b0a70b647b735060b7da96cd 12.14MB / 12.14MB                                                                                                                0.5s
 => => sha256:f5bb1f316352fd460172c7e484e857550bb23940c213e90eeda6853f5c7f80dc 97B / 97B                                                                                                                        0.5s
 => => extracting sha256:cdfbf2aae844ce899e13c8e08b524cfba67d9ddd6c5ca10be36c85aac3dc2ce7                                                                                                                       0.0s
 => => sha256:8e79f523a11aead29e92102b8b50db1bca63e4571c30cda9b899fdee8177ed98 573B / 573B                                                                                                                      0.6s
 => => sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1 32B / 32B                                                                                                                        0.5s
 => => extracting sha256:510e151e1774050d5f5bb60a85736a80fa6c006791db5cebe6d506d65dec84a1                                                                                                                       0.1s
 => => extracting sha256:70498b03edf90991b22ce539adf5694ff45163da2c71ec1501e5611fd228913e                                                                                                                       0.1s
 => => extracting sha256:b4a58c1d515ac6de0babaf7b798a89ae1a6707d9b0a70b647b735060b7da96cd                                                                                                                       0.5s
 => => extracting sha256:f5bb1f316352fd460172c7e484e857550bb23940c213e90eeda6853f5c7f80dc                                                                                                                       0.0s
 => => extracting sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1                                                                                                                       0.0s
 => => extracting sha256:8e79f523a11aead29e92102b8b50db1bca63e4571c30cda9b899fdee8177ed98                                                                                                                       0.0s
 => [redis internal] load build context                                                                                                                                                                         0.0s
 => => transferring context: 878B                                                                                                                                                                               0.0s
 => [redis 2/4] WORKDIR /redis                                                                                                                                                                                  0.1s
 => [redis 3/4] COPY init.sh ./                                                                                                                                                                                 0.0s
 => [redis 4/4] RUN chmod +x init.sh                                                                                                                                                                            0.2s
 => [redis] exporting to image                                                                                                                                                                                  0.0s
 => => exporting layers                                                                                                                                                                                         0.0s
 => => writing image sha256:2c92f9ca2855eb09cbfdea5edabec9d27a207e0ca51a6d7dd5a51a1263b2e513                                                                                                                    0.0s
 => => naming to docker.io/library/overfast-api-redis                                                                                                                                                           0.0s
 => [app internal] load build definition from Dockerfile                                                                                                                                                        0.0s
 => => transferring dockerfile: 1.04kB                                                                                                                                                                          0.0s
 => [worker internal] load metadata for docker.io/library/python:3.12-alpine                                                                                                                                    1.2s
 => [worker internal] load build definition from Dockerfile                                                                                                                                                     0.0s
 => => transferring dockerfile: 1.04kB                                                                                                                                                                          0.0s
 => [app internal] load .dockerignore                                                                                                                                                                           0.0s
 => => transferring context: 2B                                                                                                                                                                                 0.0s
 => [worker internal] load .dockerignore                                                                                                                                                                        0.0s
 => => transferring context: 2B                                                                                                                                                                                 0.0s
 => [app main  1/10] FROM docker.io/library/python:3.12-alpine@sha256:d24ed567ee3b972478a232ceff84b0d002e18ee9f5d38234ecbffece23dfa084                                                                          1.8s
 => => resolve docker.io/library/python:3.12-alpine@sha256:d24ed567ee3b972478a232ceff84b0d002e18ee9f5d38234ecbffece23dfa084                                                                                     0.0s
 => => sha256:d24ed567ee3b972478a232ceff84b0d002e18ee9f5d38234ecbffece23dfa084 1.65kB / 1.65kB                                                                                                                  0.0s
 => => sha256:6714e211c290dc39908616ed0befdcc8f9097b69ee62d17f2f1833d764b93ef0 1.37kB / 1.37kB                                                                                                                  0.0s
 => => sha256:0fe205a492b75b71368b95db211dc148d50240d50752f04b34d1024084561296 6.64kB / 6.64kB                                                                                                                  0.0s
 => => sha256:820650aa2f5b8e795b04058fa617fb87ad3397f0fc2582400f9855b84f2d4401 465.47kB / 465.47kB                                                                                                              0.4s
 => => sha256:4e0f3549117ae48d35d3cbea60bca5ef0d654723e8065274c93137c3f2b44a60 14.68MB / 14.68MB                                                                                                                0.4s
 => => sha256:a5b6895e2863b5497adb5d68fe8e5241835c9624c9a31fd2b8532b08da56b638 242B / 242B                                                                                                                      0.1s
 => => sha256:629a421706977cd903f62bb22483a0fa6cba236a94d23543e616bf5c24516467 2.74MB / 2.74MB                                                                                                                  0.5s
 => => extracting sha256:820650aa2f5b8e795b04058fa617fb87ad3397f0fc2582400f9855b84f2d4401                                                                                                                       0.2s
 => => extracting sha256:4e0f3549117ae48d35d3cbea60bca5ef0d654723e8065274c93137c3f2b44a60                                                                                                                       0.8s
 => => extracting sha256:a5b6895e2863b5497adb5d68fe8e5241835c9624c9a31fd2b8532b08da56b638                                                                                                                       0.0s
 => => extracting sha256:629a421706977cd903f62bb22483a0fa6cba236a94d23543e616bf5c24516467                                                                                                                       0.3s
 => [app internal] load build context                                                                                                                                                                           0.1s
 => => transferring context: 10.25MB                                                                                                                                                                            0.1s
 => [worker internal] load build context                                                                                                                                                                        0.1s
 => => transferring context: 10.25MB                                                                                                                                                                            0.1s
 => [app main  2/10] WORKDIR /code                                                                                                                                                                              0.1s
 => [app main  3/10] RUN apk add build-base &&   apk add libffi-dev &&   pip install poetry==1.8.2                                                                                                             24.3s
 => [app main  4/10] COPY pyproject.toml /code/                                                                                                                                                                 0.0s
 => [app main  5/10] COPY poetry.lock /code/                                                                                                                                                                    0.0s
 => [app main  6/10] RUN poetry config virtualenvs.create false &&  poetry install --only main --no-interaction --no-ansi                                                                                       8.7s
 => [app main  7/10] COPY ./app /code/app                                                                                                                                                                       0.0s
 => [worker main  8/10] COPY ./static /code/static                                                                                                                                                              0.1s
 => [app main  9/10] COPY ./build/overfast-crontab /etc/crontabs/root                                                                                                                                           0.0s
 => [app main 10/10] RUN chmod +x /etc/crontabs/root                                                                                                                                                            0.2s
 => [worker] exporting to image                                                                                                                                                                                 1.3s
 => => exporting layers                                                                                                                                                                                         1.2s
 => => writing image sha256:097b9c11ac8d43b68212e99b3aaa27c6faaa9496a4a56c2dd17d1e8e7bf5b007                                                                                                                    0.0s
 => => naming to docker.io/library/overfast-api-worker                                                                                                                                                          0.0s
 => [app] exporting to image                                                                                                                                                                                    1.3s
 => => exporting layers                                                                                                                                                                                         1.2s
 => => writing image sha256:0d945663dff46a7417e3bee5a459b9bdbe73b8b0bf075392d2382d10e3253569                                                                                                                    0.0s
 => => naming to docker.io/library/overfast-api-app                                                                                                                                                             0.0s
 => [nginx internal] load build definition from Dockerfile                                                                                                                                                      0.0s
 => => transferring dockerfile: 284B                                                                                                                                                                            0.0s
 => [nginx internal] load metadata for docker.io/library/nginx:1.20.2-alpine                                                                                                                                    1.2s
 => [nginx internal] load .dockerignore                                                                                                                                                                         0.0s
 => => transferring context: 2B                                                                                                                                                                                 0.0s
 => [nginx 1/4] FROM docker.io/library/nginx:1.20.2-alpine@sha256:016789c9a2d021b2dcb5e1c724c75ab0a57cc4e8cd7aab7bb28e69fec7c8c4fc                                                                              1.0s
 => => resolve docker.io/library/nginx:1.20.2-alpine@sha256:016789c9a2d021b2dcb5e1c724c75ab0a57cc4e8cd7aab7bb28e69fec7c8c4fc                                                                                    0.0s
 => => sha256:455c02918c4592a9beeeae47df541266f3ea53ed573feb767e5e8ab8dcee146e 2.72MB / 2.72MB                                                                                                                  0.2s
 => => sha256:08b6b842dcd703db7772921ad226048f2f8b0bec2e1fcaaa55a59b66c4772db3 7.14MB / 7.14MB                                                                                                                  0.3s
 => => sha256:016789c9a2d021b2dcb5e1c724c75ab0a57cc4e8cd7aab7bb28e69fec7c8c4fc 1.65kB / 1.65kB                                                                                                                  0.0s
 => => sha256:1a946edcecbd2fd3121946a05e978c3a03c5d94c67d2376d3fbb62ed0c470d90 1.57kB / 1.57kB                                                                                                                  0.0s
 => => sha256:d6a1e2ab00f777c5cc735d3a1c78769cea2e2a220511c162907da2c6758e916f 8.76kB / 8.76kB                                                                                                                  0.0s
 => => sha256:d49e54c17cd83bb015a10bea1e05084d9630afc9a4feac1aa3ceb5ae647dd9d8 603B / 603B                                                                                                                      0.4s
 => => extracting sha256:455c02918c4592a9beeeae47df541266f3ea53ed573feb767e5e8ab8dcee146e                                                                                                                       0.1s
 => => sha256:0263029b2ae8863b72df3f821517b4ac5cfaff6cd482cca560636edee07d91a2 894B / 894B                                                                                                                      0.3s
 => => sha256:7a15a92d87b89cf5803fd585091af1cd8ba3216f8bb9639c7e7beb8358f88f4b 664B / 664B                                                                                                                      0.4s
 => => extracting sha256:08b6b842dcd703db7772921ad226048f2f8b0bec2e1fcaaa55a59b66c4772db3                                                                                                                       0.5s
 => => sha256:9fed390110deadba2d9f188f3d75b177f94ceababaf7d603ed64b30ad346ee0d 1.39kB / 1.39kB                                                                                                                  0.5s
 => => extracting sha256:d49e54c17cd83bb015a10bea1e05084d9630afc9a4feac1aa3ceb5ae647dd9d8                                                                                                                       0.0s
 => => extracting sha256:0263029b2ae8863b72df3f821517b4ac5cfaff6cd482cca560636edee07d91a2                                                                                                                       0.0s
 => => extracting sha256:7a15a92d87b89cf5803fd585091af1cd8ba3216f8bb9639c7e7beb8358f88f4b                                                                                                                       0.0s
 => => extracting sha256:9fed390110deadba2d9f188f3d75b177f94ceababaf7d603ed64b30ad346ee0d                                                                                                                       0.0s
 => [nginx internal] load build context                                                                                                                                                                         0.0s
 => => transferring context: 92.88kB                                                                                                                                                                            0.0s
 => [nginx 2/4] COPY nginx.conf /etc/nginx/nginx.conf                                                                                                                                                           0.0s
 => [nginx 3/4] COPY ngx_http_redis_module.so /usr/lib/nginx/modules/ngx_http_redis_module.so                                                                                                                   0.0s
 => [nginx 4/4] COPY overfast-api.conf /etc/nginx/conf.d/default.conf                                                                                                                                           0.0s
 => [nginx] exporting to image                                                                                                                                                                                  0.0s
 => => exporting layers                                                                                                                                                                                         0.0s
 => => writing image sha256:b17cb20d6e98fc6abf923c2c485464ed198eae699a116e9fdddc583ea98ba96b                                                                                                                    0.0s
 => => naming to docker.io/library/overfast-api-nginx                                                                                                                                                           0.0s
Stopping OverFastAPI and cleaning containers...
docker compose down -v --remove-orphans
WARN[0000] /home/dev/overfast-api/docker-compose.yml: `version` is obsolete 
Launching OverFastAPI (production mode)...
docker compose up -d
WARN[0000] /home/dev/overfast-api/docker-compose.yml: `version` is obsolete 
[+] Running 5/5
 ✔ Network overfast-api_default     Created                                                                                                                                                                     0.1s 
 ✔ Container overfast-api-redis-1   Healthy                                                                                                                                                                     4.6s 
 ✘ Container overfast-api-app-1     Error                                                                                                                                                                      19.6s 
 ✔ Container overfast-api-worker-1  Started                                                                                                                                                                     4.1s 
 ✔ Container overfast-api-nginx-1   Created                                                                                                                                                                     0.0s 
dependency failed to start: container overfast-api-app-1 is unhealthy
make: *** [Makefile:65: up] Error 1

Expected behavior
overfast-api runs well

Screenshots

Additional context
my server specs:
image

and docker version:
image

Competitive just returns null

Expected return:
A competitive rank and tier

{
  "summary" : { ... },
  "endorsement": { ... },
  "competitive": {
    "pc": {
      "tank": {
        "division": "diamond",
        "tier": 3,
        ... ... ...

As expected from doc

What is returned:
Null

{
  "summary": {
    "competitive": null

I looked at the career profile site, it seems they removed the rank icon from peoples pages.
So idk if that is what broke it, or if its more from the response structure changing.

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.