├── .editorconfig ├── .gitattributes ├── .github └── workflows │ └── python-publish.yml ├── .gitignore ├── .idea ├── .gitignore ├── inspectionProfiles │ └── profiles_settings.xml ├── kickbase-api-python.iml ├── misc.xml ├── modules.xml └── vcs.xml ├── LICENSE ├── README.md ├── docs ├── .nojekyll ├── exceptions.html ├── index.html ├── kickbase.html └── models │ ├── base_model.html │ ├── feed_item.html │ ├── feed_item_comment.html │ ├── feed_meta.html │ ├── index.html │ ├── league_data.html │ ├── league_info.html │ ├── league_match_day_stats_data.html │ ├── league_match_day_user_stats.html │ ├── league_me.html │ ├── league_user_data.html │ ├── league_user_profile.html │ ├── league_user_profile_season_stats.html │ ├── league_user_season_stats.html │ ├── league_user_stats.html │ ├── lineup.html │ ├── market.html │ ├── market_player.html │ ├── market_player_offer.html │ ├── player.html │ ├── response │ ├── index.html │ └── league_stats_response.html │ └── user.html ├── kickbase_api ├── __init__.py ├── exceptions.py ├── kickbase.py └── models │ ├── __init__.py │ ├── _transforms.py │ ├── base_model.py │ ├── chat_item.py │ ├── feed_item.py │ ├── feed_item_comment.py │ ├── feed_meta.py │ ├── gift.py │ ├── league_data.py │ ├── league_info.py │ ├── league_match_day_stats_data.py │ ├── league_match_day_user_stats.py │ ├── league_me.py │ ├── league_user_data.py │ ├── league_user_profile.py │ ├── league_user_profile_season_stats.py │ ├── league_user_season_stats.py │ ├── league_user_stats.py │ ├── lineup.py │ ├── market.py │ ├── market_player.py │ ├── market_player_offer.py │ ├── player.py │ ├── response │ ├── __init__.py │ └── league_stats_response.py │ └── user.py ├── requirements.txt ├── setup.py └── tests ├── __init__.py ├── conftest.py ├── models └── __init__.py └── test_kickbase.py /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_style = space 5 | indent_size = 4 6 | end_of_line = lf 7 | charset = utf-8 8 | trim_trailing_whitespace = false 9 | insert_final_newline = false -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /.github/workflows/python-publish.yml: -------------------------------------------------------------------------------- 1 | # This workflows will upload a Python Package using Twine when a release is created 2 | # For more information see: https://help.github.com/en/actions/language-and-framework-guides/using-python-with-github-actions#publishing-to-package-registries 3 | 4 | name: Upload Python Package 5 | 6 | on: 7 | release: 8 | types: [created] 9 | 10 | jobs: 11 | deploy: 12 | 13 | runs-on: ubuntu-latest 14 | 15 | steps: 16 | - uses: actions/checkout@v2 17 | - name: Set up Python 18 | uses: actions/setup-python@v2 19 | with: 20 | python-version: '3.x' 21 | - name: Install dependencies 22 | run: | 23 | python -m pip install --upgrade pip 24 | pip install setuptools wheel twine 25 | - name: Build and publish 26 | env: 27 | TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }} 28 | TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }} 29 | run: | 30 | python setup.py sdist bdist_wheel 31 | twine upload dist/* 32 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | # Created by https://www.toptal.com/developers/gitignore/api/python,pycharm,venv 3 | # Edit at https://www.toptal.com/developers/gitignore?templates=python,pycharm,venv 4 | 5 | ### PyCharm ### 6 | # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider 7 | # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 8 | 9 | # User-specific stuff 10 | .idea/**/workspace.xml 11 | .idea/**/tasks.xml 12 | .idea/**/usage.statistics.xml 13 | .idea/**/dictionaries 14 | .idea/**/shelf 15 | 16 | # Generated files 17 | .idea/**/contentModel.xml 18 | 19 | # Sensitive or high-churn files 20 | .idea/**/dataSources/ 21 | .idea/**/dataSources.ids 22 | .idea/**/dataSources.local.xml 23 | .idea/**/sqlDataSources.xml 24 | .idea/**/dynamic.xml 25 | .idea/**/uiDesigner.xml 26 | .idea/**/dbnavigator.xml 27 | 28 | # Gradle 29 | .idea/**/gradle.xml 30 | .idea/**/libraries 31 | 32 | # Gradle and Maven with auto-import 33 | # When using Gradle or Maven with auto-import, you should exclude module files, 34 | # since they will be recreated, and may cause churn. Uncomment if using 35 | # auto-import. 36 | # .idea/artifacts 37 | # .idea/compiler.xml 38 | # .idea/jarRepositories.xml 39 | # .idea/modules.xml 40 | # .idea/*.iml 41 | # .idea/modules 42 | # *.iml 43 | # *.ipr 44 | 45 | # CMake 46 | cmake-build-*/ 47 | 48 | # Mongo Explorer plugin 49 | .idea/**/mongoSettings.xml 50 | 51 | # File-based project format 52 | *.iws 53 | 54 | # IntelliJ 55 | out/ 56 | 57 | # mpeltonen/sbt-idea plugin 58 | .idea_modules/ 59 | 60 | # JIRA plugin 61 | atlassian-ide-plugin.xml 62 | 63 | # Cursive Clojure plugin 64 | .idea/replstate.xml 65 | 66 | # Crashlytics plugin (for Android Studio and IntelliJ) 67 | com_crashlytics_export_strings.xml 68 | crashlytics.properties 69 | crashlytics-build.properties 70 | fabric.properties 71 | 72 | # Editor-based Rest Client 73 | .idea/httpRequests 74 | 75 | # Android studio 3.1+ serialized cache file 76 | .idea/caches/build_file_checksums.ser 77 | 78 | ### PyCharm Patch ### 79 | # Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721 80 | 81 | # *.iml 82 | # modules.xml 83 | # .idea/misc.xml 84 | # *.ipr 85 | 86 | # Sonarlint plugin 87 | # https://plugins.jetbrains.com/plugin/7973-sonarlint 88 | .idea/**/sonarlint/ 89 | 90 | # SonarQube Plugin 91 | # https://plugins.jetbrains.com/plugin/7238-sonarqube-community-plugin 92 | .idea/**/sonarIssues.xml 93 | 94 | # Markdown Navigator plugin 95 | # https://plugins.jetbrains.com/plugin/7896-markdown-navigator-enhanced 96 | .idea/**/markdown-navigator.xml 97 | .idea/**/markdown-navigator-enh.xml 98 | .idea/**/markdown-navigator/ 99 | 100 | # Cache file creation bug 101 | # See https://youtrack.jetbrains.com/issue/JBR-2257 102 | .idea/$CACHE_FILE$ 103 | 104 | # CodeStream plugin 105 | # https://plugins.jetbrains.com/plugin/12206-codestream 106 | .idea/codestream.xml 107 | 108 | ### Python ### 109 | # Byte-compiled / optimized / DLL files 110 | __pycache__/ 111 | *.py[cod] 112 | *$py.class 113 | 114 | # C extensions 115 | *.so 116 | 117 | # Distribution / packaging 118 | .Python 119 | build/ 120 | develop-eggs/ 121 | dist/ 122 | downloads/ 123 | eggs/ 124 | .eggs/ 125 | lib/ 126 | lib64/ 127 | parts/ 128 | sdist/ 129 | var/ 130 | wheels/ 131 | pip-wheel-metadata/ 132 | share/python-wheels/ 133 | *.egg-info/ 134 | .installed.cfg 135 | *.egg 136 | MANIFEST 137 | 138 | # PyInstaller 139 | # Usually these files are written by a python script from a template 140 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 141 | *.manifest 142 | *.spec 143 | 144 | # Installer logs 145 | pip-log.txt 146 | pip-delete-this-directory.txt 147 | 148 | # Unit test / coverage reports 149 | htmlcov/ 150 | .tox/ 151 | .nox/ 152 | .coverage 153 | .coverage.* 154 | .cache 155 | nosetests.xml 156 | coverage.xml 157 | *.cover 158 | *.py,cover 159 | .hypothesis/ 160 | .pytest_cache/ 161 | pytestdebug.log 162 | 163 | # Translations 164 | *.mo 165 | *.pot 166 | 167 | # Django stuff: 168 | *.log 169 | local_settings.py 170 | db.sqlite3 171 | db.sqlite3-journal 172 | 173 | # Flask stuff: 174 | instance/ 175 | .webassets-cache 176 | 177 | # Scrapy stuff: 178 | .scrapy 179 | 180 | # Sphinx documentation 181 | docs/_build/ 182 | docs/_build/ 183 | 184 | # PyBuilder 185 | target/ 186 | 187 | # Jupyter Notebook 188 | .ipynb_checkpoints 189 | 190 | # IPython 191 | profile_default/ 192 | ipython_config.py 193 | 194 | # pyenv 195 | .python-version 196 | 197 | # pipenv 198 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 199 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 200 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 201 | # install all needed dependencies. 202 | #Pipfile.lock 203 | 204 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow 205 | __pypackages__/ 206 | 207 | # Celery stuff 208 | celerybeat-schedule 209 | celerybeat.pid 210 | 211 | # SageMath parsed files 212 | *.sage.py 213 | 214 | # Environments 215 | .env 216 | .venv 217 | env/ 218 | venv/ 219 | ENV/ 220 | env.bak/ 221 | venv.bak/ 222 | 223 | # Spyder project settings 224 | .spyderproject 225 | .spyproject 226 | 227 | # Rope project settings 228 | .ropeproject 229 | 230 | # mkdocs documentation 231 | /site 232 | 233 | # mypy 234 | .mypy_cache/ 235 | .dmypy.json 236 | dmypy.json 237 | 238 | # Pyre type checker 239 | .pyre/ 240 | 241 | # pytype static type analyzer 242 | .pytype/ 243 | 244 | ### venv ### 245 | # Virtualenv 246 | # http://iamzed.com/2009/05/07/a-primer-on-virtualenv/ 247 | [Bb]in 248 | [Ii]nclude 249 | [Ll]ib 250 | [Ll]ib64 251 | [Ll]ocal 252 | [Ss]cripts 253 | pyvenv.cfg 254 | pip-selfcheck.json 255 | 256 | # End of https://www.toptal.com/developers/gitignore/api/python,pycharm,venv -------------------------------------------------------------------------------- /.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | # Datasource local storage ignored files 5 | /../../../../:\kickbase\kickbase-python-api\.idea/dataSources/ 6 | /dataSources.local.xml 7 | # Editor-based HTTP Client requests 8 | /httpRequests/ 9 | -------------------------------------------------------------------------------- /.idea/inspectionProfiles/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | -------------------------------------------------------------------------------- /.idea/kickbase-api-python.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 kevinskyba 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Kickbase_API 2 | [Kickbase](https://www.kickbase.com/) API for Python 3. This work is unofficial and not related to kickbase in any way. All of this was done for scientific reasons only and you should not use it for anything else but for your personal learning! 3 | 4 | ## Installation 5 | - From pypi: 6 | `pip3 install kickbase_api` 7 | 8 | ## Requirements 9 | - [requests](https://github.com/kennethreitz/requests) 10 | 11 | ## Usage 12 | ```python 13 | from kickbase_api.kickbase import Kickbase 14 | kickbase = Kickbase() 15 | user, leagues = kickbase.login("username", "password") 16 | ``` 17 | 18 | ## Docs 19 | The docs for this library can be found [here](https://kevinskyba.github.io/kickbase-api-python/). 20 | 21 | ## API 22 | This library is based on [Kickbase API Doc](https://github.com/kevinskyba/kickbase-api-doc). 23 | 24 | ## License 25 | 26 | [MIT License](LICENSE.md) -------------------------------------------------------------------------------- /docs/.nojekyll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kevinskyba/kickbase-api-python/b444e25e265a6e586824d404f7e23da718f9ef4a/docs/.nojekyll -------------------------------------------------------------------------------- /docs/exceptions.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | kickbase_api.exceptions API documentation 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 |
21 |
22 |

