Giter VIP home page Giter VIP logo

cod-python-api's Introduction

cod-python-api

https://github.com/TodoLodo/cod-python-api/actions/workflows/codeql-analysis.yml/badge.svg?branch=main https://img.shields.io/endpoint?url=https://cod-python-api.todolodo.xyz/stats?q=version https://img.shields.io/endpoint?url=https://cod-python-api.todolodo.xyz/stats?q=downloads

Call Of Duty API Library for python with the implementation of both public and private API used by activision on callofduty.com

Devs

Contributors

Partnered Code

Node-CallOfDuty by: Lierrmm

Documentation

This package can be used directly as a python file or as a python library.

Installation

Install cod-api library using pip:

pip install -U cod-api

Usage

Initiation

Import module with its classes:

from cod_api import API

api = API()

Login with your sso token:

api.login('Your sso token')

Your sso token can be found by longing in at callofduty, opening dev tools (ctr+shift+I), going to Applications > Storage > Cookies > https://callofduty.com, filter to search 'ACT_SSO_COOKIE' and copy the value.

Game/Other sub classes

Following importation and initiation of the class API, its associated subclasses can be called by API.subClassName.

Below are the available sub classes:

sub class category
game
game
game
game
game
game
other
other
other

For a detailed description, __doc__ (docstring) of each sub class can be called as shown below:

ColdWar:

from cod_api import API

api = API()

# print out the docstring
print(api.ColdWar.__doc__)

ModernWarfare:

from cod_api import API

api = API()

# print out the docstring
print(api.ModernWarfare.__doc__)

ModernWarfare2:

from cod_api import API

api = API()

# print out the docstring
print(api.ModernWarfare2.__doc__)

Vanguard:

from cod_api import API

api = API()

# print out the docstring
print(api.Vanguard.__doc__)

Warzone:

from cod_api import API

api = API()

# print out the docstring
print(api.Warzone.__doc__)

Warzone2:

from cod_api import API

api = API()

# print out the docstring
print(api.Warzone2.__doc__)

Me:

from cod_api import API

api = API()

# print out the docstring
print(api.Me.__doc__)

Shop:

from cod_api import API

api = API()

# print out the docstring
print(api.Shop.__doc__)

Misc:

from cod_api import API

api = API()

# print out the docstring
print(api.Misc.__doc__)

Full Profile History

Any sub class of API that is of game category, has methods to check a player's combat history. Note that before calling any sub class methods of API you must be logged in. Main method is fullData() and fullDataAsync() which is available for ColdWar, ModernWarfare, ModernWarfare2, Vanguard, Warzone and Warzone2 classes.

Here's an example for retrieving Warzone full profile history of a player whose gamer tag is Username#1234 on platform Battlenet:

from cod_api import API, platforms
import asyncio

## sync
# initiating the API class
api = API()

# login in with sso token
api.login('your_sso_token')

# retrieving combat history
profile = api.Warzone.fullData(platforms.Battlenet, "Username#1234") # returns data of type dict

# printing results to console
print(profile)

## async
# in an async function
async def example():
    # login in with sso token
    await api.loginAsync('your_sso_token')

    # retrieving combat history
    profile = await api.Warzone.fullDataAsync(platforms.Battlenet, "Username#1234") # returns data of type dict

    # printing results to console
    print(profile)

# CALL THE example FUNCTION IN AN ASYNC ENVIRONMENT

Combat History

Main methods are combatHistory() and combatHistoryWithDate() for sync environments and combatHistoryAsync() and combatHistoryWithDateAsync() for async environments which are available for all ColdWar, ModernWarfare, ModernWarfare2, Vanguard, Warzone and Warzone2 classes.

The combatHistory() and combatHistoryAsync() takes 2 input parameters which are platform and gamertag of type cod_api.platforms and string respectively.

Here's an example for retrieving Warzone combat history of a player whose gamer tag is Username#1234 on platform Battlenet:

from cod_api import API, platforms

# initiating the API class
api = API()

## sync
# login in with sso token
api.login('your_sso_token')

# retrieving combat history
hist = api.Warzone.combatHistory(platforms.Battlenet, "Username#1234") # returns data of type dict

# printing results to console
print(hist)

