anilibria-api-client 0.1.6__py3-none-any.whl → 0.1.8__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.
@@ -1,348 +1,349 @@
1
- from ._libria import BaseMethod
2
- from ..models import TimeCode, ReleaseCollection
3
- from ._helper import validate_collection, validated_json_collection
4
- from typing import Optional, List, Dict
5
-
6
- class AccountsMethod(BaseMethod):
7
- async def otp_get(
8
- self,
9
- device_id: str
10
- ):
11
- """
12
- Запрашиваем новый одноразовый пароль
13
-
14
- :param device_id: ID девайса (необходим)
15
- """
16
-
17
- data = {
18
- 'device_id': device_id
19
- }
20
-
21
- return await self._api.post("/accounts/otp/get", json_data=data)
22
-
23
- async def otp_accept(
24
- self,
25
- code: int
26
- ):
27
- """
28
- Присоединяем пользователя к выданному одноразовому паролю
29
-
30
- :param code: Код девайса (необходим)
31
- """
32
-
33
- data = {
34
- 'code': code
35
- }
36
-
37
- return await self._api.post("/accounts/otp/accept", json_data=data)
38
-
39
- async def otp_login(
40
- self,
41
- code: int,
42
- device_id: str
43
- ):
44
- """
45
- Авторизуемся по выданному одноразовому паролю
46
-
47
- :param code: Код девайса (необходим)
48
- :param device_id: ID девайса (необходим)
49
- """
50
-
51
- data = {
52
- 'code': code,
53
- 'device_id': device_id
54
- }
55
-
56
- return await self._api.post("/accounts/otp/login", json_data=data)
57
-
58
- async def users_auth_login(
59
- self,
60
- login: str,
61
- password: str,
62
- ):
63
- """
64
- Авторизация пользователя по логину и паролю. Создание сессии пользователя, выдача токена авторизации для использования в cookies или в Bearer Token
65
-
66
- :param login: Логин аккаунта (необходим)
67
- :param password: Пароль аккаунта (необходим)
68
- """
69
-
70
- data = {
71
- "login": login,
72
- "password": password
73
- }
74
-
75
- return await self._api.post("/accounts/users/auth/login", json_data=data)
76
-
77
- async def users_auth_logout(
78
- self
79
- ):
80
- """
81
- Деавторизовать пользователя
82
- """
83
- return await self._api.post("/accounts/users/auth/login")
84
-
85
- async def users_auth_social_login(
86
- self,
87
- provider: str,
88
- ):
89
- """
90
- Позволяет авторизовать пользователя через некоторые социальные сети
91
-
92
- :param provider: Провайдер социальной сети vk, google, patreon, discord (необходим)
93
- """
94
- return await self._api.get(f"/accounts/users/auth/social/{provider}/login")
95
-
96
- async def users_auth_social_authenticate(
97
- self,
98
- state: str
99
- ):
100
- """
101
- Позволяет аутентифицировать авторизованного через социальную сеть пользователя
102
-
103
- :param state: Ключ аутентификации users_auth_social_login (необходим)
104
- """
105
- query = {
106
- "state": state
107
- }
108
-
109
- return await self._api.get("/accounts/users/auth/social/authenticate", params=query)
110
-
111
- async def users_auth_password_forget(
112
- self,
113
- email: str
114
- ):
115
- """
116
- Отправление ссылки на восстановление забытого пароля
117
-
118
- :param email: Email аккаунта
119
- """
120
-
121
- data = {
122
- "email": email
123
- }
124
-
125
- return await self._api.post("/accounts/users/auth/password/forget", json_data=data)
126
-
127
- async def users_auth_password_reset(
128
- self,
129
- token: str,
130
- password: str,
131
- password_confirmation: str
132
- ):
133
- """
134
- Сброс и установка нового пароля
135
-
136
- :param token: Токен с email
137
- :param password: Пароль
138
- :param password_confirmation: Подтверждение пароля
139
- """
140
-
141
- data = {
142
- "token": token,
143
- "password": password,
144
- "password_confirmation": password_confirmation
145
- }
146
-
147
- return await self._api.post("/accounts/users/auth/password/reset", json_data=data)
148
-
149
- async def users_me_collections_references_age_ratings(
150
- self
151
- ):
152
- """
153
- Возвращает список возрастных рейтингов в коллекциях текущего пользователя (auth need)
154
- """
155
-
156
- return await self._api.get("/accounts/users/me/collections/references/age-ratings")
157
-
158
- async def users_me_collections_references_genres(
159
- self
160
- ):
161
- """
162
- Возвращает список жанров в коллекциях текущего пользователя (auth need)
163
- """
164
-
165
- return await self._api.get("/accounts/users/me/collections/references/genres")
166
-
167
- async def users_me_collections_references_types(
168
- self
169
- ):
170
- """
171
- Возвращает список типов в коллекциях текущего пользователя (auth need)
172
- """
173
-
174
- return await self._api.get("/accounts/users/me/collections/references/types")
175
-
176
- async def users_me_collections_references_years(
177
- self
178
- ):
179
- """
180
- Возвращает список годов в коллекциях текущего пользователя (auth need)
181
- """
182
-
183
- return await self._api.get("/accounts/users/me/collections/references/years")
184
-
185
- async def users_me_collections_ids(
186
- self
187
- ):
188
- """
189
- Возвращает данные по идентификаторам релизов и типов коллекций авторизованного пользователя
190
- """
191
- return await self._api.get("/accounts/users/me/collections/ids")
192
-
193
- async def users_me_collections_releases_get(
194
- self,
195
- release_collection: ReleaseCollection
196
- ):
197
- """
198
- Возвращает данные по релизам из определенной коллекции авторизованного пользователя
199
-
200
- Args:
201
- release_collection: тело ReleaseCollection
202
- """
203
- params = {
204
- 'page': release_collection.page,
205
- 'limit': release_collection.limit,
206
- 'type_of_collection': release_collection.type_of_collection.value,
207
- 'include': release_collection.include,
208
- 'exclude': release_collection.exclude
209
- }
210
-
211
- coll = await validate_collection(params=release_collection)
212
- final_params = {**params, **coll}
213
-
214
- return await self._api.get("/accounts/users/me/collections/releases", params=final_params)
215
-
216
- async def users_me_collections_releases_post(
217
- self,
218
- release_collection: ReleaseCollection
219
- ):
220
- """
221
- Возвращает данные по релизам из определенной коллекции авторизованного пользователя
222
-
223
- Args:
224
- release_collection: тело ReleaseCollection
225
- """
226
- json = {
227
- 'page': release_collection.page,
228
- 'limit': release_collection.limit,
229
- 'type_of_collection': release_collection.type_of_collection.value,
230
- 'include': release_collection.include,
231
- 'exclude': release_collection.exclude
232
- }
233
-
234
- coll = await validated_json_collection(release=release_collection)
235
- final_json = {**json, **coll}
236
-
237
- return await self._api.post("/accounts/users/me/collections/releases", json_data=final_json)
238
-
239
- async def users_me_collections_add(
240
- self,
241
- release_ids: List[int]
242
- ):
243
- """
244
- Добавляет релизы в избранное авторизованного пользователя
245
-
246
- :param release_id: ID релиза
247
- """
248
- params = [{"release_id": a} for a in release_ids]
249
-
250
- return await self._api.post("/accounts/users/me/favorites", json_data=params)
251
-
252
- async def users_me_collections_delete(
253
- self,
254
- release_ids: List[int]
255
- ):
256
- """
257
- Удаляет релизы из избранного авторизованного пользователя
258
-
259
- :param release_id: ID релиза
260
- """
261
- params = [{"release_id": a} for a in release_ids]
262
-
263
- return await self._api.delete("/accounts/users/me/favorites", json_data=params)
264
-
265
- async def users_me_profile(
266
- self,
267
- include: Optional[str] = None,
268
- exclude: Optional[str] = None
269
- ):
270
- """
271
- Возвращает данные профиля авторизованного пользователя (auth need)
272
-
273
- :param include: Опционально. Список включаемых полей. Через запятую или множественные параметры. Поддерживается вложенность через точку. Example : id,type.genres
274
- :param exclude: Опционально. Список исключаемых полей. Через запятую или множественные параметры. Поддерживается вложенность через точку. Приоритет над include Example : poster,description
275
- """
276
-
277
- query = {
278
- 'include': include,
279
- 'exclude': exclude
280
- }
281
-
282
- return await self._api.get("/accounts/users/me/profile", params=query)
283
-
284
- async def users_me_views_history(
285
- self,
286
- page: Optional[int] = None,
287
- limit: Optional[int] = None,
288
- include: Optional[str] = None,
289
- exclude: Optional[str] = None
290
- ):
291
- """
292
- Возвращает историю просмотров эпизодов авторизованного пользователя
293
-
294
- Args:
295
- page: Опционально. Номер страницы
296
- limit: Опционально. Лимит на страницу
297
- include: Опционально. Список включаемых полей. Через запятую или множественные параметры. Поддерживается вложенность через точку.
298
- exclude: Опционально. Список исключаемых полей. Через запятую или множественные параметры. Поддерживается вложенность через точку. Приоритет над include
299
- """
300
- params = {
301
- "page": page,
302
- "limit": limit,
303
- "include": include,
304
- "exclude": exclude
305
- }
306
- return await self._api.get("/accounts/users/me/views/history", params=params)
307
-
308
- async def users_me_views_timecodes(
309
- self,
310
- since: Optional[str]
311
- ):
312
- """
313
- Возвращает таймкоды по прогрессу просмотренных эпизодов
314
-
315
- :param since: Опционально. Возвращает только таймкоды, которые были добавлены после указанного времени (в iso формате). Example: 2025-05-12T07:20:50.52Z
316
- """
317
- params = {
318
- "since": since
319
- }
320
- return await self._api.get("/accounts/users/me/views/timecodes", params=params)
321
-
322
- async def users_me_views_timecodes_update(
323
- self,
324
- timecode_list: List[TimeCode]
325
- ):
326
- """
327
- Обновляет таймкоды просмотренных эпизодов
328
-
329
- :param timecode_list: Лист из обьектов TimeCode. Example: [TimeCode(...)]
330
- """
331
- json = [timecode.model_dump(mode='json') for timecode in timecode_list]
332
-
333
- return await self._api.post("/accounts/users/me/views/timecodes", json_data=json)
334
-
335
- async def users_me_views_timecodes_delete(
336
- self,
337
- episode_id_list: List[str]
338
- ):
339
- """
340
- Удаляет данные по таймкодам просмотров для указанных эпизодов
341
-
342
- :param episode_id_list: Лист из episode_id. Example: ["id", "id"]
343
- """
344
- list_ = []
345
- for episode in episode_id_list:
346
- list_.append({"release_episode_id": episode})
347
-
1
+ from ._libria import BaseMethod
2
+ from ..models import TimeCode, ReleaseCollection
3
+ from ._helper import validate_collection, validated_json_collection
4
+ from typing import Optional, List
5
+
6
+
7
+ class AccountsMethod(BaseMethod):
8
+ async def otp_get(
9
+ self,
10
+ device_id: str
11
+ ):
12
+ """
13
+ Запрашиваем новый одноразовый пароль
14
+
15
+ :param device_id: ID девайса (необходим)
16
+ """
17
+
18
+ data = {
19
+ 'device_id': device_id
20
+ }
21
+
22
+ return await self._api.post("/accounts/otp/get", json_data=data)
23
+
24
+ async def otp_accept(
25
+ self,
26
+ code: int
27
+ ):
28
+ """
29
+ Присоединяем пользователя к выданному одноразовому паролю
30
+
31
+ :param code: Код девайса (необходим)
32
+ """
33
+
34
+ data = {
35
+ 'code': code
36
+ }
37
+
38
+ return await self._api.post("/accounts/otp/accept", json_data=data)
39
+
40
+ async def otp_login(
41
+ self,
42
+ code: int,
43
+ device_id: str
44
+ ):
45
+ """
46
+ Авторизуемся по выданному одноразовому паролю
47
+
48
+ :param code: Код девайса (необходим)
49
+ :param device_id: ID девайса (необходим)
50
+ """
51
+
52
+ data = {
53
+ 'code': code,
54
+ 'device_id': device_id
55
+ }
56
+
57
+ return await self._api.post("/accounts/otp/login", json_data=data)
58
+
59
+ async def users_auth_login(
60
+ self,
61
+ login: str,
62
+ password: str,
63
+ ):
64
+ """
65
+ Авторизация пользователя по логину и паролю. Создание сессии пользователя, выдача токена авторизации для использования в cookies или в Bearer Token
66
+
67
+ :param login: Логин аккаунта (необходим)
68
+ :param password: Пароль аккаунта (необходим)
69
+ """
70
+
71
+ data = {
72
+ "login": login,
73
+ "password": password
74
+ }
75
+
76
+ return await self._api.post("/accounts/users/auth/login", json_data=data)
77
+
78
+ async def users_auth_logout(
79
+ self
80
+ ):
81
+ """
82
+ Деавторизовать пользователя
83
+ """
84
+ return await self._api.post("/accounts/users/auth/login")
85
+
86
+ async def users_auth_social_login(
87
+ self,
88
+ provider: str,
89
+ ):
90
+ """
91
+ Позволяет авторизовать пользователя через некоторые социальные сети
92
+
93
+ :param provider: Провайдер социальной сети vk, google, patreon, discord (необходим)
94
+ """
95
+ return await self._api.get(f"/accounts/users/auth/social/{provider}/login")
96
+
97
+ async def users_auth_social_authenticate(
98
+ self,
99
+ state: str
100
+ ):
101
+ """
102
+ Позволяет аутентифицировать авторизованного через социальную сеть пользователя
103
+
104
+ :param state: Ключ аутентификации users_auth_social_login (необходим)
105
+ """
106
+ query = {
107
+ "state": state
108
+ }
109
+
110
+ return await self._api.get("/accounts/users/auth/social/authenticate", params=query)
111
+
112
+ async def users_auth_password_forget(
113
+ self,
114
+ email: str
115
+ ):
116
+ """
117
+ Отправление ссылки на восстановление забытого пароля
118
+
119
+ :param email: Email аккаунта
120
+ """
121
+
122
+ data = {
123
+ "email": email
124
+ }
125
+
126
+ return await self._api.post("/accounts/users/auth/password/forget", json_data=data)
127
+
128
+ async def users_auth_password_reset(
129
+ self,
130
+ token: str,
131
+ password: str,
132
+ password_confirmation: str
133
+ ):
134
+ """
135
+ Сброс и установка нового пароля
136
+
137
+ :param token: Токен с email
138
+ :param password: Пароль
139
+ :param password_confirmation: Подтверждение пароля
140
+ """
141
+
142
+ data = {
143
+ "token": token,
144
+ "password": password,
145
+ "password_confirmation": password_confirmation
146
+ }
147
+
148
+ return await self._api.post("/accounts/users/auth/password/reset", json_data=data)
149
+
150
+ async def users_me_collections_references_age_ratings(
151
+ self
152
+ ):
153
+ """
154
+ Возвращает список возрастных рейтингов в коллекциях текущего пользователя (auth need)
155
+ """
156
+
157
+ return await self._api.get("/accounts/users/me/collections/references/age-ratings")
158
+
159
+ async def users_me_collections_references_genres(
160
+ self
161
+ ):
162
+ """
163
+ Возвращает список жанров в коллекциях текущего пользователя (auth need)
164
+ """
165
+
166
+ return await self._api.get("/accounts/users/me/collections/references/genres")
167
+
168
+ async def users_me_collections_references_types(
169
+ self
170
+ ):
171
+ """
172
+ Возвращает список типов в коллекциях текущего пользователя (auth need)
173
+ """
174
+
175
+ return await self._api.get("/accounts/users/me/collections/references/types")
176
+
177
+ async def users_me_collections_references_years(
178
+ self
179
+ ):
180
+ """
181
+ Возвращает список годов в коллекциях текущего пользователя (auth need)
182
+ """
183
+
184
+ return await self._api.get("/accounts/users/me/collections/references/years")
185
+
186
+ async def users_me_collections_ids(
187
+ self
188
+ ):
189
+ """
190
+ Возвращает данные по идентификаторам релизов и типов коллекций авторизованного пользователя
191
+ """
192
+ return await self._api.get("/accounts/users/me/collections/ids")
193
+
194
+ async def users_me_collections_releases_get(
195
+ self,
196
+ release_collection: ReleaseCollection
197
+ ):
198
+ """
199
+ Возвращает данные по релизам из определенной коллекции авторизованного пользователя
200
+
201
+ Args:
202
+ release_collection: тело ReleaseCollection
203
+ """
204
+ params = {
205
+ 'page': release_collection.page,
206
+ 'limit': release_collection.limit,
207
+ 'type_of_collection': release_collection.type_of_collection.value,
208
+ 'include': release_collection.include,
209
+ 'exclude': release_collection.exclude
210
+ }
211
+
212
+ coll = await validate_collection(params=release_collection)
213
+ final_params = {**params, **coll}
214
+
215
+ return await self._api.get("/accounts/users/me/collections/releases", params=final_params)
216
+
217
+ async def users_me_collections_releases_post(
218
+ self,
219
+ release_collection: ReleaseCollection
220
+ ):
221
+ """
222
+ Возвращает данные по релизам из определенной коллекции авторизованного пользователя
223
+
224
+ Args:
225
+ release_collection: тело ReleaseCollection
226
+ """
227
+ json = {
228
+ 'page': release_collection.page,
229
+ 'limit': release_collection.limit,
230
+ 'type_of_collection': release_collection.type_of_collection.value,
231
+ 'include': release_collection.include,
232
+ 'exclude': release_collection.exclude
233
+ }
234
+
235
+ coll = await validated_json_collection(release=release_collection)
236
+ final_json = {**json, **coll}
237
+
238
+ return await self._api.post("/accounts/users/me/collections/releases", json_data=final_json)
239
+
240
+ async def users_me_collections_add(
241
+ self,
242
+ release_ids: List[int]
243
+ ):
244
+ """
245
+ Добавляет релизы в избранное авторизованного пользователя
246
+
247
+ :param release_id: ID релиза
248
+ """
249
+ params = [{"release_id": a} for a in release_ids]
250
+
251
+ return await self._api.post("/accounts/users/me/favorites", json_data=params)
252
+
253
+ async def users_me_collections_delete(
254
+ self,
255
+ release_ids: List[int]
256
+ ):
257
+ """
258
+ Удаляет релизы из избранного авторизованного пользователя
259
+
260
+ :param release_id: ID релиза
261
+ """
262
+ params = [{"release_id": a} for a in release_ids]
263
+
264
+ return await self._api.delete("/accounts/users/me/favorites", json_data=params)
265
+
266
+ async def users_me_profile(
267
+ self,
268
+ include: Optional[str] = None,
269
+ exclude: Optional[str] = None
270
+ ):
271
+ """
272
+ Возвращает данные профиля авторизованного пользователя (auth need)
273
+
274
+ :param include: Опционально. Список включаемых полей. Через запятую или множественные параметры. Поддерживается вложенность через точку. Example : id,type.genres
275
+ :param exclude: Опционально. Список исключаемых полей. Через запятую или множественные параметры. Поддерживается вложенность через точку. Приоритет над include Example : poster,description
276
+ """
277
+
278
+ query = {
279
+ 'include': include,
280
+ 'exclude': exclude
281
+ }
282
+
283
+ return await self._api.get("/accounts/users/me/profile", params=query)
284
+
285
+ async def users_me_views_history(
286
+ self,
287
+ page: Optional[int] = None,
288
+ limit: Optional[int] = None,
289
+ include: Optional[str] = None,
290
+ exclude: Optional[str] = None
291
+ ):
292
+ """
293
+ Возвращает историю просмотров эпизодов авторизованного пользователя
294
+
295
+ Args:
296
+ page: Опционально. Номер страницы
297
+ limit: Опционально. Лимит на страницу
298
+ include: Опционально. Список включаемых полей. Через запятую или множественные параметры. Поддерживается вложенность через точку.
299
+ exclude: Опционально. Список исключаемых полей. Через запятую или множественные параметры. Поддерживается вложенность через точку. Приоритет над include
300
+ """
301
+ params = {
302
+ "page": page,
303
+ "limit": limit,
304
+ "include": include,
305
+ "exclude": exclude
306
+ }
307
+ return await self._api.get("/accounts/users/me/views/history", params=params)
308
+
309
+ async def users_me_views_timecodes(
310
+ self,
311
+ since: Optional[str]
312
+ ):
313
+ """
314
+ Возвращает таймкоды по прогрессу просмотренных эпизодов
315
+
316
+ :param since: Опционально. Возвращает только таймкоды, которые были добавлены после указанного времени (в iso формате). Example: 2025-05-12T07:20:50.52Z
317
+ """
318
+ params = {
319
+ "since": since
320
+ }
321
+ return await self._api.get("/accounts/users/me/views/timecodes", params=params)
322
+
323
+ async def users_me_views_timecodes_update(
324
+ self,
325
+ timecode_list: List[TimeCode]
326
+ ):
327
+ """
328
+ Обновляет таймкоды просмотренных эпизодов
329
+
330
+ :param timecode_list: Лист из обьектов TimeCode. Example: [TimeCode(...)]
331
+ """
332
+ json = [timecode.model_dump(mode='json') for timecode in timecode_list]
333
+
334
+ return await self._api.post("/accounts/users/me/views/timecodes", json_data=json)
335
+
336
+ async def users_me_views_timecodes_delete(
337
+ self,
338
+ episode_id_list: List[str]
339
+ ):
340
+ """
341
+ Удаляет данные по таймкодам просмотров для указанных эпизодов
342
+
343
+ :param episode_id_list: Лист из episode_id. Example: ["id", "id"]
344
+ """
345
+ list_ = []
346
+ for episode in episode_id_list:
347
+ list_.append({"release_episode_id": episode})
348
+
348
349
  return await self._api.delete("/accounts/users/me/views/timecodes", json_data=list_)