Module kickbase_api.exceptions

23 |
24 |
25 |
26 | 27 | Expand source code 28 | 29 |
class KickbaseException(Exception):
 30 |     pass
 31 | 
 32 | class KickbaseLoginException(Exception):
 33 |     pass
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |

Classes

44 |
45 |
46 | class KickbaseException 47 | (...) 48 |
49 |
50 |

Common base class for all non-exit exceptions.

51 |
52 | 53 | Expand source code 54 | 55 |
class KickbaseException(Exception):
 56 |     pass
57 |
58 |

Ancestors

59 |
    60 |
  • builtins.Exception
  • 61 |
  • builtins.BaseException
  • 62 |
63 |
64 |
65 | class KickbaseLoginException 66 | (...) 67 |
68 |
69 |

Common base class for all non-exit exceptions.

70 |
71 | 72 | Expand source code 73 | 74 |
class KickbaseLoginException(Exception):
 75 |     pass
76 |
77 |

Ancestors

78 |
    79 |
  • builtins.Exception
  • 80 |
  • builtins.BaseException
  • 81 |
82 |
83 |
84 |
85 |
86 | 109 |
110 | 113 | 114 | -------------------------------------------------------------------------------- /docs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | kickbase_api API documentation 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 |
21 |
22 |

Package kickbase_api

23 |
24 |
25 |
26 |
27 |

Sub-modules

28 |
29 |
kickbase_api.exceptions
30 |
31 |
32 |
33 |
kickbase_api.kickbase
34 |
35 |
36 |
37 |
kickbase_api.models
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 | 65 |
66 | 69 | 70 | -------------------------------------------------------------------------------- /docs/models/base_model.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | kickbase_api.models.base_model API documentation 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 |
21 |
22 |

Module kickbase_api.models.base_model

23 |
24 |
25 |
26 | 27 | Expand source code 28 | 29 |
class BaseModel:
 30 |     _json_mapping = {
 31 |     }
 32 | 
 33 |     _json_transform = {
 34 |     }
 35 | 
 36 |     def __init__(self, d: dict):
 37 |         for key in d.keys():
 38 |             value = d[key]
 39 | 
 40 |             # Transform if necessary
 41 |             if key in self._json_transform:
 42 |                 value = self._json_transform[key](value)
 43 | 
 44 |             if key in self._json_mapping.keys():
 45 |                 setattr(self, self._json_mapping[key], value)
 46 |             setattr(self, key, value)
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |

Classes

57 |
58 |
59 | class BaseModel 60 | (d: dict) 61 |
62 |
63 |
64 |
65 | 66 | Expand source code 67 | 68 |
class BaseModel:
 69 |     _json_mapping = {
 70 |     }
 71 | 
 72 |     _json_transform = {
 73 |     }
 74 | 
 75 |     def __init__(self, d: dict):
 76 |         for key in d.keys():
 77 |             value = d[key]
 78 | 
 79 |             # Transform if necessary
 80 |             if key in self._json_transform:
 81 |                 value = self._json_transform[key](value)
 82 | 
 83 |             if key in self._json_mapping.keys():
 84 |                 setattr(self, self._json_mapping[key], value)
 85 |             setattr(self, key, value)
86 |
87 |

Subclasses

88 | 109 |
110 |
111 |
112 |
113 | 133 |
134 | 137 | 138 | -------------------------------------------------------------------------------- /docs/models/feed_item_comment.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | kickbase_api.models.feed_item_comment API documentation 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 |
21 |
22 |

Module kickbase_api.models.feed_item_comment

23 |
24 |
25 |
26 | 27 | Expand source code 28 | 29 |
from datetime import datetime
 30 | 
 31 | from kickbase_api.models._transforms import parse_date
 32 | from kickbase_api.models.base_model import BaseModel
 33 | 
 34 | 
 35 | class FeedItemComment(BaseModel):
 36 |     comment: str = None
 37 |     date: datetime = None
 38 |     user_id: str = None
 39 |     user_name: str = None
 40 |     user_profile_path: str = None
 41 | 
 42 |     def __init__(self, d: dict):
 43 |         self._json_transform = {
 44 |             "date": parse_date
 45 |         }
 46 |         self._json_mapping = {
 47 |             "userId": "user_id",
 48 |             "userName": "user_name",
 49 |             "userProfileUrl": "user_profile_path",
 50 |         }
 51 |         super().__init__(d)
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |

Classes

62 |
63 |
64 | class FeedItemComment 65 | (d: dict) 66 |
67 |
68 |
69 |
70 | 71 | Expand source code 72 | 73 |
class FeedItemComment(BaseModel):
 74 |     comment: str = None
 75 |     date: datetime = None
 76 |     user_id: str = None
 77 |     user_name: str = None
 78 |     user_profile_path: str = None
 79 | 
 80 |     def __init__(self, d: dict):
 81 |         self._json_transform = {
 82 |             "date": parse_date
 83 |         }
 84 |         self._json_mapping = {
 85 |             "userId": "user_id",
 86 |             "userName": "user_name",
 87 |             "userProfileUrl": "user_profile_path",
 88 |         }
 89 |         super().__init__(d)
90 |
91 |

Ancestors

92 | 95 |

Class variables

96 |
97 |
var comment : str
98 |
99 |
100 |
101 |
var date : datetime.datetime
102 |
103 |
104 |
105 |
var user_id : str
106 |
107 |
108 |
109 |
var user_name : str
110 |
111 |
112 |
113 |
var user_profile_path : str
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 | 149 |
150 | 153 | 154 | -------------------------------------------------------------------------------- /docs/models/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | kickbase_api.models API documentation 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 |
21 |
22 |

Module kickbase_api.models

23 |
24 |
25 |
26 |
27 |

Sub-modules

28 |
29 |
kickbase_api.models.base_model
30 |
31 |
32 |
33 |
kickbase_api.models.feed_item
34 |
35 |
36 |
37 |
kickbase_api.models.feed_item_comment
38 |
39 |
40 |
41 |
kickbase_api.models.feed_meta
42 |
43 |
44 |
45 |
kickbase_api.models.league_data
46 |
47 |
48 |
49 |
kickbase_api.models.league_info
50 |
51 |
52 |
53 |
kickbase_api.models.league_match_day_stats_data
54 |
55 |
56 |
57 |
kickbase_api.models.league_match_day_user_stats
58 |
59 |
60 |
61 |
kickbase_api.models.league_me
62 |
63 |
64 |
65 |
kickbase_api.models.league_user_data
66 |
67 |
68 |
69 |
kickbase_api.models.league_user_profile
70 |
71 |
72 |
73 |
kickbase_api.models.league_user_profile_season_stats
74 |
75 |
76 |
77 |
kickbase_api.models.league_user_season_stats
78 |
79 |
80 |
81 |
kickbase_api.models.league_user_stats
82 |
83 |
84 |
85 |
kickbase_api.models.lineup
86 |
87 |
88 |
89 |
kickbase_api.models.market
90 |
91 |
92 |
93 |
kickbase_api.models.market_player
94 |
95 |
96 |
97 |
kickbase_api.models.market_player_offer
98 |
99 |
100 |
101 |
kickbase_api.models.player
102 |
103 |
104 |
105 |
kickbase_api.models.response
106 |
107 |
108 |
109 |
kickbase_api.models.user
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 | 160 |
161 | 164 | 165 | -------------------------------------------------------------------------------- /docs/models/league_info.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | kickbase_api.models.league_info API documentation 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 |
21 |
22 |

Module kickbase_api.models.league_info

23 |
24 |
25 |
26 | 27 | Expand source code 28 | 29 |
from kickbase_api.models.base_model import BaseModel
 30 | 
 31 | 
 32 | class LeagueInfo(BaseModel):
 33 |     activity_index: float = None
 34 |     total_transfers: int = None
 35 |     active_users: int = None
 36 |     max_users: int = None
 37 |     average_points: int = None
 38 |     
 39 |     rs: int = None
 40 |     us: int = None
 41 | 
 42 |     def __init__(self, d: dict):
 43 |         self._json_transform = {
 44 |         }
 45 |         self._json_mapping = {
 46 |             "ai": "activity_index",
 47 |             "t": "total_transfers",
 48 |             "au": "active_users",
 49 |             "mu": "max_users",
 50 |             "ap": "average_points"
 51 |         }
 52 |         
 53 |         super().__init__(d)
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |

Classes

