nadeshiko-sdk 0.1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- nadeshiko/__init__.py +10 -0
- nadeshiko/_version.py +1 -0
- nadeshiko/api/__init__.py +1 -0
- nadeshiko/api/auth/__init__.py +3 -0
- nadeshiko/api/auth/internal/__init__.py +11 -0
- nadeshiko/api/auth/internal/get_discord_auth_url.py +176 -0
- nadeshiko/api/auth/internal/login.py +213 -0
- nadeshiko/api/auth/internal/login_discord.py +204 -0
- nadeshiko/api/auth/internal/login_google.py +204 -0
- nadeshiko/api/auth/internal/register.py +212 -0
- nadeshiko/api/auth_jwt/__init__.py +3 -0
- nadeshiko/api/auth_jwt/internal/__init__.py +7 -0
- nadeshiko/api/auth_jwt/internal/logout.py +151 -0
- nadeshiko/api/lists/__init__.py +8 -0
- nadeshiko/api/lists/internal/__init__.py +12 -0
- nadeshiko/api/lists/internal/list_add_item.py +215 -0
- nadeshiko/api/lists/internal/list_create.py +194 -0
- nadeshiko/api/lists/internal/list_destroy.py +193 -0
- nadeshiko/api/lists/internal/list_remove_item.py +207 -0
- nadeshiko/api/lists/internal/list_update.py +215 -0
- nadeshiko/api/lists/internal/list_update_item.py +229 -0
- nadeshiko/api/lists/list_index.py +257 -0
- nadeshiko/api/lists/list_show.py +193 -0
- nadeshiko/api/media/__init__.py +14 -0
- nadeshiko/api/media/character_show.py +193 -0
- nadeshiko/api/media/episode_index.py +229 -0
- nadeshiko/api/media/episode_show.py +207 -0
- nadeshiko/api/media/internal/__init__.py +16 -0
- nadeshiko/api/media/internal/episode_create.py +215 -0
- nadeshiko/api/media/internal/episode_destroy.py +205 -0
- nadeshiko/api/media/internal/episode_update.py +229 -0
- nadeshiko/api/media/internal/media_create.py +194 -0
- nadeshiko/api/media/internal/media_destroy.py +197 -0
- nadeshiko/api/media/internal/media_update.py +219 -0
- nadeshiko/api/media/internal/segment_create.py +229 -0
- nadeshiko/api/media/internal/segment_destroy.py +219 -0
- nadeshiko/api/media/internal/segment_index.py +243 -0
- nadeshiko/api/media/internal/segment_update.py +243 -0
- nadeshiko/api/media/media_index.py +232 -0
- nadeshiko/api/media/media_show.py +193 -0
- nadeshiko/api/media/segment_show.py +221 -0
- nadeshiko/api/media/segment_show_by_uuid.py +193 -0
- nadeshiko/api/media/seiyuu_show.py +193 -0
- nadeshiko/api/search/__init__.py +11 -0
- nadeshiko/api/search/fetch_media_info.py +278 -0
- nadeshiko/api/search/fetch_sentence_context.py +219 -0
- nadeshiko/api/search/internal/__init__.py +6 -0
- nadeshiko/api/search/search.py +295 -0
- nadeshiko/api/search/search_health_check.py +168 -0
- nadeshiko/api/search/search_multiple.py +238 -0
- nadeshiko/api/user/__init__.py +3 -0
- nadeshiko/api/user/internal/__init__.py +11 -0
- nadeshiko/api/user/internal/create_api_key.py +199 -0
- nadeshiko/api/user/internal/deactivate_api_key.py +194 -0
- nadeshiko/api/user/internal/get_api_keys.py +151 -0
- nadeshiko/api/user/internal/get_identity_me.py +156 -0
- nadeshiko/api/user/internal/get_user_info.py +156 -0
- nadeshiko/client.py +138 -0
- nadeshiko/errors.py +16 -0
- nadeshiko/models/__init__.py +215 -0
- nadeshiko/models/api_key.py +118 -0
- nadeshiko/models/api_key_permission.py +70 -0
- nadeshiko/models/auth_user.py +107 -0
- nadeshiko/models/basic_info.py +132 -0
- nadeshiko/models/category_statistic.py +71 -0
- nadeshiko/models/character.py +100 -0
- nadeshiko/models/character_input.py +130 -0
- nadeshiko/models/character_input_character_role.py +10 -0
- nadeshiko/models/character_with_media.py +124 -0
- nadeshiko/models/character_with_media_media_appearances_item.py +93 -0
- nadeshiko/models/character_with_media_media_appearances_item_role.py +10 -0
- nadeshiko/models/create_api_key_request.py +75 -0
- nadeshiko/models/create_api_key_response.py +70 -0
- nadeshiko/models/deactivate_api_key_request.py +62 -0
- nadeshiko/models/deactivate_api_key_response.py +62 -0
- nadeshiko/models/discord_auth_url_response.py +62 -0
- nadeshiko/models/discord_login_request.py +62 -0
- nadeshiko/models/episode.py +253 -0
- nadeshiko/models/episode_create_request.py +145 -0
- nadeshiko/models/episode_list_response.py +94 -0
- nadeshiko/models/episode_update_request.py +135 -0
- nadeshiko/models/error.py +128 -0
- nadeshiko/models/error_errors.py +46 -0
- nadeshiko/models/fetch_media_info_response.py +115 -0
- nadeshiko/models/fetch_media_info_type.py +10 -0
- nadeshiko/models/fetch_sentence_context_request.py +96 -0
- nadeshiko/models/fetch_sentence_context_response.py +75 -0
- nadeshiko/models/get_api_keys_response.py +86 -0
- nadeshiko/models/google_login_request.py +62 -0
- nadeshiko/models/list_.py +97 -0
- nadeshiko/models/list_add_item_body.py +69 -0
- nadeshiko/models/list_add_item_response_201.py +61 -0
- nadeshiko/models/list_create_request.py +107 -0
- nadeshiko/models/list_create_request_type.py +9 -0
- nadeshiko/models/list_create_request_visibility.py +9 -0
- nadeshiko/models/list_destroy_response_200.py +70 -0
- nadeshiko/models/list_index_type.py +9 -0
- nadeshiko/models/list_index_visibility.py +9 -0
- nadeshiko/models/list_input.py +138 -0
- nadeshiko/models/list_input_list_type.py +9 -0
- nadeshiko/models/list_input_list_visibility.py +9 -0
- nadeshiko/models/list_remove_item_response_200.py +61 -0
- nadeshiko/models/list_type.py +9 -0
- nadeshiko/models/list_update_body.py +78 -0
- nadeshiko/models/list_update_body_visibility.py +9 -0
- nadeshiko/models/list_update_item_body.py +61 -0
- nadeshiko/models/list_update_item_response_200.py +61 -0
- nadeshiko/models/list_visibility.py +9 -0
- nadeshiko/models/list_with_media.py +119 -0
- nadeshiko/models/list_with_media_media_item.py +83 -0
- nadeshiko/models/list_with_media_type.py +9 -0
- nadeshiko/models/list_with_media_visibility.py +9 -0
- nadeshiko/models/login_request.py +70 -0
- nadeshiko/models/login_response.py +84 -0
- nadeshiko/models/logout_response.py +73 -0
- nadeshiko/models/media.py +288 -0
- nadeshiko/models/media_category.py +11 -0
- nadeshiko/models/media_character.py +78 -0
- nadeshiko/models/media_character_role.py +10 -0
- nadeshiko/models/media_create_request.py +270 -0
- nadeshiko/models/media_create_request_category.py +11 -0
- nadeshiko/models/media_destroy_response_200.py +70 -0
- nadeshiko/models/media_index_category.py +9 -0
- nadeshiko/models/media_info_data.py +307 -0
- nadeshiko/models/media_info_path.py +83 -0
- nadeshiko/models/media_info_stats.py +89 -0
- nadeshiko/models/media_list_response.py +94 -0
- nadeshiko/models/media_update_request.py +297 -0
- nadeshiko/models/media_update_request_category.py +9 -0
- nadeshiko/models/quota_info.py +87 -0
- nadeshiko/models/quota_info_quota_limit_type_1.py +8 -0
- nadeshiko/models/register_request.py +78 -0
- nadeshiko/models/register_response.py +76 -0
- nadeshiko/models/register_response_user.py +46 -0
- nadeshiko/models/search_health_check_response.py +138 -0
- nadeshiko/models/search_multiple_request.py +72 -0
- nadeshiko/models/search_multiple_response.py +79 -0
- nadeshiko/models/search_request.py +253 -0
- nadeshiko/models/search_request_content_sort.py +13 -0
- nadeshiko/models/search_request_media_item.py +85 -0
- nadeshiko/models/search_request_media_item_seasons_item.py +69 -0
- nadeshiko/models/search_response.py +158 -0
- nadeshiko/models/segment.py +303 -0
- nadeshiko/models/segment_create_request.py +203 -0
- nadeshiko/models/segment_create_request_status.py +13 -0
- nadeshiko/models/segment_info.py +207 -0
- nadeshiko/models/segment_list_response.py +94 -0
- nadeshiko/models/segment_status.py +13 -0
- nadeshiko/models/segment_update_request.py +198 -0
- nadeshiko/models/segment_update_request_status.py +13 -0
- nadeshiko/models/seiyuu.py +86 -0
- nadeshiko/models/seiyuu_with_roles.py +108 -0
- nadeshiko/models/seiyuu_with_roles_roles_item.py +109 -0
- nadeshiko/models/seiyuu_with_roles_roles_item_role.py +10 -0
- nadeshiko/models/sentence.py +88 -0
- nadeshiko/models/statistic.py +132 -0
- nadeshiko/models/statistic_season_with_episode_hits.py +74 -0
- nadeshiko/models/statistic_season_with_episode_hits_additional_property.py +46 -0
- nadeshiko/models/user_info_response.py +79 -0
- nadeshiko/models/user_info_response_user.py +91 -0
- nadeshiko/models/user_role.py +71 -0
- nadeshiko/models/word_match.py +107 -0
- nadeshiko/models/word_match_media.py +98 -0
- nadeshiko/types.py +54 -0
- nadeshiko_sdk-0.1.0.dist-info/METADATA +147 -0
- nadeshiko_sdk-0.1.0.dist-info/RECORD +167 -0
- nadeshiko_sdk-0.1.0.dist-info/WHEEL +4 -0
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from collections.abc import Mapping
|
|
4
|
+
from typing import Any, TypeVar
|
|
5
|
+
|
|
6
|
+
from attrs import define as _attrs_define
|
|
7
|
+
from attrs import field as _attrs_field
|
|
8
|
+
|
|
9
|
+
from ..types import UNSET, Unset
|
|
10
|
+
|
|
11
|
+
T = TypeVar("T", bound="CategoryStatistic")
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
@_attrs_define
|
|
15
|
+
class CategoryStatistic:
|
|
16
|
+
"""Statistics grouped by media category
|
|
17
|
+
|
|
18
|
+
Attributes:
|
|
19
|
+
category (int | Unset): Media category (1=Anime, 2=Unknown, 3=J-Drama, 4=Audiobook) Example: 1.
|
|
20
|
+
count (int | Unset): Number of entries in this category Example: 1523.
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
category: int | Unset = UNSET
|
|
24
|
+
count: int | Unset = UNSET
|
|
25
|
+
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
|
|
26
|
+
|
|
27
|
+
def to_dict(self) -> dict[str, Any]:
|
|
28
|
+
category = self.category
|
|
29
|
+
|
|
30
|
+
count = self.count
|
|
31
|
+
|
|
32
|
+
field_dict: dict[str, Any] = {}
|
|
33
|
+
field_dict.update(self.additional_properties)
|
|
34
|
+
field_dict.update({})
|
|
35
|
+
if category is not UNSET:
|
|
36
|
+
field_dict["category"] = category
|
|
37
|
+
if count is not UNSET:
|
|
38
|
+
field_dict["count"] = count
|
|
39
|
+
|
|
40
|
+
return field_dict
|
|
41
|
+
|
|
42
|
+
@classmethod
|
|
43
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
44
|
+
d = dict(src_dict)
|
|
45
|
+
category = d.pop("category", UNSET)
|
|
46
|
+
|
|
47
|
+
count = d.pop("count", UNSET)
|
|
48
|
+
|
|
49
|
+
category_statistic = cls(
|
|
50
|
+
category=category,
|
|
51
|
+
count=count,
|
|
52
|
+
)
|
|
53
|
+
|
|
54
|
+
category_statistic.additional_properties = d
|
|
55
|
+
return category_statistic
|
|
56
|
+
|
|
57
|
+
@property
|
|
58
|
+
def additional_keys(self) -> list[str]:
|
|
59
|
+
return list(self.additional_properties.keys())
|
|
60
|
+
|
|
61
|
+
def __getitem__(self, key: str) -> Any:
|
|
62
|
+
return self.additional_properties[key]
|
|
63
|
+
|
|
64
|
+
def __setitem__(self, key: str, value: Any) -> None:
|
|
65
|
+
self.additional_properties[key] = value
|
|
66
|
+
|
|
67
|
+
def __delitem__(self, key: str) -> None:
|
|
68
|
+
del self.additional_properties[key]
|
|
69
|
+
|
|
70
|
+
def __contains__(self, key: str) -> bool:
|
|
71
|
+
return key in self.additional_properties
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from collections.abc import Mapping
|
|
4
|
+
from typing import TYPE_CHECKING, Any, TypeVar
|
|
5
|
+
|
|
6
|
+
from attrs import define as _attrs_define
|
|
7
|
+
from attrs import field as _attrs_field
|
|
8
|
+
|
|
9
|
+
if TYPE_CHECKING:
|
|
10
|
+
from ..models.seiyuu import Seiyuu
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
T = TypeVar("T", bound="Character")
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
@_attrs_define
|
|
17
|
+
class Character:
|
|
18
|
+
"""Anime character
|
|
19
|
+
|
|
20
|
+
Attributes:
|
|
21
|
+
id (int): AniList character ID Example: 14545.
|
|
22
|
+
name_japanese (str): Japanese name of the character Example: 真城最高.
|
|
23
|
+
name_english (str): English name of the character Example: Moritaka Mashiro.
|
|
24
|
+
image_url (str): Character image URL Example: https://s4.anilist.co/file/anilistcdn/character/large/b14545.jpg.
|
|
25
|
+
seiyuu (Seiyuu): Japanese voice actor (seiyuu)
|
|
26
|
+
"""
|
|
27
|
+
|
|
28
|
+
id: int
|
|
29
|
+
name_japanese: str
|
|
30
|
+
name_english: str
|
|
31
|
+
image_url: str
|
|
32
|
+
seiyuu: Seiyuu
|
|
33
|
+
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
|
|
34
|
+
|
|
35
|
+
def to_dict(self) -> dict[str, Any]:
|
|
36
|
+
id = self.id
|
|
37
|
+
|
|
38
|
+
name_japanese = self.name_japanese
|
|
39
|
+
|
|
40
|
+
name_english = self.name_english
|
|
41
|
+
|
|
42
|
+
image_url = self.image_url
|
|
43
|
+
|
|
44
|
+
seiyuu = self.seiyuu.to_dict()
|
|
45
|
+
|
|
46
|
+
field_dict: dict[str, Any] = {}
|
|
47
|
+
field_dict.update(self.additional_properties)
|
|
48
|
+
field_dict.update(
|
|
49
|
+
{
|
|
50
|
+
"id": id,
|
|
51
|
+
"nameJapanese": name_japanese,
|
|
52
|
+
"nameEnglish": name_english,
|
|
53
|
+
"imageUrl": image_url,
|
|
54
|
+
"seiyuu": seiyuu,
|
|
55
|
+
}
|
|
56
|
+
)
|
|
57
|
+
|
|
58
|
+
return field_dict
|
|
59
|
+
|
|
60
|
+
@classmethod
|
|
61
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
62
|
+
from ..models.seiyuu import Seiyuu
|
|
63
|
+
|
|
64
|
+
d = dict(src_dict)
|
|
65
|
+
id = d.pop("id")
|
|
66
|
+
|
|
67
|
+
name_japanese = d.pop("nameJapanese")
|
|
68
|
+
|
|
69
|
+
name_english = d.pop("nameEnglish")
|
|
70
|
+
|
|
71
|
+
image_url = d.pop("imageUrl")
|
|
72
|
+
|
|
73
|
+
seiyuu = Seiyuu.from_dict(d.pop("seiyuu"))
|
|
74
|
+
|
|
75
|
+
character = cls(
|
|
76
|
+
id=id,
|
|
77
|
+
name_japanese=name_japanese,
|
|
78
|
+
name_english=name_english,
|
|
79
|
+
image_url=image_url,
|
|
80
|
+
seiyuu=seiyuu,
|
|
81
|
+
)
|
|
82
|
+
|
|
83
|
+
character.additional_properties = d
|
|
84
|
+
return character
|
|
85
|
+
|
|
86
|
+
@property
|
|
87
|
+
def additional_keys(self) -> list[str]:
|
|
88
|
+
return list(self.additional_properties.keys())
|
|
89
|
+
|
|
90
|
+
def __getitem__(self, key: str) -> Any:
|
|
91
|
+
return self.additional_properties[key]
|
|
92
|
+
|
|
93
|
+
def __setitem__(self, key: str, value: Any) -> None:
|
|
94
|
+
self.additional_properties[key] = value
|
|
95
|
+
|
|
96
|
+
def __delitem__(self, key: str) -> None:
|
|
97
|
+
del self.additional_properties[key]
|
|
98
|
+
|
|
99
|
+
def __contains__(self, key: str) -> bool:
|
|
100
|
+
return key in self.additional_properties
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from collections.abc import Mapping
|
|
4
|
+
from typing import Any, TypeVar
|
|
5
|
+
|
|
6
|
+
from attrs import define as _attrs_define
|
|
7
|
+
from attrs import field as _attrs_field
|
|
8
|
+
|
|
9
|
+
from ..models.character_input_character_role import CharacterInputCharacterRole
|
|
10
|
+
|
|
11
|
+
T = TypeVar("T", bound="CharacterInput")
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
@_attrs_define
|
|
15
|
+
class CharacterInput:
|
|
16
|
+
"""Character data for creating/updating media
|
|
17
|
+
|
|
18
|
+
Attributes:
|
|
19
|
+
character_id (int): AniList character ID Example: 14545.
|
|
20
|
+
character_name_japanese (str): Japanese name of the character Example: 真城最高.
|
|
21
|
+
character_name_english (str): English name of the character Example: Moritaka Mashiro.
|
|
22
|
+
character_image_url (str): Character image URL Example:
|
|
23
|
+
https://s4.anilist.co/file/anilistcdn/character/large/b14545.jpg.
|
|
24
|
+
character_role (CharacterInputCharacterRole): Character's role in the media Example: MAIN.
|
|
25
|
+
seiyuu_id (int): AniList staff ID for the Japanese voice actor Example: 95991.
|
|
26
|
+
seiyuu_name_japanese (str): Japanese name of the voice actor Example: 阿部敦.
|
|
27
|
+
seiyuu_name_english (str): English name of the voice actor Example: Atsushi Abe.
|
|
28
|
+
seiyuu_image_url (str): Voice actor profile image URL Example:
|
|
29
|
+
https://s4.anilist.co/file/anilistcdn/staff/large/n95991.jpg.
|
|
30
|
+
"""
|
|
31
|
+
|
|
32
|
+
character_id: int
|
|
33
|
+
character_name_japanese: str
|
|
34
|
+
character_name_english: str
|
|
35
|
+
character_image_url: str
|
|
36
|
+
character_role: CharacterInputCharacterRole
|
|
37
|
+
seiyuu_id: int
|
|
38
|
+
seiyuu_name_japanese: str
|
|
39
|
+
seiyuu_name_english: str
|
|
40
|
+
seiyuu_image_url: str
|
|
41
|
+
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
|
|
42
|
+
|
|
43
|
+
def to_dict(self) -> dict[str, Any]:
|
|
44
|
+
character_id = self.character_id
|
|
45
|
+
|
|
46
|
+
character_name_japanese = self.character_name_japanese
|
|
47
|
+
|
|
48
|
+
character_name_english = self.character_name_english
|
|
49
|
+
|
|
50
|
+
character_image_url = self.character_image_url
|
|
51
|
+
|
|
52
|
+
character_role = self.character_role.value
|
|
53
|
+
|
|
54
|
+
seiyuu_id = self.seiyuu_id
|
|
55
|
+
|
|
56
|
+
seiyuu_name_japanese = self.seiyuu_name_japanese
|
|
57
|
+
|
|
58
|
+
seiyuu_name_english = self.seiyuu_name_english
|
|
59
|
+
|
|
60
|
+
seiyuu_image_url = self.seiyuu_image_url
|
|
61
|
+
|
|
62
|
+
field_dict: dict[str, Any] = {}
|
|
63
|
+
field_dict.update(self.additional_properties)
|
|
64
|
+
field_dict.update(
|
|
65
|
+
{
|
|
66
|
+
"characterId": character_id,
|
|
67
|
+
"characterNameJapanese": character_name_japanese,
|
|
68
|
+
"characterNameEnglish": character_name_english,
|
|
69
|
+
"characterImageUrl": character_image_url,
|
|
70
|
+
"characterRole": character_role,
|
|
71
|
+
"seiyuuId": seiyuu_id,
|
|
72
|
+
"seiyuuNameJapanese": seiyuu_name_japanese,
|
|
73
|
+
"seiyuuNameEnglish": seiyuu_name_english,
|
|
74
|
+
"seiyuuImageUrl": seiyuu_image_url,
|
|
75
|
+
}
|
|
76
|
+
)
|
|
77
|
+
|
|
78
|
+
return field_dict
|
|
79
|
+
|
|
80
|
+
@classmethod
|
|
81
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
82
|
+
d = dict(src_dict)
|
|
83
|
+
character_id = d.pop("characterId")
|
|
84
|
+
|
|
85
|
+
character_name_japanese = d.pop("characterNameJapanese")
|
|
86
|
+
|
|
87
|
+
character_name_english = d.pop("characterNameEnglish")
|
|
88
|
+
|
|
89
|
+
character_image_url = d.pop("characterImageUrl")
|
|
90
|
+
|
|
91
|
+
character_role = CharacterInputCharacterRole(d.pop("characterRole"))
|
|
92
|
+
|
|
93
|
+
seiyuu_id = d.pop("seiyuuId")
|
|
94
|
+
|
|
95
|
+
seiyuu_name_japanese = d.pop("seiyuuNameJapanese")
|
|
96
|
+
|
|
97
|
+
seiyuu_name_english = d.pop("seiyuuNameEnglish")
|
|
98
|
+
|
|
99
|
+
seiyuu_image_url = d.pop("seiyuuImageUrl")
|
|
100
|
+
|
|
101
|
+
character_input = cls(
|
|
102
|
+
character_id=character_id,
|
|
103
|
+
character_name_japanese=character_name_japanese,
|
|
104
|
+
character_name_english=character_name_english,
|
|
105
|
+
character_image_url=character_image_url,
|
|
106
|
+
character_role=character_role,
|
|
107
|
+
seiyuu_id=seiyuu_id,
|
|
108
|
+
seiyuu_name_japanese=seiyuu_name_japanese,
|
|
109
|
+
seiyuu_name_english=seiyuu_name_english,
|
|
110
|
+
seiyuu_image_url=seiyuu_image_url,
|
|
111
|
+
)
|
|
112
|
+
|
|
113
|
+
character_input.additional_properties = d
|
|
114
|
+
return character_input
|
|
115
|
+
|
|
116
|
+
@property
|
|
117
|
+
def additional_keys(self) -> list[str]:
|
|
118
|
+
return list(self.additional_properties.keys())
|
|
119
|
+
|
|
120
|
+
def __getitem__(self, key: str) -> Any:
|
|
121
|
+
return self.additional_properties[key]
|
|
122
|
+
|
|
123
|
+
def __setitem__(self, key: str, value: Any) -> None:
|
|
124
|
+
self.additional_properties[key] = value
|
|
125
|
+
|
|
126
|
+
def __delitem__(self, key: str) -> None:
|
|
127
|
+
del self.additional_properties[key]
|
|
128
|
+
|
|
129
|
+
def __contains__(self, key: str) -> bool:
|
|
130
|
+
return key in self.additional_properties
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from collections.abc import Mapping
|
|
4
|
+
from typing import TYPE_CHECKING, Any, TypeVar
|
|
5
|
+
|
|
6
|
+
from attrs import define as _attrs_define
|
|
7
|
+
from attrs import field as _attrs_field
|
|
8
|
+
|
|
9
|
+
if TYPE_CHECKING:
|
|
10
|
+
from ..models.character_with_media_media_appearances_item import (
|
|
11
|
+
CharacterWithMediaMediaAppearancesItem,
|
|
12
|
+
)
|
|
13
|
+
from ..models.seiyuu import Seiyuu
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
T = TypeVar("T", bound="CharacterWithMedia")
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
@_attrs_define
|
|
20
|
+
class CharacterWithMedia:
|
|
21
|
+
"""Character with all media appearances
|
|
22
|
+
|
|
23
|
+
Attributes:
|
|
24
|
+
id (int): AniList character ID Example: 14545.
|
|
25
|
+
name_japanese (str): Japanese name of the character Example: 真城最高.
|
|
26
|
+
name_english (str): English name of the character Example: Moritaka Mashiro.
|
|
27
|
+
image_url (str): Character image URL Example: https://s4.anilist.co/file/anilistcdn/character/large/b14545.jpg.
|
|
28
|
+
seiyuu (Seiyuu): Japanese voice actor (seiyuu)
|
|
29
|
+
media_appearances (list[CharacterWithMediaMediaAppearancesItem]): All media this character appears in
|
|
30
|
+
"""
|
|
31
|
+
|
|
32
|
+
id: int
|
|
33
|
+
name_japanese: str
|
|
34
|
+
name_english: str
|
|
35
|
+
image_url: str
|
|
36
|
+
seiyuu: Seiyuu
|
|
37
|
+
media_appearances: list[CharacterWithMediaMediaAppearancesItem]
|
|
38
|
+
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
|
|
39
|
+
|
|
40
|
+
def to_dict(self) -> dict[str, Any]:
|
|
41
|
+
id = self.id
|
|
42
|
+
|
|
43
|
+
name_japanese = self.name_japanese
|
|
44
|
+
|
|
45
|
+
name_english = self.name_english
|
|
46
|
+
|
|
47
|
+
image_url = self.image_url
|
|
48
|
+
|
|
49
|
+
seiyuu = self.seiyuu.to_dict()
|
|
50
|
+
|
|
51
|
+
media_appearances = []
|
|
52
|
+
for media_appearances_item_data in self.media_appearances:
|
|
53
|
+
media_appearances_item = media_appearances_item_data.to_dict()
|
|
54
|
+
media_appearances.append(media_appearances_item)
|
|
55
|
+
|
|
56
|
+
field_dict: dict[str, Any] = {}
|
|
57
|
+
field_dict.update(self.additional_properties)
|
|
58
|
+
field_dict.update(
|
|
59
|
+
{
|
|
60
|
+
"id": id,
|
|
61
|
+
"nameJapanese": name_japanese,
|
|
62
|
+
"nameEnglish": name_english,
|
|
63
|
+
"imageUrl": image_url,
|
|
64
|
+
"seiyuu": seiyuu,
|
|
65
|
+
"mediaAppearances": media_appearances,
|
|
66
|
+
}
|
|
67
|
+
)
|
|
68
|
+
|
|
69
|
+
return field_dict
|
|
70
|
+
|
|
71
|
+
@classmethod
|
|
72
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
73
|
+
from ..models.character_with_media_media_appearances_item import (
|
|
74
|
+
CharacterWithMediaMediaAppearancesItem,
|
|
75
|
+
)
|
|
76
|
+
from ..models.seiyuu import Seiyuu
|
|
77
|
+
|
|
78
|
+
d = dict(src_dict)
|
|
79
|
+
id = d.pop("id")
|
|
80
|
+
|
|
81
|
+
name_japanese = d.pop("nameJapanese")
|
|
82
|
+
|
|
83
|
+
name_english = d.pop("nameEnglish")
|
|
84
|
+
|
|
85
|
+
image_url = d.pop("imageUrl")
|
|
86
|
+
|
|
87
|
+
seiyuu = Seiyuu.from_dict(d.pop("seiyuu"))
|
|
88
|
+
|
|
89
|
+
media_appearances = []
|
|
90
|
+
_media_appearances = d.pop("mediaAppearances")
|
|
91
|
+
for media_appearances_item_data in _media_appearances:
|
|
92
|
+
media_appearances_item = CharacterWithMediaMediaAppearancesItem.from_dict(
|
|
93
|
+
media_appearances_item_data
|
|
94
|
+
)
|
|
95
|
+
|
|
96
|
+
media_appearances.append(media_appearances_item)
|
|
97
|
+
|
|
98
|
+
character_with_media = cls(
|
|
99
|
+
id=id,
|
|
100
|
+
name_japanese=name_japanese,
|
|
101
|
+
name_english=name_english,
|
|
102
|
+
image_url=image_url,
|
|
103
|
+
seiyuu=seiyuu,
|
|
104
|
+
media_appearances=media_appearances,
|
|
105
|
+
)
|
|
106
|
+
|
|
107
|
+
character_with_media.additional_properties = d
|
|
108
|
+
return character_with_media
|
|
109
|
+
|
|
110
|
+
@property
|
|
111
|
+
def additional_keys(self) -> list[str]:
|
|
112
|
+
return list(self.additional_properties.keys())
|
|
113
|
+
|
|
114
|
+
def __getitem__(self, key: str) -> Any:
|
|
115
|
+
return self.additional_properties[key]
|
|
116
|
+
|
|
117
|
+
def __setitem__(self, key: str, value: Any) -> None:
|
|
118
|
+
self.additional_properties[key] = value
|
|
119
|
+
|
|
120
|
+
def __delitem__(self, key: str) -> None:
|
|
121
|
+
del self.additional_properties[key]
|
|
122
|
+
|
|
123
|
+
def __contains__(self, key: str) -> bool:
|
|
124
|
+
return key in self.additional_properties
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from collections.abc import Mapping
|
|
4
|
+
from typing import TYPE_CHECKING, Any, TypeVar
|
|
5
|
+
|
|
6
|
+
from attrs import define as _attrs_define
|
|
7
|
+
from attrs import field as _attrs_field
|
|
8
|
+
|
|
9
|
+
from ..models.character_with_media_media_appearances_item_role import (
|
|
10
|
+
CharacterWithMediaMediaAppearancesItemRole,
|
|
11
|
+
)
|
|
12
|
+
from ..types import UNSET, Unset
|
|
13
|
+
|
|
14
|
+
if TYPE_CHECKING:
|
|
15
|
+
from ..models.media import Media
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
T = TypeVar("T", bound="CharacterWithMediaMediaAppearancesItem")
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
@_attrs_define
|
|
22
|
+
class CharacterWithMediaMediaAppearancesItem:
|
|
23
|
+
"""
|
|
24
|
+
Attributes:
|
|
25
|
+
media (Media | Unset): Media entry with full metadata
|
|
26
|
+
role (CharacterWithMediaMediaAppearancesItemRole | Unset): Character role in this media Example: MAIN.
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
media: Media | Unset = UNSET
|
|
30
|
+
role: CharacterWithMediaMediaAppearancesItemRole | Unset = UNSET
|
|
31
|
+
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
|
|
32
|
+
|
|
33
|
+
def to_dict(self) -> dict[str, Any]:
|
|
34
|
+
media: dict[str, Any] | Unset = UNSET
|
|
35
|
+
if not isinstance(self.media, Unset):
|
|
36
|
+
media = self.media.to_dict()
|
|
37
|
+
|
|
38
|
+
role: str | Unset = UNSET
|
|
39
|
+
if not isinstance(self.role, Unset):
|
|
40
|
+
role = self.role.value
|
|
41
|
+
|
|
42
|
+
field_dict: dict[str, Any] = {}
|
|
43
|
+
field_dict.update(self.additional_properties)
|
|
44
|
+
field_dict.update({})
|
|
45
|
+
if media is not UNSET:
|
|
46
|
+
field_dict["media"] = media
|
|
47
|
+
if role is not UNSET:
|
|
48
|
+
field_dict["role"] = role
|
|
49
|
+
|
|
50
|
+
return field_dict
|
|
51
|
+
|
|
52
|
+
@classmethod
|
|
53
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
54
|
+
from ..models.media import Media
|
|
55
|
+
|
|
56
|
+
d = dict(src_dict)
|
|
57
|
+
_media = d.pop("media", UNSET)
|
|
58
|
+
media: Media | Unset
|
|
59
|
+
if isinstance(_media, Unset):
|
|
60
|
+
media = UNSET
|
|
61
|
+
else:
|
|
62
|
+
media = Media.from_dict(_media)
|
|
63
|
+
|
|
64
|
+
_role = d.pop("role", UNSET)
|
|
65
|
+
role: CharacterWithMediaMediaAppearancesItemRole | Unset
|
|
66
|
+
if isinstance(_role, Unset):
|
|
67
|
+
role = UNSET
|
|
68
|
+
else:
|
|
69
|
+
role = CharacterWithMediaMediaAppearancesItemRole(_role)
|
|
70
|
+
|
|
71
|
+
character_with_media_media_appearances_item = cls(
|
|
72
|
+
media=media,
|
|
73
|
+
role=role,
|
|
74
|
+
)
|
|
75
|
+
|
|
76
|
+
character_with_media_media_appearances_item.additional_properties = d
|
|
77
|
+
return character_with_media_media_appearances_item
|
|
78
|
+
|
|
79
|
+
@property
|
|
80
|
+
def additional_keys(self) -> list[str]:
|
|
81
|
+
return list(self.additional_properties.keys())
|
|
82
|
+
|
|
83
|
+
def __getitem__(self, key: str) -> Any:
|
|
84
|
+
return self.additional_properties[key]
|
|
85
|
+
|
|
86
|
+
def __setitem__(self, key: str, value: Any) -> None:
|
|
87
|
+
self.additional_properties[key] = value
|
|
88
|
+
|
|
89
|
+
def __delitem__(self, key: str) -> None:
|
|
90
|
+
del self.additional_properties[key]
|
|
91
|
+
|
|
92
|
+
def __contains__(self, key: str) -> bool:
|
|
93
|
+
return key in self.additional_properties
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from collections.abc import Mapping
|
|
4
|
+
from typing import Any, TypeVar, cast
|
|
5
|
+
|
|
6
|
+
from attrs import define as _attrs_define
|
|
7
|
+
from attrs import field as _attrs_field
|
|
8
|
+
|
|
9
|
+
from ..types import UNSET, Unset
|
|
10
|
+
|
|
11
|
+
T = TypeVar("T", bound="CreateApiKeyRequest")
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
@_attrs_define
|
|
15
|
+
class CreateApiKeyRequest:
|
|
16
|
+
"""Create API key request
|
|
17
|
+
|
|
18
|
+
Attributes:
|
|
19
|
+
name (str): Name for the API key
|
|
20
|
+
permissions (list[str] | Unset): List of permissions for the API key. Defaults to READ_MEDIA if not provided.
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
name: str
|
|
24
|
+
permissions: list[str] | Unset = UNSET
|
|
25
|
+
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
|
|
26
|
+
|
|
27
|
+
def to_dict(self) -> dict[str, Any]:
|
|
28
|
+
name = self.name
|
|
29
|
+
|
|
30
|
+
permissions: list[str] | Unset = UNSET
|
|
31
|
+
if not isinstance(self.permissions, Unset):
|
|
32
|
+
permissions = self.permissions
|
|
33
|
+
|
|
34
|
+
field_dict: dict[str, Any] = {}
|
|
35
|
+
field_dict.update(self.additional_properties)
|
|
36
|
+
field_dict.update(
|
|
37
|
+
{
|
|
38
|
+
"name": name,
|
|
39
|
+
}
|
|
40
|
+
)
|
|
41
|
+
if permissions is not UNSET:
|
|
42
|
+
field_dict["permissions"] = permissions
|
|
43
|
+
|
|
44
|
+
return field_dict
|
|
45
|
+
|
|
46
|
+
@classmethod
|
|
47
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
48
|
+
d = dict(src_dict)
|
|
49
|
+
name = d.pop("name")
|
|
50
|
+
|
|
51
|
+
permissions = cast(list[str], d.pop("permissions", UNSET))
|
|
52
|
+
|
|
53
|
+
create_api_key_request = cls(
|
|
54
|
+
name=name,
|
|
55
|
+
permissions=permissions,
|
|
56
|
+
)
|
|
57
|
+
|
|
58
|
+
create_api_key_request.additional_properties = d
|
|
59
|
+
return create_api_key_request
|
|
60
|
+
|
|
61
|
+
@property
|
|
62
|
+
def additional_keys(self) -> list[str]:
|
|
63
|
+
return list(self.additional_properties.keys())
|
|
64
|
+
|
|
65
|
+
def __getitem__(self, key: str) -> Any:
|
|
66
|
+
return self.additional_properties[key]
|
|
67
|
+
|
|
68
|
+
def __setitem__(self, key: str, value: Any) -> None:
|
|
69
|
+
self.additional_properties[key] = value
|
|
70
|
+
|
|
71
|
+
def __delitem__(self, key: str) -> None:
|
|
72
|
+
del self.additional_properties[key]
|
|
73
|
+
|
|
74
|
+
def __contains__(self, key: str) -> bool:
|
|
75
|
+
return key in self.additional_properties
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from collections.abc import Mapping
|
|
4
|
+
from typing import Any, TypeVar
|
|
5
|
+
|
|
6
|
+
from attrs import define as _attrs_define
|
|
7
|
+
from attrs import field as _attrs_field
|
|
8
|
+
|
|
9
|
+
T = TypeVar("T", bound="CreateApiKeyResponse")
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
@_attrs_define
|
|
13
|
+
class CreateApiKeyResponse:
|
|
14
|
+
"""Create API key response
|
|
15
|
+
|
|
16
|
+
Attributes:
|
|
17
|
+
message (str): Success message
|
|
18
|
+
key (str): The generated API key (only shown once)
|
|
19
|
+
"""
|
|
20
|
+
|
|
21
|
+
message: str
|
|
22
|
+
key: str
|
|
23
|
+
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
|
|
24
|
+
|
|
25
|
+
def to_dict(self) -> dict[str, Any]:
|
|
26
|
+
message = self.message
|
|
27
|
+
|
|
28
|
+
key = self.key
|
|
29
|
+
|
|
30
|
+
field_dict: dict[str, Any] = {}
|
|
31
|
+
field_dict.update(self.additional_properties)
|
|
32
|
+
field_dict.update(
|
|
33
|
+
{
|
|
34
|
+
"message": message,
|
|
35
|
+
"key": key,
|
|
36
|
+
}
|
|
37
|
+
)
|
|
38
|
+
|
|
39
|
+
return field_dict
|
|
40
|
+
|
|
41
|
+
@classmethod
|
|
42
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
43
|
+
d = dict(src_dict)
|
|
44
|
+
message = d.pop("message")
|
|
45
|
+
|
|
46
|
+
key = d.pop("key")
|
|
47
|
+
|
|
48
|
+
create_api_key_response = cls(
|
|
49
|
+
message=message,
|
|
50
|
+
key=key,
|
|
51
|
+
)
|
|
52
|
+
|
|
53
|
+
create_api_key_response.additional_properties = d
|
|
54
|
+
return create_api_key_response
|
|
55
|
+
|
|
56
|
+
@property
|
|
57
|
+
def additional_keys(self) -> list[str]:
|
|
58
|
+
return list(self.additional_properties.keys())
|
|
59
|
+
|
|
60
|
+
def __getitem__(self, key: str) -> Any:
|
|
61
|
+
return self.additional_properties[key]
|
|
62
|
+
|
|
63
|
+
def __setitem__(self, key: str, value: Any) -> None:
|
|
64
|
+
self.additional_properties[key] = value
|
|
65
|
+
|
|
66
|
+
def __delitem__(self, key: str) -> None:
|
|
67
|
+
del self.additional_properties[key]
|
|
68
|
+
|
|
69
|
+
def __contains__(self, key: str) -> bool:
|
|
70
|
+
return key in self.additional_properties
|