## async
# in an async function
async def example():
    # login in with sso token
    await api.loginAsync('your_sso_token')

    # retrieving combat history
    hist = await api.Warzone.combatHistoryAsync(platforms.Battlenet, "Username#1234") # returns data of type dict

    # printing results to console
    print(hist)

# CALL THE example FUNCTION IN AN ASYNC ENVIRONMENT

The combatHistoryWithDate() and combatHistoryWithDateAsync() takes 4 input parameters which are platform, gamertag, start and end of type cod_api.platforms, string, int and int respectively.

start and end parameters are utc timestamps in microseconds.

Here's an example for retrieving ModernWarfare combat history of a player whose gamer tag is Username#1234567 on platform Activision with in the timestamps 1657919309 (Friday, 15 July 2022 21:08:29) and 1657949309 (Saturday, 16 July 2022 05:28:29):

from cod_api import API, platforms

# initiating the API class
api = API()

## sync
# login in with sso token
api.login('your_sso_token')

# retrieving combat history
hist = api.Warzone.combatHistoryWithDate(platforms.Activision, "Username#1234567", 1657919309, 1657949309) # returns data of type dict

# printing results to console
print(hist)

## async
# in an async function
async def example():
    # login in with sso token
    await api.loginAsync('your_sso_token')

    # retrieving combat history
    hist = await api.Warzone.combatHistoryWithDateAsync(platforms.Battlenet, "Username#1234", 1657919309, 1657949309) # returns data of type dict

    # printing results to console
    print(hist)

# CALL THE example FUNCTION IN AN ASYNC ENVIRONMENT

Additionally the methods breakdown() and breakdownWithDate() for sync environments and breakdownAsync() and breakdownWithDateAsync() for async environments, can be used to retrieve combat history without details, where only the platform played on, game title, UTC timestamp, type ID, match ID and map ID is returned for every match. These methods are available for all ColdWar, ModernWarfare, ModernWarfare2, Vanguard, Warzone and Warzone2 classes.