64 |
65 |
66 | class LeagueInfo 67 | (d: dict) 68 |
69 |
70 |
71 |
72 | 73 | Expand source code 74 | 75 |
class LeagueInfo(BaseModel):
 76 |     activity_index: float = None
 77 |     total_transfers: int = None
 78 |     active_users: int = None
 79 |     max_users: int = None
 80 |     average_points: int = None
 81 |     
 82 |     rs: int = None
 83 |     us: int = None
 84 | 
 85 |     def __init__(self, d: dict):
 86 |         self._json_transform = {
 87 |         }
 88 |         self._json_mapping = {
 89 |             "ai": "activity_index",
 90 |             "t": "total_transfers",
 91 |             "au": "active_users",
 92 |             "mu": "max_users",
 93 |             "ap": "average_points"
 94 |         }
 95 |         
 96 |         super().__init__(d)
97 |
98 |

Ancestors

99 | 102 |

Class variables

103 |
104 |
var active_users : int
105 |
106 |
107 |
108 |
var activity_index : float
109 |
110 |
111 |
112 |
var average_points : int
113 |
114 |
115 |
116 |
var max_users : int
117 |
118 |
119 |
120 |
var rs : int
121 |
122 |
123 |
124 |
var total_transfers : int
125 |
126 |
127 |
128 |
var us : int
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 | 166 |
167 | 170 | 171 | -------------------------------------------------------------------------------- /docs/models/league_match_day_user_stats.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | kickbase_api.models.league_match_day_user_stats API documentation 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 |
21 |
22 |

Module kickbase_api.models.league_match_day_user_stats

23 |
24 |
25 |
26 | 27 | Expand source code 28 | 29 |
from datetime import datetime
 30 | 
 31 | from kickbase_api.models._transforms import parse_date, parse_key_value_array_to_dict
 32 | from kickbase_api.models.base_model import BaseModel
 33 | 
 34 | 
 35 | class LeagueMatchDayUserStats(BaseModel):
 36 |     season_id: str = None
 37 |     day: int = None
 38 |     placement: int = None
 39 |     points: int = None
 40 |    
 41 |     def __init__(self, d: dict):
 42 |         self._json_transform = {
 43 |         }
 44 |         self._json_mapping = {
 45 |             "s": "season_id",
 46 |             "p": "placement",
 47 |             "pt": "points"
 48 |         }
 49 |         
 50 |         super().__init__(d)
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |

Classes

61 |
62 |
63 | class LeagueMatchDayUserStats 64 | (d: dict) 65 |
66 |
67 |
68 |
69 | 70 | Expand source code 71 | 72 |
class LeagueMatchDayUserStats(BaseModel):
 73 |     season_id: str = None
 74 |     day: int = None
 75 |     placement: int = None
 76 |     points: int = None
 77 |    
 78 |     def __init__(self, d: dict):
 79 |         self._json_transform = {
 80 |         }
 81 |         self._json_mapping = {
 82 |             "s": "season_id",
 83 |             "p": "placement",
 84 |             "pt": "points"
 85 |         }
 86 |         
 87 |         super().__init__(d)
88 |
89 |

Ancestors

90 | 93 |

Class variables

94 |
95 |
var day : int
96 |
97 |
98 |
99 |
var placement : int
100 |
101 |
102 |
103 |
var points : int
104 |
105 |
106 |
107 |
var season_id : str
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 | 142 |
143 | 146 | 147 | -------------------------------------------------------------------------------- /docs/models/league_me.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | kickbase_api.models.league_me API documentation 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 |
21 |
22 |

Module kickbase_api.models.league_me

23 |
24 |
25 |
26 | 27 | Expand source code 28 | 29 |
from datetime import datetime
 30 | 
 31 | from kickbase_api.models._transforms import parse_date
 32 | from kickbase_api.models.base_model import BaseModel
 33 | 
 34 | 
 35 | class LeagueMe(BaseModel):
 36 |     budget: float = None
 37 |     team_value: float = None
 38 |     placement: int = None
 39 |     points: int = None
 40 |     ttm: int = None
 41 |     cmd: int = None
 42 |     flags: int = None
 43 |     se: bool = None
 44 |     csid: int = None
 45 |     nt: bool = None
 46 |     ntv: float = None
 47 |     nb: float = None
 48 |     ga: bool = None
 49 |     un: int = None
 50 |     
 51 |     def __init__(self, d: dict):
 52 |         self._json_transform = {
 53 |         }
 54 |         self._json_mapping = {
 55 |             "teamValue": "team_value"
 56 |         }
 57 |         
 58 |         super().__init__(d)
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |

Classes

69 |
70 |
71 | class LeagueMe 72 | (d: dict) 73 |
74 |
75 |
76 |
77 | 78 | Expand source code 79 | 80 |
class LeagueMe(BaseModel):
 81 |     budget: float = None
 82 |     team_value: float = None
 83 |     placement: int = None
 84 |     points: int = None
 85 |     ttm: int = None
 86 |     cmd: int = None
 87 |     flags: int = None
 88 |     se: bool = None
 89 |     csid: int = None
 90 |     nt: bool = None
 91 |     ntv: float = None
 92 |     nb: float = None
 93 |     ga: bool = None
 94 |     un: int = None
 95 |     
 96 |     def __init__(self, d: dict):
 97 |         self._json_transform = {
 98 |         }
 99 |         self._json_mapping = {
100 |             "teamValue": "team_value"
101 |         }
102 |         
103 |         super().__init__(d)
104 |
105 |

Ancestors

106 | 109 |

Class variables

110 |
111 |
var budget : float
112 |
113 |
114 |
115 |
var cmd : int
116 |
117 |
118 |
119 |
var csid : int
120 |
121 |
122 |
123 |
var flags : int
124 |
125 |
126 |
127 |
var ga : bool
128 |
129 |
130 |
131 |
var nb : float
132 |
133 |
134 |
135 |
var nt : bool
136 |
137 |
138 |
139 |
var ntv : float
140 |
141 |
142 |
143 |
var placement : int
144 |
145 |
146 |
147 |
var points : int
148 |
149 |
150 |
151 |
var se : bool
152 |
153 |
154 |
155 |
var team_value : float
156 |
157 |
158 |
159 |
var ttm : int
160 |
161 |
162 |
163 |
var un : int
164 |
165 |
166 |
167 |
168 |
169 |
170 |
171 |
172 | 208 |
209 | 212 | 213 | -------------------------------------------------------------------------------- /docs/models/league_user_data.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | kickbase_api.models.league_user_data API documentation 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 |
21 |
22 |

Module kickbase_api.models.league_user_data

23 |
24 |
25 |
26 | 27 | Expand source code 28 | 29 |
from datetime import datetime
 30 | 
 31 | from kickbase_api.models._transforms import parse_date
 32 | from kickbase_api.models.base_model import BaseModel
 33 | 
 34 | 
 35 | class LeagueUserData(BaseModel):
 36 |     id: str = None
 37 |     email: str = None
 38 |     name: str = None
 39 |     profile_image_path: str = None
 40 |     cover_image_path: str = None
 41 |     status: int = None
 42 |     perms: [int] = None
 43 |     
 44 |     def __init__(self, d: dict):
 45 |         self._json_transform = {
 46 |         }
 47 |         self._json_mapping = {
 48 |             "profile": "profile_image_path",
 49 |             "cover": "cover_image_path"
 50 |         }
 51 |         
 52 |         super().__init__(d)
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |

Classes

63 |
64 |
65 | class LeagueUserData 66 | (d: dict) 67 |
68 |
69 |
70 |
71 | 72 | Expand source code 73 | 74 |
class LeagueUserData(BaseModel):
 75 |     id: str = None
 76 |     email: str = None
 77 |     name: str = None
 78 |     profile_image_path: str = None
 79 |     cover_image_path: str = None
 80 |     status: int = None
 81 |     perms: [int] = None
 82 |     
 83 |     def __init__(self, d: dict):
 84 |         self._json_transform = {
 85 |         }
 86 |         self._json_mapping = {
 87 |             "profile": "profile_image_path",
 88 |             "cover": "cover_image_path"
 89 |         }
 90 |         
 91 |         super().__init__(d)
92 |
93 |

Ancestors

94 | 97 |

Class variables

98 |
99 |
var cover_image_path : str
100 |
101 |
102 |
103 |
var email : str
104 |
105 |
106 |
107 |
var id : str
108 |
109 |
110 |
111 |
var name : str
112 |
113 |
114 |
115 |
var perms : []
116 |
117 |
118 |
119 |
var profile_image_path : str
120 |
121 |
122 |
123 |
var status : int
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 | 161 |
162 | 165 | 166 | -------------------------------------------------------------------------------- /docs/models/league_user_profile_season_stats.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | kickbase_api.models.league_user_profile_season_stats API documentation 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 |
21 |
22 |

Module kickbase_api.models.league_user_profile_season_stats

23 |
24 |
25 |
26 | 27 | Expand source code 28 | 29 |
from datetime import datetime
 30 | 
 31 | from kickbase_api.models._transforms import parse_date, parse_key_value_array_to_dict
 32 | from kickbase_api.models.base_model import BaseModel
 33 | from kickbase_api.models.league_match_day_user_stats import LeagueMatchDayUserStats
 34 | 
 35 | 
 36 | class LeagueUserProfileSeasonStats(BaseModel):
 37 |     season_id: str = None
 38 |     season: str = None
 39 |     
 40 |     points: int = None
 41 |     average_points: int = None
 42 |     max_points: int = None    
 43 |     wins: int = None
 44 |     
 45 |     match_days: [LeagueMatchDayUserStats] = None
 46 |    
 47 |     def __init__(self, d: dict):
 48 |         self._json_transform = {
 49 |             "matchDays": lambda v: [LeagueMatchDayUserStats(_d) for _d in v]
 50 |         }
 51 |         self._json_mapping = {
 52 |             "seasonId": "season_id",
 53 |             "averagePoints": "average_points",
 54 |             "maxPoints": "max_points",
 55 |             "matchDays": "match_days"
 56 |         }
 57 |         
 58 |         super().__init__(d)
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |

Classes