The breakdown() and breakdownAsync()` takes 2 input parameters which are platform and gamertag of type cod_api.platforms and string respectively.

Here's an example for retrieving Warzone combat history breakdown of a player whose gamer tag is Username#1234 on platform Battlenet:

from cod_api import API, platforms

# initiating the API class
api = API()

## sync
# login in with sso token
api.login('your_sso_token')

# retrieving combat history breakdown
hist_b = api.Warzone.breakdown(platforms.Battlenet, "Username#1234") # returns data of type dict

# printing results to console
print(hist_b)

## async
# in an async function
async def example():
    # login in with sso token
    await api.loginAsync('your_sso_token')

    # retrieving combat history breakdown
    hist_b = await api.Warzone.breakdownAsync(platforms.Battlenet, "Username#1234") # returns data of type dict

    # printing results to console
    print(hist_b)

# CALL THE example FUNCTION IN AN ASYNC ENVIRONMENT

The breakdownWithDate() and breakdownWithDateAsync() takes 4 input parameters which are platform, gamertag, start and end of type cod_api.platforms, string, int and int respectively.

start and end parameters are utc timestamps in microseconds.

Here's an example for retrieving ModernWarfare combat history breakdown of a player whose gamer tag is Username#1234567 on platform Activision with in the timestamps 1657919309 (Friday, 15 July 2022 21:08:29) and 1657949309 (Saturday, 16 July 2022 05:28:29):

from cod_api import API, platforms

# initiating the API class
api = API()

## sync
# login in with sso token
api.login('your_sso_token')

# retrieving combat history breakdown
hist_b = api.Warzone.breakdownWithDate(platforms.Activision, "Username#1234567", 1657919309, 1657949309) # returns data of type dict

# printing results to console
print(hist_b)

## async
# in an async function
async def example():
    # login in with sso token
    await api.loginAsync('your_sso_token')

    # retrieving combat history breakdown
    hist_b = await api.Warzone.breakdownWithDateAsync(platforms.Activision, "Username#1234567", 1657919309, 1657949309) # returns data of type dict

    # printing results to console
    print(hist_b)

# CALL THE example FUNCTION IN AN ASYNC ENVIRONMENT

Match Details

To retrieve details of a specific match, the method matchInfo() for sync environments and matchInfoAsync() for async environments can be used. These methods are available for all ColdWar, ModernWarfare, ModernWarfare2, Vanguard, Warzone and Warzone2 classes. Details returned by this method contains additional data than that of details returned by the combat history methods for a single match.

The matchInfo() and matchInfoAsync() takes 2 input parameters which are platform and matchId of type cod_api.platforms and integer respectively.

Optionally the match ID can be retrieved during your gameplay where it will be visible on bottom left corner

Here's an example for retrieving Warzone match details of a match where its id is 9484583876389482453 on platform Battlenet:

from cod_api import API, platforms

# initiating the API class
api = API()

## sync
# login in with sso token
api.login('your_sso_token')

# retrieving match details
details = api.Warzone.matchInfo(platforms.Battlenet, 9484583876389482453) # returns data of type dict

# printing results to console
print(details)

## async
# in an async function
async def example():
    # login in with sso token
    await api.loginAsync('your_sso_token')

    # retrieving match details
    details = await api.Warzone.matchInfoAsync(platforms.Battlenet, 9484583876389482453) # returns data of type dict

    # printing results to console
    print(details)

# CALL THE example FUNCTION IN AN ASYNC ENVIRONMENT

Season Loot

Using the seasonLoot() for sync environments and seasonLootAsync() for async environments, player's obtained season loot can be retrieved for a specific game and this method is available for ColdWar, ModernWarfare, ModernWarfare2 and Vanguard classes.

The seasonLoot() and seasonLootAsync() takes 2 input parameters which are platform and matchId of type cod_api.platforms and integer respectively.

Here's an example for retrieving ColdWar season loot obtained by a player whose gamer tag is Username#1234 on platform Battlenet:

from cod_api import API, platforms

# initiating the API class
api = API()

## sync
# login in with sso token
api.login('your_sso_token')

# retrieving season loot
loot = api.ColdWar.seasonLoot(platforms.Battlenet, "Username#1234") # returns data of type dict)

# printing results to console
print(loot)

## async
# in an async function
async def example():
    # login in with sso token
    await api.loginAsync('your_sso_token')

    # retrieving season loot
    loot = await api.ColdWar.seasonLootAsync(platforms.Battlenet, "Username#1234") # returns data of type dict

    # printing results to console
    print(loot)

# CALL THE example FUNCTION IN AN ASYNC ENVIRONMENT

Map List

Using the mapList() for sync environments and mapListAsync() for async environments, all the maps and its available modes can be retrieved for a specific game. These methods are available for ColdWar, ModernWarfare, ModernWarfare2 and Vanguard classes.

The mapList() and mapListAsync() takes 1 input parameters which is platform of type cod_api.platforms.

Here's an example for retrieving Vanguard map list and available modes respectively on platform PlayStation (PSN):

from cod_api import API, platforms

# initiating the API class
api = API()

## sync
# login in with sso token
api.login('your_sso_token')

# retrieving maps and respective modes available
maps = api.Vanguard.mapList(platforms.PSN) # returns data of type dict

# printing results to console
print(maps)

## async
# in an async function
async def example():
    # login in with sso token
    await api.loginAsync('your_sso_token')

    # retrieving season loot
    maps = await api.Vanguard.mapListAsync(platforms.PSN) # returns data of type dict

    # printing results to console
    print(maps)

# CALL THE example FUNCTION IN AN ASYNC ENVIRONMENT

platforms

platforms is an enum class available in cod_api which is used to specify the platform in certain method calls.

Available platforms are as follows:

Platform Remarks
platforms.All All (no usage till further updates)
platforms.Activision Activision
platforms.Battlenet Battlenet
platforms.PSN PlayStation
platforms.Steam Steam (no usage till further updates)
platforms.Uno Uno (activision unique id)
platforms.XBOX Xbox

platforms can be imported and used as follows:

from cod_api import platforms

platforms.All        # All (no usage till further updates)

platforms.Activision # Activision

platforms.Battlenet  # Battlenet

platforms.PSN        # PlayStation

platforms.Steam      # Steam (no usage till further updates)

platforms.Uno        # Uno (activision unique id)

platforms.XBOX       # Xbox

User Info

Using the info() method in sub class Me of API user information can be retrieved of the sso-token logged in with

from cod_api import API

# initiating the API class
api = API()

# login in with sso token
api.login('your_sso_token')

# retrieving user info
userInfo = api.Me.info() # returns data of type dict

# printing results to console
print(userInfo)

User Friend Feed

Using the methods, friendFeed() for sync environments and friendFeedAsync() for async environments, in sub class Me of API, user's friend feed can be retrieved of the sso-token logged in with

from cod_api import API

# initiating the API class
api = API()

## sync
# login in with sso token
api.login('your_sso_token')

# retrieving user friend feed
friendFeed = api.Me.friendFeed() # returns data of type dict

# printing results to console
print(friendFeed)

## async
# in an async function
async def example():
    # login in with sso token
    await api.loginAsync('your_sso_token')

    # retrieving user friend feed
    friendFeed = await api.Me.friendFeedAsync() # returns data of type dict

    # printing results to console
    print(friendFeed)

# CALL THE example FUNCTION IN AN ASYNC ENVIRONMENT

User Event Feed

Using the methods eventFeed() for sync environments and eventFeedAsync() for async environments, in sub class Me of API user's event feed can be retrieved of the sso-token logged in with

from cod_api import API

# initiating the API class
api = API()

## sync
# login in with sso token
api.login('your_sso_token')

# retrieving user event feed
eventFeed = api.Me.eventFeed() # returns data of type dict

# printing results to console
print(eventFeed)

## async
# in an async function
async def example():
    # login in with sso token
    await api.loginAsync('your_sso_token')

    # retrieving user event feed
    eventFeed = await api.Me.eventFeedAsync() # returns data of type dict

    # printing results to console
    print(eventFeed)

# CALL THE example FUNCTION IN AN ASYNC ENVIRONMENT

User Identities

Using the methods loggedInIdentities() for sync environments and loggedInIdentitiesAsync() for async environments, in sub class Me of API user's identities can be retrieved of the sso-token logged in with

from cod_api import API

# initiating the API class
api = API()

## sync
# login in with sso token
api.login('your_sso_token')

# retrieving user identities
identities = api.Me.loggedInIdentities() # returns data of type dict

# printing results to console
print(identities)

## async
# in an async function
async def example():
    # login in with sso token
    await api.loginAsync('your_sso_token')

    # retrieving user identities
    identities = await api.Me.loggedInIdentitiesAsync() # returns data of type dict

    # printing results to console
    print(identities)

# CALL THE example FUNCTION IN AN ASYNC ENVIRONMENT

User COD Points

Using the methods codPoints() for sync environments and codPointsAsync() for async environments, in sub class Me of API user's cod points can be retrieved of the sso-token logged in with

from cod_api import API

# initiating the API class
api = API()

## sync
# login in with sso token
api.login('your_sso_token')

# retrieving user cod points
cp = api.Me.codPoints() # returns data of type dict

# printing results to console
print(cp)

## async
# in an async function
async def example():
    # login in with sso token
    await api.loginAsync('your_sso_token')

    # retrieving user cod points
    cp = await api.Me.codPointsAsync() # returns data of type dict

    # printing results to console
    print(cp)

# CALL THE example FUNCTION IN AN ASYNC ENVIRONMENT

User Accounts

Using the methods connectedAccounts() for sync environments and connectedAccountsAsync() for async environments, in sub class Me of API user's connected accounts can be retrieved of the sso-token logged in with

from cod_api import API

# initiating the API class
api = API()

## sync
# login in with sso token
api.login('your_sso_token')

# retrieving user connected accounts
accounts = api.Me.connectedAccounts() # returns data of type dict

# printing results to console
print(accounts)

## async
# in an async function
async def example():
    # login in with sso token
    await api.loginAsync('your_sso_token')

    # retrieving user connected accounts
    accounts = await api.Me.connectedAccountsAsync() # returns data of type dict

    # printing results to console
    print(accounts)

# CALL THE example FUNCTION IN AN ASYNC ENVIRONMENT

User settings

Using the methods settings() for sync environments and settingsAsync() for async environments, in sub class Me of API user's settings can be retrieved of the sso-token logged in with

from cod_api import API

# initiating the API class
api = API()

## sync
# login in with sso token
api.login('your_sso_token')

# retrieving user settings
settings = api.Me.settings() # returns data of type dict

# printing results to console
print(settings)

## async
# in an async function
async def example():
    # login in with sso token
    await api.loginAsync('your_sso_token')

    # retrieving user settings
    settings = await api.Me.settingsAsync() # returns data of type dict

    # printing results to console
    print(settings)

# CALL THE example FUNCTION IN AN ASYNC ENVIRONMENT

Donate

cod-python-api's People

Contributors

engineer152 avatar lierrmm avatar todolodo avatar werseter 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

cod-python-api's Issues

RuntimeError: Event loop is closed

Describe the bug

When I run the first few lines of the tutorial, i get a RuntimeError.

Here is my code :

  _import asyncio, datetime, requests, twine, urllib3, uuid, sphinx
  
  from cod_api import API, platforms
  api = API()
  api.login("USERS-SSO-TOKEN-EDITED-BY-TODOLODO-TO-HIDE-IT")
  profile = api.ModernWarfare2.fullData(platforms.PSN, "SkyRRoZ")
  print(profile)_

Here is the output:

  _C:\Users\youso\PycharmProjects\pythonProject56\venv\Scripts\python.exe C:/Users/youso/PycharmProjects/pythonProject56/main.py
  {'status': 'error', 'data': {'type': 'com.activision.mt.common.stdtools.exceptions.NoStackTraceException', 'message': 'Not permitted: not allowed'}}
  Exception ignored in: <function _ProactorBasePipeTransport.__del__ at 0x0000023BF6492200>
  Traceback (most recent call last):
    File "C:\Users\youso\AppData\Local\Programs\Python\Python310\lib\asyncio\proactor_events.py", line 116, in __del__
      self.close()
    File "C:\Users\youso\AppData\Local\Programs\Python\Python310\lib\asyncio\proactor_events.py", line 108, in close
      self._loop.call_soon(self._call_connection_lost, None)
    File "C:\Users\youso\AppData\Local\Programs\Python\Python310\lib\asyncio\base_events.py", line 750, in call_soon
      self._check_closed()
    File "C:\Users\youso\AppData\Local\Programs\Python\Python310\lib\asyncio\base_events.py", line 515, in _check_closed
      raise RuntimeError('Event loop is closed')
  RuntimeError: Event loop is closed
  
  Process finished with exit code 0_

To Reproduce
Steps to reproduce the behavior:

Just connect to the API and print any player profile.

Expected behavior
I expected to get the full data on the player named "SkyRRoZ"

Screenshots

Desktop (please complete the following information):

  • OS: Windows 10
  • Browser : None, Pycharm local
  • Version : Python 3

Additional context

TypeError when using the Friend List func or any other.

Hi! I went to do some tests involving your project and I came across an error when trying to use any of the functions, in this case below it was using the list of friends. Another thing, can I use the same cookie every time or do I need to collect it before using it?

Exception has occurred: TypeError
'NoneType' object is not iterable
File "C:\Users\Santa Kaya\Desktop\cod-python-api-2.0.1\cod_api_init_.py", line 556, in info
for i in rawData['identities']:
File "C:\Users\Santa Kaya\Desktop\cod-python-api-2.0.1\cod_api_init_.py", line 567, in _priv
d = self.info()
File "C:\Users\Santa Kaya\Desktop\cod-python-api-2.0.1\cod_api_init
.py", line 610, in settingsAsync
p, g = self._priv()
File "C:\Users\Santa Kaya\Desktop\cod-python-api-2.0.1\cod_api_init
.py", line 615, in settings
return asyncio.run(self.settingsAsync())
File "C:\Users\Santa Kaya\Desktop\cod-python-api-2.0.1\main.py", line 11, in
settings = api.Me.settings() # returns data of type dict

https://prnt.sc/pw9YVARChv_E

'platforms' is not defined

Hi, while testing the API I got this error:

profile = api.ModernWarfare2.fullData(platforms.Battlenet, "TAG")
NameError: name 'platforms' is not defined

Is it a known issue by any chance ?

It doesn't work with other games aswell.

Thanks by advance !

Unable to access combatHistory data for ModernWarfare2 or any other game title

Describe the bug
Unable to access combatHistory data for any of the game titles, result produces the following: {'status': 'success', 'data': {}}

To Reproduce
Steps to reproduce the behavior:

  1. Run the following code to obtain combatHistory for ModernWarfare2 (or any game title):

`
from cod_api import API, platforms
import asyncio

api = API()

api.login('sso_token') #this has been replaced with my account sso_cookie

profile = api.ModernWarfare2.combatHistory(platforms.Battlenet, "Username#1234") #this has been replaced with my username

print(profile)
`

  1. After running this code with my username and SSO token correctly inserted I receive the results {'status': 'success', 'data': {}}
  2. I have ensured my username and sso_token are correct by running fullData instead of combat history and had data returned

Expected behavior
After ensuring my sso_token and username are correct by running other parameters such as fullData and getting data returned and playing the game extensively on this account, I would expect the combat history for ModernWarfare2, or any other game, to be returned. I would like to take this combat history data and dashboard my own combat record, with more insightful metrics than what is provided from the standard combat record provided by Call of Duty in game.

Desktop (please complete the following information):

  • OS: Windows
  • Browser Chrome
  • Version Windows 10

Additional context
Please let me know if there is a bug in my code or if I am misunderstanding some aspects. My end goal would be to receieve my raw, per game combat history

Support for Warzone 3 and MW3

Great lib! WZ3 is out, can we have support for Warzone 3 and MW3 ?

I tried to do it myself by doing this

    class __WZ3(__GameDataCommons):
        """
        Warzone 3 class: A class to get players warzone 3 stats, warzone 3 combat history and specific warzone 3 match details
            classCategory: game
            gameId/gameTitle: mw or wz
            gameType: wz2

        """

        @property
        def _game(self) -> str:
            return "mw3"

        @property
        def _type(self) -> str:
            return "wz3"

        async def seasonLootAsync(self, platform, gamertag):
            raise InvalidEndpoint

        async def mapListAsync(self, platform):
            raise InvalidEndpoint

However i get the following error :

{'status': 'error', 'data': {'type': 'com.activision.mt.common.stdtools.exceptions.NoStackTraceException', 'message': 'Error from datastore'}}

Support for CODM also pls

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Retrieving full data using Activision platform does not find user. (Any COD Game)

This is a valid Activision account, (I tried a few more Activision accounts and they also did not work)
I of course can go the playstation route and retrieve the data that way, however the Activision un is more universal and reliable

Reproduction code:
import asyncio

from cod_api import API, platforms
async def main():
# initiating the API class
api = API()
api.login('haha')

# retrieving combat history
profile = await api.ColdWar.fullData(platforms.Activision, "ARKillsZombies#6873354") # returns data of type dict
# printing results to console
print(profile)

asyncio.run(main())

Console Output

{'status': 'error', 'data': {'type': 'com.activision.mt.common.stdtools.exceptions.NoStackTraceException', 'message': 'Not permitted: user not found'}}

Authentication fails (Platform: Activision)

To reproduce:

api = API()
api.login('<sso_token_goes_here>')
data = api.ModernWarfare2.fullData(gamertag="<username goes here>", platform=platforms.Activision)
return JsonResponse({"stats": data})

The above code is part of an API endpoint on my server that is invoked via GET. Testing it with Postman yields the following response:

{
    'status': 'error', 
    'data': {
        'type": 'com.activision.mt.common.stdtools.exceptions.NoStackTraceException', 
        'message': 'Error from datastore'
    }
}

Expected behavior
The above endpoint with the correct credentials (i.e SSO token) should yield a successful response.

Desktop (please complete the following information):

  • OS: Ubuntu 220.4 (Python3.10)
  • Browser: Chrome
  • Version 110.0.5481.77

Additional context
I have confirmed that I am using:

aiohttp.client_exceptions.ClientConnectorCertificateError

Program would not connect to CallOfDuty.com

To Reproduce
Steps to reproduce the behavior:
Script:
`from cod_api import API, platforms

api = API()

api.login(ID)

profile = api.Warzone.fullData(platforms.PSN, "mypsn") # returns data of type dict

printing results to console

print(profile)`

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

  • OS: [e.g. iOS]
  • Browser [e.g. chrome, safari]
  • Version [e.g. 22]

Smartphone (please complete the following information):

  • Device: [e.g. iPhone6]
  • OS: [e.g. iOS8.1]
  • Browser [e.g. stock browser, safari]
  • Version [e.g. 22]

Additional context
Add any other context about the problem here.

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.