69 |
70 |
71 | class LeagueUserProfileSeasonStats 72 | (d: dict) 73 |
74 |
75 |
76 |
77 | 78 | Expand source code 79 | 80 |
class LeagueUserProfileSeasonStats(BaseModel):
 81 |     season_id: str = None
 82 |     season: str = None
 83 |     
 84 |     points: int = None
 85 |     average_points: int = None
 86 |     max_points: int = None    
 87 |     wins: int = None
 88 |     
 89 |     match_days: [LeagueMatchDayUserStats] = None
 90 |    
 91 |     def __init__(self, d: dict):
 92 |         self._json_transform = {
 93 |             "matchDays": lambda v: [LeagueMatchDayUserStats(_d) for _d in v]
 94 |         }
 95 |         self._json_mapping = {
 96 |             "seasonId": "season_id",
 97 |             "averagePoints": "average_points",
 98 |             "maxPoints": "max_points",
 99 |             "matchDays": "match_days"
100 |         }
101 |         
102 |         super().__init__(d)
103 |
104 |

Ancestors

105 | 108 |

Class variables

109 |
110 |
var average_points : int
111 |
112 |
113 |
114 |
var match_days : [LeagueMatchDayUserStats'>]
115 |
116 |
117 |
118 |
var max_points : int
119 |
120 |
121 |
122 |
var points : int
123 |
124 |
125 |
126 |
var season : str
127 |
128 |
129 |
130 |
var season_id : str
131 |
132 |
133 |
134 |
var wins : int
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 | 172 |
173 | 176 | 177 | -------------------------------------------------------------------------------- /docs/models/league_user_stats.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | kickbase_api.models.league_user_stats API documentation 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 |
21 |
22 |

Module kickbase_api.models.league_user_stats

23 |
24 |
25 |
26 | 27 | Expand source code 28 | 29 |
from datetime import datetime
 30 | 
 31 | from kickbase_api.models._transforms import parse_date, parse_key_value_array_to_dict
 32 | from kickbase_api.models.base_model import BaseModel
 33 | from kickbase_api.models.league_user_season_stats import LeagueUserSeasonStats
 34 | 
 35 | 
 36 | class LeagueUserStats(BaseModel):
 37 |     name: str = None
 38 |     profile_image_path: str = None
 39 |     cover_image_path: str = None
 40 |     flags: int = None
 41 |     placement: int = None
 42 |     points: int = None
 43 |     team_value: float = None
 44 |     
 45 |     seasons: [LeagueUserSeasonStats] = None
 46 |     team_values: {datetime: float}
 47 |     
 48 |     def __init__(self, d: dict):
 49 |         self._json_transform = {
 50 |             "teamValues": parse_key_value_array_to_dict(lambda o: parse_date(o["d"]), lambda o: o["v"]),
 51 |             "seasons": lambda v: [LeagueUserSeasonStats(_d) for _d in v]
 52 |         }
 53 |         self._json_mapping = {
 54 |             "profileUrl": "profile_image_path",
 55 |             "coverUrl": "cover_image_path",
 56 |             "teamValue": "team_value",
 57 |             "teamValues": "team_values"
 58 |         }
 59 |         
 60 |         super().__init__(d)
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |

Classes

71 |
72 |
73 | class LeagueUserStats 74 | (d: dict) 75 |
76 |
77 |
78 |
79 | 80 | Expand source code 81 | 82 |
class LeagueUserStats(BaseModel):
 83 |     name: str = None
 84 |     profile_image_path: str = None
 85 |     cover_image_path: str = None
 86 |     flags: int = None
 87 |     placement: int = None
 88 |     points: int = None
 89 |     team_value: float = None
 90 |     
 91 |     seasons: [LeagueUserSeasonStats] = None
 92 |     team_values: {datetime: float}
 93 |     
 94 |     def __init__(self, d: dict):
 95 |         self._json_transform = {
 96 |             "teamValues": parse_key_value_array_to_dict(lambda o: parse_date(o["d"]), lambda o: o["v"]),
 97 |             "seasons": lambda v: [LeagueUserSeasonStats(_d) for _d in v]
 98 |         }
 99 |         self._json_mapping = {
100 |             "profileUrl": "profile_image_path",
101 |             "coverUrl": "cover_image_path",
102 |             "teamValue": "team_value",
103 |             "teamValues": "team_values"
104 |         }
105 |         
106 |         super().__init__(d)
107 |
108 |

Ancestors

109 | 112 |

Class variables

113 |
114 |
var cover_image_path : str
115 |
116 |
117 |
118 |
var flags : int
119 |
120 |
121 |
122 |
var name : str
123 |
124 |
125 |
126 |
var placement : int
127 |
128 |
129 |
130 |
var points : int
131 |
132 |
133 |
134 |
var profile_image_path : str
135 |
136 |
137 |
138 |
var seasons : [LeagueUserSeasonStats'>]
139 |
140 |
141 |
142 |
var team_value : float
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 | 181 |
182 | 185 | 186 | -------------------------------------------------------------------------------- /docs/models/lineup.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | kickbase_api.models.lineup API documentation 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 |
21 |
22 |

Module kickbase_api.models.lineup

23 |
24 |
25 |
26 | 27 | Expand source code 28 | 29 |
from kickbase_api.models.base_model import BaseModel
 30 | 
 31 | 
 32 | class LineUp(BaseModel):
 33 |     type: str = None
 34 |     players: [str] = None
 35 | 
 36 |     def __init__(self, d: dict):
 37 |         self._json_transform = {
 38 |         }
 39 |         self._json_mapping = {
 40 |         }
 41 |         super().__init__(d)
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |

Classes

52 |
53 |
54 | class LineUp 55 | (d: dict) 56 |
57 |
58 |
59 |
60 | 61 | Expand source code 62 | 63 |
class LineUp(BaseModel):
 64 |     type: str = None
 65 |     players: [str] = None
 66 | 
 67 |     def __init__(self, d: dict):
 68 |         self._json_transform = {
 69 |         }
 70 |         self._json_mapping = {
 71 |         }
 72 |         super().__init__(d)
73 |
74 |

Ancestors

75 | 78 |

Class variables

79 |
80 |
var players : []
81 |
82 |
83 |
84 |
var type : str
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 | 117 |
118 | 121 | 122 | -------------------------------------------------------------------------------- /docs/models/market.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | kickbase_api.models.market API documentation 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 |
21 |
22 |

Module kickbase_api.models.market

23 |
24 |
25 |
26 | 27 | Expand source code 28 | 29 |
from datetime import datetime
 30 | from enum import Enum
 31 | 
 32 | from kickbase_api.models._transforms import parse_date
 33 | from kickbase_api.models.base_model import BaseModel
 34 | from kickbase_api.models.feed_meta import FeedMeta
 35 | from kickbase_api.models.market_player import MarketPlayer
 36 | from kickbase_api.models.market_player_offer import MarketPlayerOffer
 37 | from kickbase_api.models.player import Player, _map_player_position, _map_player_status, PlayerPosition, PlayerStatus
 38 | 
 39 | 
 40 | class Market(BaseModel):
 41 |     closed: bool = None
 42 |     players: [MarketPlayer] = None
 43 |     
 44 |     def __init__(self, d: dict):
 45 |         self._json_transform = {
 46 |             "players": lambda v: [MarketPlayer(v_) for v_ in v]
 47 |         }
 48 |         self._json_mapping = {
 49 |             "c": "closed"
 50 |         }
 51 |         super().__init__(d)
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |

Classes

62 |
63 |
64 | class Market 65 | (d: dict) 66 |
67 |
68 |
69 |
70 | 71 | Expand source code 72 | 73 |
class Market(BaseModel):
 74 |     closed: bool = None
 75 |     players: [MarketPlayer] = None
 76 |     
 77 |     def __init__(self, d: dict):
 78 |         self._json_transform = {
 79 |             "players": lambda v: [MarketPlayer(v_) for v_ in v]
 80 |         }
 81 |         self._json_mapping = {
 82 |             "c": "closed"
 83 |         }
 84 |         super().__init__(d)
85 |
86 |

Ancestors

87 | 90 |

Class variables

91 |
92 |
var closed : bool
93 |
94 |
95 |
96 |
var players : [MarketPlayer'>]
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 | 129 |
130 | 133 | 134 | -------------------------------------------------------------------------------- /docs/models/market_player_offer.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | kickbase_api.models.market_player_offer API documentation 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 |
21 |
22 |

Module kickbase_api.models.market_player_offer

23 |
24 |
25 |
26 | 27 | Expand source code 28 | 29 |
from datetime import datetime
 30 | 
 31 | from kickbase_api.models._transforms import parse_date
 32 | from kickbase_api.models.base_model import BaseModel
 33 | 
 34 | 
 35 | class MarketPlayerOffer(BaseModel):
 36 |     id: str = None
 37 |     price: int = None
 38 |     date: datetime = None
 39 |     valid_until_date: datetime = None
 40 | 
 41 |     def __init__(self, d: dict):
 42 |         self._json_transform = {
 43 |             "date": parse_date,
 44 |             "validUntilDate": parse_date
 45 |         }
 46 |         self._json_mapping = {
 47 |             "validUntilDate": "valid_until_date"
 48 |         }
 49 |         super().__init__(d)
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |

Classes

60 |
61 |
62 | class MarketPlayerOffer 63 | (d: dict) 64 |
65 |
66 |
67 |
68 | 69 | Expand source code 70 | 71 |
class MarketPlayerOffer(BaseModel):
 72 |     id: str = None
 73 |     price: int = None
 74 |     date: datetime = None
 75 |     valid_until_date: datetime = None
 76 | 
 77 |     def __init__(self, d: dict):
 78 |         self._json_transform = {
 79 |             "date": parse_date,
 80 |             "validUntilDate": parse_date
 81 |         }
 82 |         self._json_mapping = {
 83 |             "validUntilDate": "valid_until_date"
 84 |         }
 85 |         super().__init__(d)
86 |
87 |

Ancestors

88 | 91 |

Class variables

92 |
93 |
var date : datetime.datetime
94 |
95 |
96 |
97 |
var id : str
98 |
99 |
100 |
101 |
var price : int
102 |
103 |
104 |
105 |
var valid_until_date : datetime.datetime
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 | 140 |
141 | 144 | 145 | -------------------------------------------------------------------------------- /docs/models/response/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | kickbase_api.models.response API documentation 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 |
21 |
22 |

Module kickbase_api.models.response

23 |
24 |
25 |
26 |
27 |

Sub-modules

28 |
29 |
kickbase_api.models.response.league_stats_response
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 | 60 |
61 | 64 | 65 | -------------------------------------------------------------------------------- /docs/models/response/league_stats_response.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | kickbase_api.models.response.league_stats_response API documentation 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 |
21 |
22 |

Module kickbase_api.models.response.league_stats_response

23 |
24 |
25 |
26 | 27 | Expand source code 28 | 29 |
from kickbase_api.models.league_match_day_stats_data import LeagueMatchDayStatsData
 30 | 
 31 | 
 32 | class LeagueStatsResponse:
 33 |     
 34 |     current_day: int = None
 35 |     match_days: {int: [LeagueMatchDayStatsData]} = {}
 36 | 
 37 |     def __init__(self, d: dict):
 38 |         self.current_day = d["currentDay"]
 39 |         for match_day in d["matchDays"]:
 40 |             self.match_days[match_day["day"]] = [LeagueMatchDayStatsData(_d) for _d in match_day["users"]]
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |

Classes

51 |
52 |
53 | class LeagueStatsResponse 54 | (d: dict) 55 |
56 |
57 |
58 |
59 | 60 | Expand source code 61 | 62 |
class LeagueStatsResponse:
 63 |     
 64 |     current_day: int = None
 65 |     match_days: {int: [LeagueMatchDayStatsData]} = {}
 66 | 
 67 |     def __init__(self, d: dict):
 68 |         self.current_day = d["currentDay"]
 69 |         for match_day in d["matchDays"]:
 70 |             self.match_days[match_day["day"]] = [LeagueMatchDayStatsData(_d) for _d in match_day["users"]]
71 |
72 |

Class variables

73 |
74 |
var current_day : int
75 |
76 |
77 |
78 |
var match_days : {: [LeagueMatchDayStatsData'>]}
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 | 111 |
112 | 115 | 116 | -------------------------------------------------------------------------------- /docs/models/user.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | kickbase_api.models.user API documentation 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 |
21 |
22 |

Module kickbase_api.models.user

23 |
24 |
25 |
26 | 27 | Expand source code 28 | 29 |
from kickbase_api.models.base_model import BaseModel
 30 | 
 31 | 
 32 | class User(BaseModel):
 33 |     id: str = None
 34 |     email: str = None
 35 |     name: str = None
 36 |     notifications: int = None
 37 |     profile_image_path: str = None
 38 |     
 39 |     def __init__(self, d: dict):
 40 |         self._json_mapping = {
 41 |             "profile": "profile_image_path"
 42 |         }
 43 |         super().__init__(d)
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |

Classes

54 |
55 |
56 | class User 57 | (d: dict) 58 |
59 |
60 |
61 |
62 | 63 | Expand source code 64 | 65 |
class User(BaseModel):
 66 |     id: str = None
 67 |     email: str = None
 68 |     name: str = None
 69 |     notifications: int = None
 70 |     profile_image_path: str = None
 71 |     
 72 |     def __init__(self, d: dict):
 73 |         self._json_mapping = {
 74 |             "profile": "profile_image_path"
 75 |         }
 76 |         super().__init__(d)
77 |
78 |

Ancestors

79 | 82 |

Class variables

83 |
84 |
var email : str
85 |
86 |
87 |
88 |
var id : str
89 |
90 |
91 |
92 |
var name : str
93 |
94 |
95 |
96 |
var notifications : int
97 |
98 |
99 |
100 |
var profile_image_path : str
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | 136 |
137 | 140 | 141 | -------------------------------------------------------------------------------- /kickbase_api/__init__.py: -------------------------------------------------------------------------------- 1 | __version__ = "0.0.8" 2 | -------------------------------------------------------------------------------- /kickbase_api/exceptions.py: -------------------------------------------------------------------------------- 1 | 2 | class KickbaseException(Exception): 3 | pass 4 | 5 | class KickbaseLoginException(Exception): 6 | pass 7 | -------------------------------------------------------------------------------- /kickbase_api/models/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kevinskyba/kickbase-api-python/b444e25e265a6e586824d404f7e23da718f9ef4a/kickbase_api/models/__init__.py -------------------------------------------------------------------------------- /kickbase_api/models/_transforms.py: -------------------------------------------------------------------------------- 1 | from array import array 2 | from datetime import datetime 3 | from typing import Callable 4 | 5 | 6 | def parse_date(s: str) -> datetime: 7 | try: 8 | return datetime.strptime(s, "%Y-%m-%dT%H:%M:%S%z") 9 | except: 10 | return datetime.strptime(s+"+0000", "%Y-%m-%dT%H:%M:%S%z") 11 | 12 | 13 | def date_to_string(d: datetime) -> str: 14 | return d.strftime("%Y-%m-%dT%H:%M:%S%z") 15 | 16 | 17 | def parse_key_value_array_to_dict(key: Callable[[array], any], value: Callable[[array], any]): 18 | def _int(a: []) -> dict: 19 | ret = {} 20 | for v in a: 21 | ret[key(v)] = value(v) 22 | return ret 23 | return _int 24 | -------------------------------------------------------------------------------- /kickbase_api/models/base_model.py: -------------------------------------------------------------------------------- 1 | class BaseModel: 2 | _json_mapping = { 3 | } 4 | 5 | _json_transform = { 6 | } 7 | 8 | def __init__(self, d: dict = {}): 9 | for key in d.keys(): 10 | value = d[key] 11 | 12 | # Transform if necessary 13 | if key in self._json_transform: 14 | value = self._json_transform[key](value) 15 | 16 | if key in self._json_mapping.keys(): 17 | setattr(self, self._json_mapping[key], value) 18 | setattr(self, key, value) 19 | -------------------------------------------------------------------------------- /kickbase_api/models/chat_item.py: -------------------------------------------------------------------------------- 1 | from datetime import datetime 2 | 3 | from kickbase_api.models._transforms import parse_date 4 | 5 | 6 | class ChatItem: 7 | id: str = None 8 | league_id: str = None 9 | message: str = None 10 | date: datetime = None 11 | user_id: str = None 12 | username: str = None 13 | seen_by: [str] = [] 14 | 15 | def __init__(self, d: dict = {}): 16 | if "name" in d: 17 | self.id = d["name"] 18 | if "fields" in d: 19 | fields = d["fields"] 20 | if "leagueId" in fields: 21 | self.league_id = fields["leagueId"]["stringValue"] 22 | if "message" in fields: 23 | self.message = fields["message"]["stringValue"] 24 | if "date" in fields: 25 | self.date = parse_date(fields["date"]["stringValue"]) 26 | if "userId" in fields: 27 | self.user_id = fields["userId"]["stringValue"] 28 | if "username" in fields: 29 | self.username = fields["username"]["stringValue"] 30 | if "seenBy" in fields: 31 | array = fields["seenBy"]["arrayValue"]["values"] 32 | for ar in array: 33 | self.seen_by.append(ar["stringValue"]) 34 | -------------------------------------------------------------------------------- /kickbase_api/models/feed_item.py: -------------------------------------------------------------------------------- 1 | from datetime import datetime 2 | from enum import IntEnum 3 | 4 | from kickbase_api.models._transforms import parse_date 5 | from kickbase_api.models.base_model import BaseModel 6 | from kickbase_api.models.feed_meta import FeedMeta 7 | 8 | 9 | class FeedType(IntEnum): 10 | BUY = 12 11 | FEED_AD_BANNER = 15 12 | FEED_COMMENT = 14 13 | MATCH_DAY_SUMMARY = 8 14 | MATCH_DAY_SUMMARY_V2 = 17 15 | NEWS = 1 16 | NEWS_V2 = 16 17 | NEW_PLAYER_ON_TM = 3 18 | PLAYER_MATCH_DAY_SUMMARY = 10 19 | SALE = 2 20 | STATUS_MESSAGE = 9 21 | TYPE_EMPTY = 20 22 | USER_FOUNDED_LEAGUE = 6 23 | USER_INVITED_OTHER_TO_LEAGUE = 7 24 | USER_JOINED_LEAGUE = 5 25 | USER_LEFT_LEAGUE = 13 26 | USER_MATCH_DAY_SUMMARY = 11 27 | PLAYER_PROFILE_STATUS = 14 28 | PREDICTED_LINEUP = 18 29 | TRANSFER_V2 = 15 30 | TYPE_GOOGLE_ADS = 500 31 | 32 | 33 | 34 | UNKNOWN = 9999999999 35 | 36 | 37 | def _map_feed_type(v): 38 | try: 39 | return FeedType(v) 40 | except: 41 | return FeedType.UNKNOWN 42 | 43 | 44 | class FeedItem(BaseModel): 45 | id: str = None 46 | comments: int = None 47 | date: datetime = None 48 | age: int = None 49 | type: FeedType = None 50 | source: int = None 51 | meta: FeedMeta = None 52 | season_id: int = None 53 | 54 | def __init__(self, d: dict = {}): 55 | self._json_transform = { 56 | "date": parse_date, 57 | "meta": FeedMeta, 58 | "type": _map_feed_type 59 | } 60 | self._json_mapping = { 61 | "seasonId": "season_id" 62 | } 63 | super().__init__(d) 64 | -------------------------------------------------------------------------------- /kickbase_api/models/feed_item_comment.py: -------------------------------------------------------------------------------- 1 | from datetime import datetime 2 | 3 | from kickbase_api.models._transforms import parse_date 4 | from kickbase_api.models.base_model import BaseModel 5 | 6 | 7 | class FeedItemComment(BaseModel): 8 | comment: str = None 9 | date: datetime = None 10 | user_id: str = None 11 | user_name: str = None 12 | user_profile_path: str = None 13 | 14 | def __init__(self, d: dict = {}): 15 | self._json_transform = { 16 | "date": parse_date 17 | } 18 | self._json_mapping = { 19 | "userId": "user_id", 20 | "userName": "user_name", 21 | "userProfileUrl": "user_profile_path", 22 | } 23 | super().__init__(d) 24 | -------------------------------------------------------------------------------- /kickbase_api/models/feed_meta.py: -------------------------------------------------------------------------------- 1 | from kickbase_api.models.base_model import BaseModel 2 | 3 | 4 | class FeedMeta(BaseModel): 5 | average_points: int = None 6 | match_day: int = None 7 | maximum_points: int = None 8 | total_points: int = None 9 | 10 | buyer_picture: str = None 11 | buyer_id: str = None 12 | buyer_name: str = None 13 | buy_price: int = None 14 | 15 | seller_picture: str = None 16 | seller_id: str = None 17 | seller_name: str = None 18 | sell_price: int = None 19 | 20 | player_id: str = None 21 | player_first_name: str = None 22 | player_last_name: str = None 23 | player_known_name: str = None 24 | 25 | c: int = None 26 | e: int = None 27 | 28 | player_summary_r: int = None 29 | player_summary_y: int = None 30 | player_summary_yr: int = None 31 | assists: int = None 32 | game_time: int = None 33 | goals_shot: int = None 34 | match_type: int = None 35 | team_name: str = None 36 | opponent_team_id: int = None 37 | opponent_team_name: str = None 38 | goals_team_1: int = None 39 | goals_team_2: int = None 40 | 41 | founder_picture_path: str = None 42 | found_id: str = None 43 | founder_name: str = None 44 | league_name: str = None 45 | league_id: str = None 46 | 47 | inviter_profile_picture_path: str = None 48 | inviter_id: str = None 49 | inviter_name: str = None 50 | 51 | invited_name: str = None 52 | 53 | goal_keeper_points: int = None 54 | defenders_points: int = None 55 | midfielders_points: int = None 56 | forwarders_points: int = None 57 | total_points: int = None 58 | 59 | user_id: str = None 60 | user_name: str = None 61 | 62 | user_picture_path: str = None 63 | status_message: str = None 64 | 65 | news: str = None 66 | 67 | def __init__(self, d: dict = {}): 68 | self._json_transform = { 69 | } 70 | self._json_mapping = { 71 | "a": "average_points", 72 | "day": "match_day", 73 | "m": "maximum_points", 74 | "t": "total_points", 75 | "bi": "buyer_picture", 76 | "bid": "buyer_id", 77 | "bn": "buyer_name", 78 | "p": "buy_price", 79 | # "p": "sell_price", 80 | "sn": "seller_name", 81 | "pid": "player_id", 82 | "pln": "player_last_name", 83 | "pkn": "player_known_name", 84 | "cr": "player_summary_r", 85 | "cy": "player_summary_y", 86 | "cyr": "player_summary_yr", 87 | # "a": "assists", 88 | # "t": "game_time", 89 | "g": "goals_shot", 90 | "h": "match_type", 91 | "tn": "team_name", 92 | "oid": "opponent_team_id", 93 | "otn": "opponent_team_name", 94 | "r1": "goals_team_1", 95 | "r2": "goals_team_2", 96 | "fi": "founder_picture_path", 97 | "fid": "found_id", 98 | "fn": "founder_name", 99 | "ln": "league_name", 100 | "li": "league_id", 101 | "ii": "inviter_profile_picture_path", 102 | "iid": "inviter_id", 103 | "in": "inviter_name", 104 | # "tn": "invited_name", 105 | "pg": "goal_keeper_points", 106 | "pd": "defenders_points", 107 | "pm": "midfielders_points", 108 | "pf": "forwarders_points", 109 | "pfn": "player_first_name", 110 | "pt": "total_points", 111 | "uid": "user_id", 112 | "un": "user_name", 113 | "ui": "user_picture_path", 114 | "s": "status_message", 115 | "sid": "seller_id", 116 | "n": "news" 117 | } 118 | 119 | super().__init__(d) 120 | self.sell_price = self.buy_price 121 | self.game_time = self.total_points 122 | self.assists = self.average_points 123 | self.invited_name = self.team_name 124 | -------------------------------------------------------------------------------- /kickbase_api/models/gift.py: -------------------------------------------------------------------------------- 1 | from kickbase_api.models.base_model import BaseModel 2 | 3 | 4 | class Gift(BaseModel): 5 | is_available: bool = None 6 | amount: int = None 7 | level: int = None 8 | 9 | def __init__(self, d: dict = {}): 10 | self._json_mapping = { 11 | "isAvailable": "is_available" 12 | } 13 | super().__init__(d) 14 | -------------------------------------------------------------------------------- /kickbase_api/models/league_data.py: -------------------------------------------------------------------------------- 1 | from datetime import datetime 2 | 3 | from kickbase_api.models._transforms import parse_date 4 | from kickbase_api.models.base_model import BaseModel 5 | 6 | 7 | class LeagueData(BaseModel): 8 | id: str = None 9 | name: str = None 10 | 11 | creator: str = None 12 | creator_id: int = None 13 | creation_date: datetime = None 14 | 15 | activity_index: float = None 16 | total_transfers: int = None 17 | active_users: int = None 18 | max_users: int = None 19 | average_points: int = None 20 | 21 | pub: bool = None 22 | gm: int = None 23 | 24 | player_limit_active: bool = None 25 | player_limit: bool = None 26 | 27 | image_path: str = None 28 | 29 | def __init__(self, d: dict = {}): 30 | self._json_transform = { 31 | "creation": parse_date 32 | } 33 | self._json_mapping = { 34 | "creatorId": "creator_id", 35 | "creation": "creation_date", 36 | "mpl": "player_limit_active", 37 | "pl": "player_limit", 38 | "ci": "image_path", 39 | "ai": "activity_index", 40 | "t": "total_transfers", 41 | "au": "active_users", 42 | "mu": "max_users", 43 | "ap": "average_points" 44 | } 45 | 46 | super().__init__(d) 47 | -------------------------------------------------------------------------------- /kickbase_api/models/league_info.py: -------------------------------------------------------------------------------- 1 | from kickbase_api.models.base_model import BaseModel 2 | 3 | 4 | class LeagueInfo(BaseModel): 5 | activity_index: float = None 6 | total_transfers: int = None 7 | active_users: int = None 8 | max_users: int = None 9 | average_points: int = None 10 | 11 | rs: int = None 12 | us: int = None 13 | 14 | def __init__(self, d: dict = {}): 15 | self._json_transform = { 16 | } 17 | self._json_mapping = { 18 | "ai": "activity_index", 19 | "t": "total_transfers", 20 | "au": "active_users", 21 | "mu": "max_users", 22 | "ap": "average_points" 23 | } 24 | 25 | super().__init__(d) 26 | -------------------------------------------------------------------------------- /kickbase_api/models/league_match_day_stats_data.py: -------------------------------------------------------------------------------- 1 | from kickbase_api.models.base_model import BaseModel 2 | 3 | 4 | class LeagueMatchDayStatsData(BaseModel): 5 | user_id: str = None 6 | day_earnings: float = None 7 | day_points: int = None 8 | day_placement: int = None 9 | day_tendency: int = None 10 | team_value: int = None 11 | points: int = None 12 | placement: int = None 13 | tendency: int = None 14 | flags: int = None 15 | 16 | def __init__(self, d: dict = {}): 17 | self._json_transform = { 18 | } 19 | self._json_mapping = { 20 | "dayEarnings": "day_earnings", 21 | "dayPoints": "day_points", 22 | "dayPlacement": "day_placement", 23 | "dayTendency": "day_tendency", 24 | "teamValue": "team_value" 25 | } 26 | 27 | super().__init__(d) 28 | -------------------------------------------------------------------------------- /kickbase_api/models/league_match_day_user_stats.py: -------------------------------------------------------------------------------- 1 | from datetime import datetime 2 | 3 | from kickbase_api.models._transforms import parse_date, parse_key_value_array_to_dict 4 | from kickbase_api.models.base_model import BaseModel 5 | 6 | 7 | class LeagueMatchDayUserStats(BaseModel): 8 | season_id: str = None 9 | day: int = None 10 | placement: int = None 11 | points: int = None 12 | 13 | def __init__(self, d: dict = {}): 14 | self._json_transform = { 15 | } 16 | self._json_mapping = { 17 | "s": "season_id", 18 | "p": "placement", 19 | "pt": "points" 20 | } 21 | 22 | super().__init__(d) 23 | -------------------------------------------------------------------------------- /kickbase_api/models/league_me.py: -------------------------------------------------------------------------------- 1 | from datetime import datetime 2 | 3 | from kickbase_api.models._transforms import parse_date 4 | from kickbase_api.models.base_model import BaseModel 5 | 6 | 7 | class LeagueMe(BaseModel): 8 | budget: float = None 9 | team_value: float = None 10 | placement: int = None 11 | points: int = None 12 | ttm: int = None 13 | cmd: int = None 14 | flags: int = None 15 | se: bool = None 16 | csid: int = None 17 | nt: bool = None 18 | ntv: float = None 19 | nb: float = None 20 | ga: bool = None 21 | un: int = None 22 | 23 | def __init__(self, d: dict = {}): 24 | self._json_transform = { 25 | } 26 | self._json_mapping = { 27 | "teamValue": "team_value" 28 | } 29 | 30 | super().__init__(d) 31 | -------------------------------------------------------------------------------- /kickbase_api/models/league_user_data.py: -------------------------------------------------------------------------------- 1 | from datetime import datetime 2 | 3 | from kickbase_api.models._transforms import parse_date 4 | from kickbase_api.models.base_model import BaseModel 5 | 6 | 7 | class LeagueUserData(BaseModel): 8 | id: str = None 9 | email: str = None 10 | name: str = None 11 | profile_image_path: str = None 12 | cover_image_path: str = None 13 | status: int = None 14 | perms: [int] = None 15 | 16 | def __init__(self, d: dict = {}): 17 | self._json_transform = { 18 | } 19 | self._json_mapping = { 20 | "profile": "profile_image_path", 21 | "cover": "cover_image_path" 22 | } 23 | 24 | super().__init__(d) 25 | -------------------------------------------------------------------------------- /kickbase_api/models/league_user_profile.py: -------------------------------------------------------------------------------- 1 | from datetime import datetime 2 | 3 | from kickbase_api.models._transforms import parse_date, parse_key_value_array_to_dict 4 | from kickbase_api.models.base_model import BaseModel 5 | from kickbase_api.models.league_user_profile_season_stats import LeagueUserProfileSeasonStats 6 | 7 | 8 | class LeagueUserProfile(BaseModel): 9 | flags: int = None 10 | perms: [int] = None 11 | level_achieved: int = None 12 | current_season_id: int = None 13 | placement: int = None 14 | 15 | points_gk: int = None 16 | points_def: int = None 17 | points_mf: int = None 18 | points_fwd: int = None 19 | 20 | team_value: float = None 21 | bought: int = None 22 | sold: int = None 23 | highest_team_value: float = None 24 | 25 | seasons: [LeagueUserProfileSeasonStats] = None 26 | team_values: {datetime: float} 27 | 28 | def __init__(self, d: dict = {}): 29 | self._json_transform = { 30 | "teamValues": parse_key_value_array_to_dict(lambda o: parse_date(o["d"]), lambda o: o["v"]), 31 | "seasons": lambda v: [LeagueUserProfileSeasonStats(_d) for _d in v] 32 | } 33 | self._json_mapping = { 34 | "levelAchieved": "level_achieved", 35 | "currentSeasonId": "current_season_id", 36 | "pointsGK": "points_gk", 37 | "pointsDEF": "points_def", 38 | "pointsMF": "points_mf", 39 | "pointsFWD": "points_fwd", 40 | "teamValue": "team_value", 41 | "highestTeamValue": "highest_team_value", 42 | "teamValues": "team_values" 43 | } 44 | 45 | super().__init__(d) 46 | -------------------------------------------------------------------------------- /kickbase_api/models/league_user_profile_season_stats.py: -------------------------------------------------------------------------------- 1 | from datetime import datetime 2 | 3 | from kickbase_api.models._transforms import parse_date, parse_key_value_array_to_dict 4 | from kickbase_api.models.base_model import BaseModel 5 | from kickbase_api.models.league_match_day_user_stats import LeagueMatchDayUserStats 6 | 7 | 8 | class LeagueUserProfileSeasonStats(BaseModel): 9 | season_id: str = None 10 | season: str = None 11 | 12 | points: int = None 13 | average_points: int = None 14 | max_points: int = None 15 | wins: int = None 16 | 17 | match_days: [LeagueMatchDayUserStats] = None 18 | 19 | def __init__(self, d: dict = {}): 20 | self._json_transform = { 21 | "matchDays": lambda v: [LeagueMatchDayUserStats(_d) for _d in v] 22 | } 23 | self._json_mapping = { 24 | "seasonId": "season_id", 25 | "averagePoints": "average_points", 26 | "maxPoints": "max_points", 27 | "matchDays": "match_days" 28 | } 29 | 30 | super().__init__(d) 31 | -------------------------------------------------------------------------------- /kickbase_api/models/league_user_season_stats.py: -------------------------------------------------------------------------------- 1 | from datetime import datetime 2 | 3 | from kickbase_api.models._transforms import parse_date, parse_key_value_array_to_dict 4 | from kickbase_api.models.base_model import BaseModel 5 | 6 | 7 | class LeagueUserSeasonStats(BaseModel): 8 | season_id: str = None 9 | season: str = None 10 | 11 | points: int = None 12 | average_points: int = None 13 | max_points: int = None 14 | min_points: int = None 15 | 16 | wins: int = None 17 | bought: int = None 18 | sold: int = None 19 | 20 | points_goal_keeper: int = None 21 | points_defenders: int = None 22 | points_mid_fielers: int = None 23 | points_forwards: int = None 24 | 25 | average_goal_keeper: int = None 26 | average_defenders: int = None 27 | average_mid_fielders: int = None 28 | average_forwards: int = None 29 | 30 | def __init__(self, d: dict = {}): 31 | self._json_transform = { 32 | } 33 | self._json_mapping = { 34 | "seasonId": "season_id", 35 | "averagePoints": "average_points", 36 | "maxPoints": "max_points", 37 | "minPoints": "min_points", 38 | "pointsGoalKeeper": "points_goal_keeper", 39 | "pointsDefenders": "points_defenders", 40 | "pointsMidFielders": "points_mid_fielers", 41 | "pointsForwards": "points_forwards", 42 | "averageGoalKeeper": "average_goal_keeper", 43 | "averageDefenders": "average_defenders", 44 | "averageMidFielders": "average_mid_fielders", 45 | "averageForwards": "average_forwards" 46 | } 47 | 48 | super().__init__(d) 49 | -------------------------------------------------------------------------------- /kickbase_api/models/league_user_stats.py: -------------------------------------------------------------------------------- 1 | from datetime import datetime 2 | 3 | from kickbase_api.models._transforms import parse_date, parse_key_value_array_to_dict 4 | from kickbase_api.models.base_model import BaseModel 5 | from kickbase_api.models.league_user_season_stats import LeagueUserSeasonStats 6 | 7 | 8 | class LeagueUserStats(BaseModel): 9 | name: str = None 10 | profile_image_path: str = None 11 | cover_image_path: str = None 12 | flags: int = None 13 | placement: int = None 14 | points: int = None 15 | team_value: float = None 16 | 17 | seasons: [LeagueUserSeasonStats] = None 18 | team_values: {datetime: float} 19 | 20 | def __init__(self, d: dict = {}): 21 | self._json_transform = { 22 | "teamValues": parse_key_value_array_to_dict(lambda o: parse_date(o["d"]), lambda o: o["v"]), 23 | "seasons": lambda v: [LeagueUserSeasonStats(_d) for _d in v] 24 | } 25 | self._json_mapping = { 26 | "profileUrl": "profile_image_path", 27 | "coverUrl": "cover_image_path", 28 | "teamValue": "team_value", 29 | "teamValues": "team_values" 30 | } 31 | 32 | super().__init__(d) 33 | -------------------------------------------------------------------------------- /kickbase_api/models/lineup.py: -------------------------------------------------------------------------------- 1 | from kickbase_api.models.base_model import BaseModel 2 | 3 | 4 | class LineUp(BaseModel): 5 | type: str = None 6 | players: [str] = None 7 | 8 | def __init__(self, d: dict = {}): 9 | self._json_transform = { 10 | } 11 | self._json_mapping = { 12 | } 13 | super().__init__(d) 14 | -------------------------------------------------------------------------------- /kickbase_api/models/market.py: -------------------------------------------------------------------------------- 1 | from kickbase_api.models.base_model import BaseModel 2 | from kickbase_api.models.market_player import MarketPlayer 3 | 4 | 5 | class Market(BaseModel): 6 | closed: bool = None 7 | players: [MarketPlayer] = None 8 | 9 | def __init__(self, d: dict = {}): 10 | self._json_transform = { 11 | "players": lambda v: [MarketPlayer(v_) for v_ in v] 12 | } 13 | self._json_mapping = { 14 | "c": "closed" 15 | } 16 | super().__init__(d) -------------------------------------------------------------------------------- /kickbase_api/models/market_player.py: -------------------------------------------------------------------------------- 1 | from datetime import datetime 2 | 3 | from kickbase_api.models._transforms import parse_date 4 | from kickbase_api.models.base_model import BaseModel 5 | from kickbase_api.models.market_player_offer import MarketPlayerOffer 6 | from kickbase_api.models.player import _map_player_position, _map_player_status, PlayerPosition, PlayerStatus 7 | 8 | 9 | class MarketPlayer(BaseModel): 10 | id: str = None 11 | first_name: str = None 12 | last_name: str = None 13 | average_points: int = None 14 | totalPoints: int = None 15 | market_value: int = None 16 | market_value_trend: int = None 17 | number: int = None 18 | position: PlayerPosition = None 19 | status: PlayerStatus = None 20 | team_id: str = None 21 | user_id: str = None 22 | 23 | profile_path: str = None 24 | profile_big_path: str = None 25 | team_path: str = None 26 | team_cover_path: str = None 27 | 28 | username: str = None 29 | user_profile_path: str = None 30 | price: int = None 31 | date: datetime = None 32 | expiry: int = None 33 | lus: int = None 34 | 35 | offers: [MarketPlayerOffer] = None 36 | 37 | def __init__(self, d: dict = {}): 38 | self._json_transform = { 39 | "position": _map_player_position, 40 | "status": _map_player_status, 41 | "date": parse_date, 42 | "offers": lambda v: [MarketPlayerOffer(v_) for v_ in v] 43 | } 44 | self._json_mapping = { 45 | "firstName": "first_name", 46 | "lastName": "last_name", 47 | "averagePoints": "average_points", 48 | "marketValue": "market_value", 49 | "marketValueTrend": "market_value_trend", 50 | "teamId": "team_id", 51 | "profile": "profile_path", 52 | "profileBig": "profile_big_path", 53 | "team": "team_path", 54 | "teamCover": "team_cover_path", 55 | "userId": "user_id", 56 | 57 | "userProfile": "user_profile_path", 58 | } 59 | super().__init__(d) -------------------------------------------------------------------------------- /kickbase_api/models/market_player_offer.py: -------------------------------------------------------------------------------- 1 | from datetime import datetime 2 | 3 | from kickbase_api.models._transforms import parse_date 4 | from kickbase_api.models.base_model import BaseModel 5 | 6 | 7 | class MarketPlayerOffer(BaseModel): 8 | id: str = None 9 | price: int = None 10 | date: datetime = None 11 | valid_until_date: datetime = None 12 | 13 | def __init__(self, d: dict = {}): 14 | self._json_transform = { 15 | "date": parse_date, 16 | "validUntilDate": parse_date 17 | } 18 | self._json_mapping = { 19 | "validUntilDate": "valid_until_date" 20 | } 21 | super().__init__(d) 22 | -------------------------------------------------------------------------------- /kickbase_api/models/player.py: -------------------------------------------------------------------------------- 1 | from enum import IntEnum 2 | 3 | from kickbase_api.models.base_model import BaseModel 4 | 5 | 6 | class PlayerStatus(IntEnum): 7 | NONE = 0 8 | INJURED = 1 9 | STRICKEN = 2 10 | REHAB = 4 11 | RED_CARD = 8 12 | YELLOW_RED_CARD = 16 13 | FIFTH_YELLOW_CARD = 32 14 | NOT_IN_TEAM = 64 15 | NOT_IN_LEAGUE = 128 16 | ABSENT = 256 17 | UNKNOWN = 9999999999 18 | 19 | 20 | def _map_player_status(v): 21 | try: 22 | return PlayerStatus(v) 23 | except: 24 | return PlayerStatus.UNKNOWN 25 | 26 | 27 | class PlayerPosition(IntEnum): 28 | GOAL_KEEPER = 1 29 | DEFENDER = 2 30 | MIDFIELDER = 3 31 | FORWARD = 4 32 | UNKNOWN = 9999999999 33 | 34 | 35 | def _map_player_position(v): 36 | try: 37 | return PlayerPosition(v) 38 | except: 39 | return PlayerPosition.UNKNOWN 40 | 41 | 42 | class Player(BaseModel): 43 | id: str = None 44 | first_name: str = None 45 | last_name: str = None 46 | average_points: int = None 47 | totalPoints: int = None 48 | market_value: int = None 49 | market_value_trend: int = None 50 | number: int = None 51 | position: PlayerPosition = None 52 | status: PlayerStatus = None 53 | team_id: str = None 54 | user_id: str = None 55 | 56 | profile_path: str = None 57 | profile_big_path: str = None 58 | team_path: str = None 59 | team_cover_path: str = None 60 | 61 | def __init__(self, d: dict = {}): 62 | self._json_transform = { 63 | "position": _map_player_position, 64 | "status": _map_player_status 65 | } 66 | self._json_mapping = { 67 | "firstName": "first_name", 68 | "lastName": "last_name", 69 | "averagePoints": "average_points", 70 | "marketValue": "market_value", 71 | "marketValueTrend": "market_value_trend", 72 | "teamId": "team_id", 73 | "profile": "profile_path", 74 | "profileBig": "profile_big_path", 75 | "team": "team_path", 76 | "teamCover": "team_cover_path", 77 | "userId": "user_id" 78 | } 79 | super().__init__(d) 80 | -------------------------------------------------------------------------------- /kickbase_api/models/response/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kevinskyba/kickbase-api-python/b444e25e265a6e586824d404f7e23da718f9ef4a/kickbase_api/models/response/__init__.py -------------------------------------------------------------------------------- /kickbase_api/models/response/league_stats_response.py: -------------------------------------------------------------------------------- 1 | from kickbase_api.models.league_match_day_stats_data import LeagueMatchDayStatsData 2 | 3 | 4 | class LeagueStatsResponse: 5 | 6 | current_day: int = None 7 | match_days: {int: [LeagueMatchDayStatsData]} = {} 8 | 9 | def __init__(self, d: dict): 10 | self.current_day = d["currentDay"] 11 | for match_day in d["matchDays"]: 12 | self.match_days[match_day["day"]] = [LeagueMatchDayStatsData(_d) for _d in match_day["users"]] 13 | -------------------------------------------------------------------------------- /kickbase_api/models/user.py: -------------------------------------------------------------------------------- 1 | from kickbase_api.models.base_model import BaseModel 2 | 3 | 4 | class User(BaseModel): 5 | id: str = None 6 | email: str = None 7 | name: str = None 8 | notifications: int = None 9 | profile_image_path: str = None 10 | 11 | def __init__(self, d: dict = {}): 12 | self._json_mapping = { 13 | "profile": "profile_image_path" 14 | } 15 | super().__init__(d) 16 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | setuptools~=49.6.0 2 | requests~=2.24.0 -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- 1 | from setuptools import setup 2 | 3 | setup( 4 | name='Kickbase_API', 5 | version='0.0.8', 6 | packages=['kickbase_api', 'kickbase_api.models', 'kickbase_api.models.response'], 7 | url='https://github.com/kevinskyba/kickbase-api-python', 8 | license='MIT', 9 | author='kevinskyba', 10 | author_email='kevinskyba@live.de', 11 | description='Python API library for kickbase', 12 | long_description=open("README.md", "r").read(), 13 | long_description_content_type="text/markdown", 14 | install_requires=( 15 | 'requests', 16 | ) 17 | ) 18 | -------------------------------------------------------------------------------- /tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kevinskyba/kickbase-api-python/b444e25e265a6e586824d404f7e23da718f9ef4a/tests/__init__.py -------------------------------------------------------------------------------- /tests/conftest.py: -------------------------------------------------------------------------------- 1 | import json 2 | import os 3 | 4 | import pytest 5 | 6 | from kickbase_api.kickbase import Kickbase 7 | 8 | 9 | def create_logged_in_kickbase(): 10 | kickbase = Kickbase(google_identity_toolkit_api_key=os.environ["KKBS_API_KEY"]) 11 | user, leagues = kickbase.login(os.environ["KKBS_TEST_USERNAME"], os.environ["KKBS_TEST_PASSWORD"]) 12 | return kickbase, user, leagues 13 | 14 | 15 | @pytest.fixture(scope="module") 16 | def logged_in_kickbase(): 17 | return create_logged_in_kickbase() 18 | -------------------------------------------------------------------------------- /tests/models/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kevinskyba/kickbase-api-python/b444e25e265a6e586824d404f7e23da718f9ef4a/tests/models/__init__.py -------------------------------------------------------------------------------- /tests/test_kickbase.py: -------------------------------------------------------------------------------- 1 | import os 2 | 3 | import pytest 4 | 5 | from kickbase_api.kickbase import Kickbase 6 | 7 | @pytest.mark.online 8 | def test_login(): 9 | kickbase = Kickbase() 10 | assert not kickbase._is_token_valid() 11 | user, leagues = kickbase.login(os.environ["KKBS_TEST_USERNAME"], os.environ["KKBS_TEST_PASSWORD"]) 12 | assert kickbase._is_token_valid() 13 | assert user is not None 14 | assert leagues is not None 15 | 16 | kickbase.post_chat_message("..", leagues[1]) 17 | 18 | 19 | @pytest.mark.online 20 | def test_leagues(logged_in_kickbase): 21 | kickbase, user, leagues = logged_in_kickbase 22 | leagues_ = kickbase.leagues() 23 | assert leagues_ is not None 24 | assert len(leagues) == len(leagues_) 25 | 26 | 27 | @pytest.mark.online 28 | def test_league_me(logged_in_kickbase): 29 | kickbase, user, leagues = logged_in_kickbase 30 | league_me = kickbase.league_me(leagues[0]) 31 | assert league_me is not None 32 | 33 | 34 | @pytest.mark.online 35 | def test_league_me(logged_in_kickbase): 36 | kickbase, user, leagues = logged_in_kickbase 37 | league_info = kickbase.league_me(leagues[0]) 38 | assert league_info is not None 39 | 40 | 41 | @pytest.mark.online 42 | def test_league_stats(logged_in_kickbase): 43 | kickbase, user, leagues = logged_in_kickbase 44 | league_stats = kickbase.league_stats(leagues[0]) 45 | assert league_stats is not None 46 | 47 | 48 | @pytest.mark.online 49 | def test_league_users(logged_in_kickbase): 50 | kickbase, user, leagues = logged_in_kickbase 51 | league_users = kickbase.league_users(leagues[0]) 52 | assert league_users is not None 53 | 54 | 55 | @pytest.mark.online 56 | def test_league_user_stats(logged_in_kickbase): 57 | kickbase, user, leagues = logged_in_kickbase 58 | league_user_stats = kickbase.league_user_stats(leagues[0], user) 59 | assert league_user_stats is not None 60 | 61 | 62 | @pytest.mark.online 63 | def test_league_user_profile(logged_in_kickbase): 64 | kickbase, user, leagues = logged_in_kickbase 65 | league_user_profile = kickbase.league_user_profile(leagues[0], user) 66 | assert league_user_profile is not None 67 | 68 | 69 | @pytest.mark.online 70 | def test_league_feed(logged_in_kickbase): 71 | kickbase, user, leagues = logged_in_kickbase 72 | feed_items = kickbase.league_feed(0, leagues[0]) 73 | assert feed_items is not None 74 | 75 | 76 | @pytest.mark.online 77 | def test_league_feed_comments(logged_in_kickbase): 78 | kickbase, user, leagues = logged_in_kickbase 79 | feed_items = kickbase.league_feed(0, leagues[0]) 80 | feed_item_comments = kickbase.league_feed_comments(leagues[0], feed_items[0]) 81 | assert feed_item_comments is not None 82 | 83 | 84 | @pytest.mark.online 85 | def test_league_user_players(logged_in_kickbase): 86 | kickbase, user, leagues = logged_in_kickbase 87 | players = kickbase.league_user_players(leagues[0], user) 88 | assert players is not None 89 | 90 | 91 | @pytest.mark.online 92 | def test_league_user_players_match_day(logged_in_kickbase): 93 | kickbase, user, leagues = logged_in_kickbase 94 | players = kickbase.league_user_players(leagues[0], user, 1) 95 | assert players is not None 96 | 97 | @pytest.mark.online 98 | def test_league_user_players_match_day(logged_in_kickbase): 99 | kickbase, user, leagues = logged_in_kickbase 100 | gift = kickbase.league_current_gift(leagues[0]) 101 | assert gift is not None 102 | 103 | @pytest.mark.online 104 | def test_search_player(logged_in_kickbase): 105 | kickbase, user, leagues = logged_in_kickbase 106 | players = kickbase.search_player(search_query="Lewandowski") 107 | assert players is not None 108 | 109 | 110 | @pytest.mark.online 111 | def test_search_player(logged_in_kickbase): 112 | kickbase, user, leagues = logged_in_kickbase 113 | players = kickbase.team_players(40) 114 | assert players is not None 115 | 116 | 117 | @pytest.mark.online 118 | def test_top_25_players(logged_in_kickbase): 119 | kickbase, user, leagues = logged_in_kickbase 120 | players = kickbase.top_25_players() 121 | assert players is not None 122 | 123 | 124 | @pytest.mark.online 125 | def test_line_up(logged_in_kickbase): 126 | kickbase, user, leagues = logged_in_kickbase 127 | line_up = kickbase.line_up(leagues[0]) 128 | assert line_up is not None 129 | 130 | 131 | @pytest.mark.online 132 | def test_market(logged_in_kickbase): 133 | kickbase, user, leagues = logged_in_kickbase 134 | market = kickbase.market(leagues[0]) 135 | assert market is not None 136 | 137 | 138 | @pytest.mark.online 139 | def test_chat_messages(logged_in_kickbase): 140 | kickbase, user, leagues = logged_in_kickbase 141 | chat_messages, next_page_token = kickbase.chat_messages(leagues[0]) 142 | assert chat_messages is not None --------------------------------------------------------------------------------