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,670 +1,670 @@
1
- from ._libria import BaseMethod
2
- from ._helper import validate_filters, create_filters_from_release
3
- from ..models import Release
4
- from typing import Optional, List
5
-
6
-
7
- class AnimeMethod(BaseMethod):
8
- async def catalog_releases_get(
9
- self,
10
- params: Release
11
- ):
12
- """
13
- Возвращает список релизов по заданными параметрам (GET запрос)
14
-
15
- :param params: Тело Release
16
- """
17
- body = {
18
- "page": params.page,
19
- "limit":params.limit,
20
- "include": params.include,
21
- "exclude": params.exclude,
22
- }
23
- validated_f_args = await validate_filters(params=params)
24
- final_body = {**body, **validated_f_args}
25
-
26
- return await self._api.get("/anime/catalog/releases", params=final_body)
27
-
28
- async def catalog_releases_post(
29
- self,
30
- params: Release
31
- ):
32
- """
33
- Возвращает список релизов по заданными параметрам (POST запрос)
34
-
35
- :param params: Тело Release
36
- """
37
- body = {
38
- "page": params.page,
39
- "limit":params.limit,
40
- "include": params.include,
41
- "exclude": params.exclude,
42
- }
43
- filters = await create_filters_from_release(params)
44
- final_body = {**body, **filters}
45
-
46
- return await self._api.post("/anime/catalog/releases", json_data=final_body)
47
-
48
- async def catalog_references_age_ratings(
49
- self
50
- ):
51
- """
52
- Возвращает список возможных возрастных рейтингов в каталоге
53
- """
54
- return await self._api.get("/anime/catalog/references/age-ratings")
55
-
56
- async def catalog_references_genres(
57
- self
58
- ):
59
- """
60
- Возвращает список всех жанров в каталоге
61
- """
62
- return await self._api.get("/anime/catalog/references/genres")
63
-
64
- async def catalog_references_production_statuses(
65
- self
66
- ):
67
- """
68
- Возвращает список возможных статусов озвучки релиза в каталоге
69
- """
70
- return await self._api.get("/anime/catalog/references/production-statuses")
71
-
72
- async def catalog_references_publish_statuses(
73
- self
74
- ):
75
- """
76
- Возвращает список возможных статусов выхода релиза в каталоге
77
- """
78
- return await self._api.get("/anime/catalog/references/publish-statuses")
79
-
80
- async def catalog_references_seasons(
81
- self
82
- ):
83
- """
84
- Возвращает список возможных сезонов релизов в каталоге
85
- """
86
- return await self._api.get("/anime/catalog/references/seasons")
87
-
88
- async def catalog_references_sorting(
89
- self
90
- ):
91
- """
92
- Возвращает список возможных типов сортировок в каталоге
93
- """
94
- return await self._api.get("/anime/catalog/references/sorting")
95
-
96
- async def catalog_references_types(
97
- self
98
- ):
99
- """
100
- Возвращает список возможных типов релизов в каталоге
101
- """
102
- return await self._api.get("/anime/catalog/references/types")
103
-
104
- async def catalog_references_years(
105
- self
106
- ):
107
- """
108
- Возвращает список годов в каталоге
109
- """
110
- return await self._api.get("/anime/catalog/references/years")
111
-
112
- async def franchises(
113
- self,
114
- include: Optional[str] = None,
115
- exclude: Optional[str] = None
116
- ):
117
- """
118
- Возвращает список франшиз
119
-
120
- Args:
121
- include: Поля для включения
122
- exclude: Поля для исключения
123
- """
124
- params = {
125
- "include": include,
126
- "exclude": exclude
127
- }
128
- return await self._api.get("/anime/franchises", params=params)
129
-
130
- async def franchises_franchiseId(
131
- self,
132
- franchiseId: str,
133
- include: Optional[str] = None,
134
- exclude: Optional[str] = None
135
- ):
136
- """
137
- Возвращает данные франшизы по Id
138
-
139
- Args:
140
- franchiseId: Обязательно. Id франшизы
141
- include: Поля для включения
142
- exclude: Поля для исключения
143
- """
144
- params = {
145
- "include": include,
146
- "exclude": exclude
147
- }
148
-
149
- endpoint = self._api.build_endpoint_with_params("/anime/franchises/{franchiseId}", franchiseId=franchiseId)
150
- return await self._api.get(endpoint=endpoint, params=params)
151
-
152
- async def franchises_random(
153
- self,
154
- limit: Optional[int] = None,
155
- include: Optional[str] = None,
156
- exclude: Optional[str] = None
157
- ):
158
- """
159
- Возвращает список случайных франшиз.
160
-
161
- Args:
162
- limit: Лимит случайных франшиз
163
- include: Поля для включения
164
- exclude: Поля для исключения
165
- """
166
- params = {
167
- "limit": limit,
168
- "include": include,
169
- "exclude": exclude
170
- }
171
-
172
- return await self._api.get("/anime/franchises/random", params=params)
173
-
174
- async def franchises_release_releaseId(
175
- self,
176
- releaseId: str,
177
- include: Optional[str] = None,
178
- exclude: Optional[str] = None
179
- ):
180
- """
181
- Возвращает список франшиз, в которых участвует релиз
182
-
183
- Args:
184
- releaseId: Обязательно. Id франшизы
185
- include: Поля для включения
186
- exclude: Поля для исключения
187
- """
188
- params = {
189
- "include": include,
190
- "exclude": exclude
191
- }
192
-
193
- endpoint = self._api.build_endpoint_with_params("/anime/franchises/release/{releaseId}", releaseId=releaseId)
194
- return await self._api.get(endpoint=endpoint, params=params)
195
-
196
- async def genres(
197
- self,
198
- include: Optional[str] = None,
199
- exclude: Optional[str] = None
200
- ):
201
- """
202
- Возвращает список всех жанров
203
-
204
- Args:
205
- include: Поля для включения
206
- exclude: Поля для исключения
207
- """
208
- params = {
209
- "include": include,
210
- "exclude": exclude
211
- }
212
-
213
- return await self._api.get("/anime/genres", params=params)
214
-
215
- async def genres_genreId(
216
- self,
217
- genreId: int,
218
- include: Optional[str] = None,
219
- exclude: Optional[str] = None
220
- ):
221
- """
222
- Возвращает список всех жанров
223
-
224
- Args:
225
- genreId: ID жанра, обязательно
226
- include: Поля для включения
227
- exclude: Поля для исключения
228
- """
229
- params = {
230
- "include": include,
231
- "exclude": exclude
232
- }
233
-
234
- endpoint = self._api.build_endpoint_with_params("/anime/genres/{genreId}", genreId=genreId)
235
- return await self._api.get(endpoint, params=params)
236
-
237
- async def genres_random(
238
- self,
239
- limit: Optional[int] = None,
240
- include: Optional[str] = None,
241
- exclude: Optional[str] = None
242
- ):
243
- """
244
- Возвращает список случайных жанров
245
-
246
- Args:
247
- limit: Лимит случайных жанров
248
- include: Поля для включения
249
- exclude: Поля для исключения
250
- """
251
- params = {
252
- "limit": limit,
253
- "include": include,
254
- "exclude": exclude
255
- }
256
-
257
- return await self._api.get("/anime/genres/random", params=params)
258
-
259
- async def genres_genreId_releases(
260
- self,
261
- genreId: int,
262
- page: Optional[int] = None,
263
- limit: Optional[int] = None,
264
- include: Optional[str] = None,
265
- exclude: Optional[str] = None
266
- ):
267
- """
268
- Возвращает список всех релизов жанра
269
-
270
- Args:
271
- genreId: Обязательно. ID жанра
272
- page: Номер страницы
273
- limit: Лимит на страницу
274
- include: Поля для включения
275
- exclude: Поля для исключения
276
- """
277
- params = {
278
- "page": page,
279
- "limit": limit,
280
- "include": include,
281
- "exclude": exclude
282
- }
283
-
284
- endpoint = self._api.build_endpoint_with_params("/anime/genres/{genreId}/releases", genreId=genreId)
285
- return await self._api.get(endpoint, params=params)
286
-
287
- async def releases_latest(
288
- self,
289
- limit: Optional[int] = None,
290
- include: Optional[str] = None,
291
- exclude: Optional[str] = None
292
- ):
293
- """
294
- Возвращает данные по последним релизам
295
-
296
- Args:
297
- limit: Количество последних релизов в выдаче
298
- include: Поля для включения
299
- exclude: Поля для исключения
300
- """
301
- params = {
302
- "limit": limit,
303
- "include": include,
304
- "exclude": exclude
305
- }
306
-
307
- return await self._api.get("/anime/releases/latest", params=params)
308
-
309
- async def releases_random(
310
- self,
311
- limit: Optional[int] = None,
312
- include: Optional[str] = None,
313
- exclude: Optional[str] = None
314
- ):
315
- """
316
- Возвращает данные по случайным релизам
317
-
318
- Args:
319
- limit: Количество случайных релизов
320
- include: Поля для включения
321
- exclude: Поля для исключения
322
- """
323
- params = {
324
- "limit": limit,
325
- "include": include,
326
- "exclude": exclude
327
- }
328
-
329
- return await self._api.get("/anime/releases/random", params=params)
330
-
331
- async def releases_recommended(
332
- self,
333
- limit: Optional[int] = None,
334
- release_id: Optional[int] = None,
335
- include: Optional[str] = None,
336
- exclude: Optional[str] = None
337
- ):
338
- """
339
- Возвращает данные по рекомендованным релизам
340
-
341
- Args:
342
- limit: Количество рекомендованных релизов
343
- release_id: Идентификатор релиза, для которого рекомендуем
344
- include: Поля для включения
345
- exclude: Поля для исключения
346
- """
347
- params = {
348
- "limit": limit,
349
- "release_id": release_id,
350
- "include": include,
351
- "exclude": exclude
352
- }
353
-
354
- return await self._api.get("/anime/releases/recommended", params=params)
355
-
356
- async def releases_list(
357
- self,
358
- ids: List[int],
359
- aliases: List[str],
360
- page: Optional[int] = None,
361
- limit: Optional[int] = None,
362
- include: Optional[str] = None,
363
- exclude: Optional[str] = None
364
- ):
365
- """
366
- Возвращает данные по списку релизов
367
-
368
- Args:
369
- ids: Список ID релизов Обязательно
370
- aliases: Список alias релизов Обязательно
371
- page: Номер страницы
372
- limit: Лимит на страницу
373
- include: Поля для включения
374
- exclude: Поля для исключения
375
- """
376
- params = {
377
- "ids": ids,
378
- "aliases": aliases,
379
- "page": page,
380
- "limit": limit,
381
- "include": include,
382
- "exclude": exclude
383
- }
384
-
385
- return await self._api.get("/anime/releases/list", params=params)
386
-
387
- async def releases_idOrAlias(
388
- self,
389
- idOrAlias: str,
390
- include: Optional[str] = None,
391
- exclude: Optional[str] = None
392
- ):
393
- """
394
- Возвращает данные по релизу
395
-
396
- Args:
397
- idOrAlias: id или alias релиза Обязательно
398
- include: Поля для включения
399
- exclude: Поля для исключения
400
- """
401
- params = {
402
- "include": include,
403
- "exclude": exclude
404
- }
405
-
406
- endpoint = self._api.build_endpoint_with_params("/anime/releases/{idOrAlias}", idOrAlias=idOrAlias)
407
- return await self._api.get(endpoint, params)
408
-
409
- async def releases_idOrAlias_members(
410
- self,
411
- idOrAlias: str,
412
- include: Optional[str] = None,
413
- exclude: Optional[str] = None
414
- ):
415
- """
416
- Возвращает данные по участникам релиза
417
-
418
- Args:
419
- idOrAlias: id или alias релиза Обязательно
420
- include: Поля для включения
421
- exclude: Поля для исключения
422
- """
423
- params = {
424
- "include": include,
425
- "exclude": exclude
426
- }
427
-
428
- endpoint = self._api.build_endpoint_with_params("/anime/releases/{idOrAlias}/members", idOrAlias=idOrAlias)
429
- return await self._api.get(endpoint, params)
430
-
431
- async def releases_idOrAlias_episodes_timecodes(
432
- self,
433
- idOrAlias: str,
434
- include: Optional[str] = None,
435
- exclude: Optional[str] = None
436
- ):
437
- """
438
- Возвращает данные по всем существующим таймкодам просмотра эпизодов релиза. Имеет 1-2-x минутный кэш.
439
-
440
- Args:
441
- idOrAlias: id или alias релиза Обязательно
442
- include: Поля для включения
443
- exclude: Поля для исключения
444
- """
445
- params = {
446
- "include": include,
447
- "exclude": exclude
448
- }
449
-
450
- endpoint = self._api.build_endpoint_with_params("/anime/releases/{idOrAlias}/episodes/timecodes", idOrAlias=idOrAlias)
451
- return await self._api.get(endpoint, params)
452
-
453
- async def releases_episodes_releaseEpisodeId(
454
- self,
455
- releaseEpisodeId: str,
456
- include: Optional[str] = None,
457
- exclude: Optional[str] = None
458
- ):
459
- """
460
- Возвращает данные по эпизоду
461
-
462
- Args:
463
- releaseEpisodeId: Идентификатор эпизода Обязательно
464
- include: Поля для включения
465
- exclude: Поля для исключения
466
- """
467
- params = {
468
- "include": include,
469
- "exclude": exclude
470
- }
471
-
472
- endpoint = self._api.build_endpoint_with_params("/anime/releases/episodes/{releaseEpisodeId}", releaseEpisodeId=releaseEpisodeId)
473
- return await self._api.get(endpoint, params)
474
-
475
- async def releases_episodes_releaseEpisodeId_timecode(
476
- self,
477
- releaseEpisodeId: str,
478
- include: Optional[str] = None,
479
- exclude: Optional[str] = None
480
- ):
481
- """
482
- Возвращает данные по просмотру указанного эпизода авторизованным пользователем. Имеет 1-2-x минутный кэш.
483
-
484
- Args:
485
- releaseEpisodeId: Идентификатор эпизода Обязательно
486
- include: Поля для включения
487
- exclude: Поля для исключения
488
- """
489
- params = {
490
- "include": include,
491
- "exclude": exclude
492
- }
493
-
494
- endpoint = self._api.build_endpoint_with_params("/anime/releases/episodes/{releaseEpisodeId}/timecode", releaseEpisodeId=releaseEpisodeId)
495
- return await self._api.get(endpoint, params)
496
-
497
- async def schedule_now(
498
- self,
499
- include: Optional[str] = None,
500
- exclude: Optional[str] = None
501
- ):
502
- """
503
- Возвращает список релизов в расписании на текущую дату
504
-
505
- Args:
506
- include: Поля для включения
507
- exclude: Поля для исключения
508
- """
509
- params = {
510
- "include": include,
511
- "exclude": exclude
512
- }
513
-
514
- return await self._api.get("/anime/schedule/now", params=params)
515
-
516
- async def schedule_week(
517
- self,
518
- include: Optional[str] = None,
519
- exclude: Optional[str] = None
520
- ):
521
- """
522
- Возвращает список релизов в расписании на текущую неделю
523
-
524
- Args:
525
- include: Поля для включения
526
- exclude: Поля для исключения
527
- """
528
- params = {
529
- "include": include,
530
- "exclude": exclude
531
- }
532
-
533
- return await self._api.get("/anime/schedule/week", params=params)
534
-
535
-
536
- async def torrents(
537
- self,
538
- page: Optional[int] = None,
539
- limit: Optional[int] = None,
540
- include: Optional[str] = None,
541
- exclude: Optional[str] = None
542
- ):
543
- """
544
- Возвращает данные по последним торрентам
545
-
546
- Args:
547
- page: Номер страницы
548
- limit: Лимит на страницу
549
- include: Поля для включения
550
- exclude: Поля для исключения
551
- """
552
- params = {
553
- "page": page,
554
- "limit": limit,
555
- "include": include,
556
- "exclude": exclude
557
- }
558
-
559
- return await self._api.get("/anime/torrents", params=params)
560
-
561
- async def torrents_hashOrId(
562
- self,
563
- hashOrId: str,
564
- include: Optional[str] = None,
565
- exclude: Optional[str] = None
566
- ):
567
- """
568
- Возвращает данные по последним торрентам
569
-
570
- Args:
571
- hashOrId: Обязательно Хэш или ID торрента
572
- include: Поля для включения
573
- exclude: Поля для исключения
574
- """
575
- params = {
576
- "include": include,
577
- "exclude": exclude
578
- }
579
-
580
- endpoint = self._api.build_endpoint_with_params("/anime/torrents/{hashOrId}", hashOrId=hashOrId)
581
- return await self._api.get(endpoint, params)
582
-
583
- async def torrents_hashOrId_file(
584
- self,
585
- hashOrId: str,
586
- pk: Optional[str] = None
587
- ):
588
- """
589
- Возвращает данные по последним торрентам
590
-
591
- Args:
592
- hashOrId: Обязательно Хэш или ID торрента
593
- pk: passkey пользователя. Оставьте пустым для собственного pk (если аутентифицирован)
594
- """
595
- params = {
596
- "pk": pk
597
- }
598
- headers = {
599
- "Content-Type": "application/x-bittorrent; utf-8",
600
- "Accept": "application/x-bittorrent"
601
- }
602
-
603
- endpoint = self._api.build_endpoint_with_params("/anime/torrents/{hashOrId}/file", hashOrId=hashOrId)
604
- return await self._api.get(endpoint, params, headers)
605
-
606
- async def torrents_release_releaseId(
607
- self,
608
- releaseId: int,
609
- include: Optional[str] = None,
610
- exclude: Optional[str] = None
611
- ):
612
- """
613
- Возвращает данные по последним торрентам
614
-
615
- Args:
616
- releaseId: Обязательно ID релиза
617
- include: Поля для включения
618
- exclude: Поля для исключения
619
- """
620
- params = {
621
- "include": include,
622
- "exclude": exclude
623
- }
624
-
625
- endpoint = self._api.build_endpoint_with_params("/anime/torrents/release/{releaseId}", releaseId=releaseId)
626
- return await self._api.get(endpoint, params)
627
-
628
- async def torrents_rss(
629
- self,
630
- limit: Optional[int] = None,
631
- pk: Optional[str] = None
632
- ):
633
- """
634
- Возвращает данные по последним торрентам в виде XML документа
635
-
636
- Args:
637
- limit: Количество торрентов в выдаче. По умолчанию 10
638
- pk: passkey пользователя. Оставьте пустым для собственного pk (если аутентифицирован)
639
- """
640
- params = {
641
- "limit": limit,
642
- "pk": pk
643
- }
644
- headers = {
645
- "Content-Type": "application/xml",
646
- }
647
-
648
- return await self._api.get("/anime/torrents/rss", params=params, headers=headers)
649
-
650
- async def torrents_rss_release_releaseId(
651
- self,
652
- releaseId: int,
653
- pk: Optional[str] = None
654
- ):
655
- """
656
- Возвращает данные по торрентам релиза в виде RSS ленты (xml)
657
-
658
- Args:
659
- releaseId: Обязательно ID релиза
660
- pk: passkey пользователя. Оставьте пустым для собственного pk (если аутентифицирован)
661
- """
662
- params = {
663
- "pk": pk
664
- }
665
- headers = {
666
- "Content-Type": "application/xml",
667
- }
668
-
669
- endpoint = self._api.build_endpoint_with_params("/anime/torrents/rss/release/{releaseId}", releaseId=releaseId)
1
+ from ._libria import BaseMethod
2
+ from ._helper import validate_filters, create_filters_from_release
3
+ from ..models import Release
4
+ from typing import Optional, List
5
+
6
+
7
+ class AnimeMethod(BaseMethod):
8
+ async def catalog_releases_get(
9
+ self,
10
+ params: Release
11
+ ):
12
+ """
13
+ Возвращает список релизов по заданными параметрам (GET запрос)
14
+
15
+ :param params: Тело Release
16
+ """
17
+ body = {
18
+ "page": params.page,
19
+ "limit":params.limit,
20
+ "include": params.include,
21
+ "exclude": params.exclude,
22
+ }
23
+ validated_f_args = await validate_filters(params=params)
24
+ final_body = {**body, **validated_f_args}
25
+
26
+ return await self._api.get("/anime/catalog/releases", params=final_body)
27
+
28
+ async def catalog_releases_post(
29
+ self,
30
+ params: Release
31
+ ):
32
+ """
33
+ Возвращает список релизов по заданными параметрам (POST запрос)
34
+
35
+ :param params: Тело Release
36
+ """
37
+ body = {
38
+ "page": params.page,
39
+ "limit":params.limit,
40
+ "include": params.include,
41
+ "exclude": params.exclude,
42
+ }
43
+ filters = await create_filters_from_release(params)
44
+ final_body = {**body, **filters}
45
+
46
+ return await self._api.post("/anime/catalog/releases", json_data=final_body)
47
+
48
+ async def catalog_references_age_ratings(
49
+ self
50
+ ):
51
+ """
52
+ Возвращает список возможных возрастных рейтингов в каталоге
53
+ """
54
+ return await self._api.get("/anime/catalog/references/age-ratings")
55
+
56
+ async def catalog_references_genres(
57
+ self
58
+ ):
59
+ """
60
+ Возвращает список всех жанров в каталоге
61
+ """
62
+ return await self._api.get("/anime/catalog/references/genres")
63
+
64
+ async def catalog_references_production_statuses(
65
+ self
66
+ ):
67
+ """
68
+ Возвращает список возможных статусов озвучки релиза в каталоге
69
+ """
70
+ return await self._api.get("/anime/catalog/references/production-statuses")
71
+
72
+ async def catalog_references_publish_statuses(
73
+ self
74
+ ):
75
+ """
76
+ Возвращает список возможных статусов выхода релиза в каталоге
77
+ """
78
+ return await self._api.get("/anime/catalog/references/publish-statuses")
79
+
80
+ async def catalog_references_seasons(
81
+ self
82
+ ):
83
+ """
84
+ Возвращает список возможных сезонов релизов в каталоге
85
+ """
86
+ return await self._api.get("/anime/catalog/references/seasons")
87
+
88
+ async def catalog_references_sorting(
89
+ self
90
+ ):
91
+ """
92
+ Возвращает список возможных типов сортировок в каталоге
93
+ """
94
+ return await self._api.get("/anime/catalog/references/sorting")
95
+
96
+ async def catalog_references_types(
97
+ self
98
+ ):
99
+ """
100
+ Возвращает список возможных типов релизов в каталоге
101
+ """
102
+ return await self._api.get("/anime/catalog/references/types")
103
+
104
+ async def catalog_references_years(
105
+ self
106
+ ):
107
+ """
108
+ Возвращает список годов в каталоге
109
+ """
110
+ return await self._api.get("/anime/catalog/references/years")
111
+
112
+ async def franchises(
113
+ self,
114
+ include: Optional[str] = None,
115
+ exclude: Optional[str] = None
116
+ ):
117
+ """
118
+ Возвращает список франшиз
119
+
120
+ Args:
121
+ include: Поля для включения
122
+ exclude: Поля для исключения
123
+ """
124
+ params = {
125
+ "include": include,
126
+ "exclude": exclude
127
+ }
128
+ return await self._api.get("/anime/franchises", params=params)
129
+
130
+ async def franchises_franchiseId(
131
+ self,
132
+ franchiseId: str,
133
+ include: Optional[str] = None,
134
+ exclude: Optional[str] = None
135
+ ):
136
+ """
137
+ Возвращает данные франшизы по Id
138
+
139
+ Args:
140
+ franchiseId: Обязательно. Id франшизы
141
+ include: Поля для включения
142
+ exclude: Поля для исключения
143
+ """
144
+ params = {
145
+ "include": include,
146
+ "exclude": exclude
147
+ }
148
+
149
+ endpoint = self._api.build_endpoint_with_params("/anime/franchises/{franchiseId}", franchiseId=franchiseId)
150
+ return await self._api.get(endpoint=endpoint, params=params)
151
+
152
+ async def franchises_random(
153
+ self,
154
+ limit: Optional[int] = None,
155
+ include: Optional[str] = None,
156
+ exclude: Optional[str] = None
157
+ ):
158
+ """
159
+ Возвращает список случайных франшиз.
160
+
161
+ Args:
162
+ limit: Лимит случайных франшиз
163
+ include: Поля для включения
164
+ exclude: Поля для исключения
165
+ """
166
+ params = {
167
+ "limit": limit,
168
+ "include": include,
169
+ "exclude": exclude
170
+ }
171
+
172
+ return await self._api.get("/anime/franchises/random", params=params)
173
+
174
+ async def franchises_release_releaseId(
175
+ self,
176
+ releaseId: str,
177
+ include: Optional[str] = None,
178
+ exclude: Optional[str] = None
179
+ ):
180
+ """
181
+ Возвращает список франшиз, в которых участвует релиз
182
+
183
+ Args:
184
+ releaseId: Обязательно. Id франшизы
185
+ include: Поля для включения
186
+ exclude: Поля для исключения
187
+ """
188
+ params = {
189
+ "include": include,
190
+ "exclude": exclude
191
+ }
192
+
193
+ endpoint = self._api.build_endpoint_with_params("/anime/franchises/release/{releaseId}", releaseId=releaseId)
194
+ return await self._api.get(endpoint=endpoint, params=params)
195
+
196
+ async def genres(
197
+ self,
198
+ include: Optional[str] = None,
199
+ exclude: Optional[str] = None
200
+ ):
201
+ """
202
+ Возвращает список всех жанров
203
+
204
+ Args:
205
+ include: Поля для включения
206
+ exclude: Поля для исключения
207
+ """
208
+ params = {
209
+ "include": include,
210
+ "exclude": exclude
211
+ }
212
+
213
+ return await self._api.get("/anime/genres", params=params)
214
+
215
+ async def genres_genreId(
216
+ self,
217
+ genreId: int,
218
+ include: Optional[str] = None,
219
+ exclude: Optional[str] = None
220
+ ):
221
+ """
222
+ Возвращает список всех жанров
223
+
224
+ Args:
225
+ genreId: ID жанра, обязательно
226
+ include: Поля для включения
227
+ exclude: Поля для исключения
228
+ """
229
+ params = {
230
+ "include": include,
231
+ "exclude": exclude
232
+ }
233
+
234
+ endpoint = self._api.build_endpoint_with_params("/anime/genres/{genreId}", genreId=genreId)
235
+ return await self._api.get(endpoint, params=params)
236
+
237
+ async def genres_random(
238
+ self,
239
+ limit: Optional[int] = None,
240
+ include: Optional[str] = None,
241
+ exclude: Optional[str] = None
242
+ ):
243
+ """
244
+ Возвращает список случайных жанров
245
+
246
+ Args:
247
+ limit: Лимит случайных жанров
248
+ include: Поля для включения
249
+ exclude: Поля для исключения
250
+ """
251
+ params = {
252
+ "limit": limit,
253
+ "include": include,
254
+ "exclude": exclude
255
+ }
256
+
257
+ return await self._api.get("/anime/genres/random", params=params)
258
+
259
+ async def genres_genreId_releases(
260
+ self,
261
+ genreId: int,
262
+ page: Optional[int] = None,
263
+ limit: Optional[int] = None,
264
+ include: Optional[str] = None,
265
+ exclude: Optional[str] = None
266
+ ):
267
+ """
268
+ Возвращает список всех релизов жанра
269
+
270
+ Args:
271
+ genreId: Обязательно. ID жанра
272
+ page: Номер страницы
273
+ limit: Лимит на страницу
274
+ include: Поля для включения
275
+ exclude: Поля для исключения
276
+ """
277
+ params = {
278
+ "page": page,
279
+ "limit": limit,
280
+ "include": include,
281
+ "exclude": exclude
282
+ }
283
+
284
+ endpoint = self._api.build_endpoint_with_params("/anime/genres/{genreId}/releases", genreId=genreId)
285
+ return await self._api.get(endpoint, params=params)
286
+
287
+ async def releases_latest(
288
+ self,
289
+ limit: Optional[int] = None,
290
+ include: Optional[str] = None,
291
+ exclude: Optional[str] = None
292
+ ):
293
+ """
294
+ Возвращает данные по последним релизам
295
+
296
+ Args:
297
+ limit: Количество последних релизов в выдаче
298
+ include: Поля для включения
299
+ exclude: Поля для исключения
300
+ """
301
+ params = {
302
+ "limit": limit,
303
+ "include": include,
304
+ "exclude": exclude
305
+ }
306
+
307
+ return await self._api.get("/anime/releases/latest", params=params)
308
+
309
+ async def releases_random(
310
+ self,
311
+ limit: Optional[int] = None,
312
+ include: Optional[str] = None,
313
+ exclude: Optional[str] = None
314
+ ):
315
+ """
316
+ Возвращает данные по случайным релизам
317
+
318
+ Args:
319
+ limit: Количество случайных релизов
320
+ include: Поля для включения
321
+ exclude: Поля для исключения
322
+ """
323
+ params = {
324
+ "limit": limit,
325
+ "include": include,
326
+ "exclude": exclude
327
+ }
328
+
329
+ return await self._api.get("/anime/releases/random", params=params)
330
+
331
+ async def releases_recommended(
332
+ self,
333
+ limit: Optional[int] = None,
334
+ release_id: Optional[int] = None,
335
+ include: Optional[str] = None,
336
+ exclude: Optional[str] = None
337
+ ):
338
+ """
339
+ Возвращает данные по рекомендованным релизам
340
+
341
+ Args:
342
+ limit: Количество рекомендованных релизов
343
+ release_id: Идентификатор релиза, для которого рекомендуем
344
+ include: Поля для включения
345
+ exclude: Поля для исключения
346
+ """
347
+ params = {
348
+ "limit": limit,
349
+ "release_id": release_id,
350
+ "include": include,
351
+ "exclude": exclude
352
+ }
353
+
354
+ return await self._api.get("/anime/releases/recommended", params=params)
355
+
356
+ async def releases_list(
357
+ self,
358
+ ids: List[int],
359
+ aliases: List[str],
360
+ page: Optional[int] = None,
361
+ limit: Optional[int] = None,
362
+ include: Optional[str] = None,
363
+ exclude: Optional[str] = None
364
+ ):
365
+ """
366
+ Возвращает данные по списку релизов
367
+
368
+ Args:
369
+ ids: Список ID релизов Обязательно
370
+ aliases: Список alias релизов Обязательно
371
+ page: Номер страницы
372
+ limit: Лимит на страницу
373
+ include: Поля для включения
374
+ exclude: Поля для исключения
375
+ """
376
+ params = {
377
+ "ids": ids,
378
+ "aliases": aliases,
379
+ "page": page,
380
+ "limit": limit,
381
+ "include": include,
382
+ "exclude": exclude
383
+ }
384
+
385
+ return await self._api.get("/anime/releases/list", params=params)
386
+
387
+ async def releases_idOrAlias(
388
+ self,
389
+ idOrAlias: str,
390
+ include: Optional[str] = None,
391
+ exclude: Optional[str] = None
392
+ ):
393
+ """
394
+ Возвращает данные по релизу
395
+
396
+ Args:
397
+ idOrAlias: id или alias релиза Обязательно
398
+ include: Поля для включения
399
+ exclude: Поля для исключения
400
+ """
401
+ params = {
402
+ "include": include,
403
+ "exclude": exclude
404
+ }
405
+
406
+ endpoint = self._api.build_endpoint_with_params("/anime/releases/{idOrAlias}", idOrAlias=idOrAlias)
407
+ return await self._api.get(endpoint, params)
408
+
409
+ async def releases_idOrAlias_members(
410
+ self,
411
+ idOrAlias: str,
412
+ include: Optional[str] = None,
413
+ exclude: Optional[str] = None
414
+ ):
415
+ """
416
+ Возвращает данные по участникам релиза
417
+
418
+ Args:
419
+ idOrAlias: id или alias релиза Обязательно
420
+ include: Поля для включения
421
+ exclude: Поля для исключения
422
+ """
423
+ params = {
424
+ "include": include,
425
+ "exclude": exclude
426
+ }
427
+
428
+ endpoint = self._api.build_endpoint_with_params("/anime/releases/{idOrAlias}/members", idOrAlias=idOrAlias)
429
+ return await self._api.get(endpoint, params)
430
+
431
+ async def releases_idOrAlias_episodes_timecodes(
432
+ self,
433
+ idOrAlias: str,
434
+ include: Optional[str] = None,
435
+ exclude: Optional[str] = None
436
+ ):
437
+ """
438
+ Возвращает данные по всем существующим таймкодам просмотра эпизодов релиза. Имеет 1-2-x минутный кэш.
439
+
440
+ Args:
441
+ idOrAlias: id или alias релиза Обязательно
442
+ include: Поля для включения
443
+ exclude: Поля для исключения
444
+ """
445
+ params = {
446
+ "include": include,
447
+ "exclude": exclude
448
+ }
449
+
450
+ endpoint = self._api.build_endpoint_with_params("/anime/releases/{idOrAlias}/episodes/timecodes", idOrAlias=idOrAlias)
451
+ return await self._api.get(endpoint, params)
452
+
453
+ async def releases_episodes_releaseEpisodeId(
454
+ self,
455
+ releaseEpisodeId: str,
456
+ include: Optional[str] = None,
457
+ exclude: Optional[str] = None
458
+ ):
459
+ """
460
+ Возвращает данные по эпизоду
461
+
462
+ Args:
463
+ releaseEpisodeId: Идентификатор эпизода Обязательно
464
+ include: Поля для включения
465
+ exclude: Поля для исключения
466
+ """
467
+ params = {
468
+ "include": include,
469
+ "exclude": exclude
470
+ }
471
+
472
+ endpoint = self._api.build_endpoint_with_params("/anime/releases/episodes/{releaseEpisodeId}", releaseEpisodeId=releaseEpisodeId)
473
+ return await self._api.get(endpoint, params)
474
+
475
+ async def releases_episodes_releaseEpisodeId_timecode(
476
+ self,
477
+ releaseEpisodeId: str,
478
+ include: Optional[str] = None,
479
+ exclude: Optional[str] = None
480
+ ):
481
+ """
482
+ Возвращает данные по просмотру указанного эпизода авторизованным пользователем. Имеет 1-2-x минутный кэш.
483
+
484
+ Args:
485
+ releaseEpisodeId: Идентификатор эпизода Обязательно
486
+ include: Поля для включения
487
+ exclude: Поля для исключения
488
+ """
489
+ params = {
490
+ "include": include,
491
+ "exclude": exclude
492
+ }
493
+
494
+ endpoint = self._api.build_endpoint_with_params("/anime/releases/episodes/{releaseEpisodeId}/timecode", releaseEpisodeId=releaseEpisodeId)
495
+ return await self._api.get(endpoint, params)
496
+
497
+ async def schedule_now(
498
+ self,
499
+ include: Optional[str] = None,
500
+ exclude: Optional[str] = None
501
+ ):
502
+ """
503
+ Возвращает список релизов в расписании на текущую дату
504
+
505
+ Args:
506
+ include: Поля для включения
507
+ exclude: Поля для исключения
508
+ """
509
+ params = {
510
+ "include": include,
511
+ "exclude": exclude
512
+ }
513
+
514
+ return await self._api.get("/anime/schedule/now", params=params)
515
+
516
+ async def schedule_week(
517
+ self,
518
+ include: Optional[str] = None,
519
+ exclude: Optional[str] = None
520
+ ):
521
+ """
522
+ Возвращает список релизов в расписании на текущую неделю
523
+
524
+ Args:
525
+ include: Поля для включения
526
+ exclude: Поля для исключения
527
+ """
528
+ params = {
529
+ "include": include,
530
+ "exclude": exclude
531
+ }
532
+
533
+ return await self._api.get("/anime/schedule/week", params=params)
534
+
535
+
536
+ async def torrents(
537
+ self,
538
+ page: Optional[int] = None,
539
+ limit: Optional[int] = None,
540
+ include: Optional[str] = None,
541
+ exclude: Optional[str] = None
542
+ ):
543
+ """
544
+ Возвращает данные по последним торрентам
545
+
546
+ Args:
547
+ page: Номер страницы
548
+ limit: Лимит на страницу
549
+ include: Поля для включения
550
+ exclude: Поля для исключения
551
+ """
552
+ params = {
553
+ "page": page,
554
+ "limit": limit,
555
+ "include": include,
556
+ "exclude": exclude
557
+ }
558
+
559
+ return await self._api.get("/anime/torrents", params=params)
560
+
561
+ async def torrents_hashOrId(
562
+ self,
563
+ hashOrId: str,
564
+ include: Optional[str] = None,
565
+ exclude: Optional[str] = None
566
+ ):
567
+ """
568
+ Возвращает данные по последним торрентам
569
+
570
+ Args:
571
+ hashOrId: Обязательно Хэш или ID торрента
572
+ include: Поля для включения
573
+ exclude: Поля для исключения
574
+ """
575
+ params = {
576
+ "include": include,
577
+ "exclude": exclude
578
+ }
579
+
580
+ endpoint = self._api.build_endpoint_with_params("/anime/torrents/{hashOrId}", hashOrId=hashOrId)
581
+ return await self._api.get(endpoint, params)
582
+
583
+ async def torrents_hashOrId_file(
584
+ self,
585
+ hashOrId: str,
586
+ pk: Optional[str] = None
587
+ ):
588
+ """
589
+ Возвращает данные по последним торрентам
590
+
591
+ Args:
592
+ hashOrId: Обязательно Хэш или ID торрента
593
+ pk: passkey пользователя. Оставьте пустым для собственного pk (если аутентифицирован)
594
+ """
595
+ params = {
596
+ "pk": pk
597
+ }
598
+ headers = {
599
+ "Content-Type": "application/x-bittorrent; utf-8",
600
+ "Accept": "application/x-bittorrent"
601
+ }
602
+
603
+ endpoint = self._api.build_endpoint_with_params("/anime/torrents/{hashOrId}/file", hashOrId=hashOrId)
604
+ return await self._api.get(endpoint, params, headers)
605
+
606
+ async def torrents_release_releaseId(
607
+ self,
608
+ releaseId: int,
609
+ include: Optional[str] = None,
610
+ exclude: Optional[str] = None
611
+ ):
612
+ """
613
+ Возвращает данные по последним торрентам
614
+
615
+ Args:
616
+ releaseId: Обязательно ID релиза
617
+ include: Поля для включения
618
+ exclude: Поля для исключения
619
+ """
620
+ params = {
621
+ "include": include,
622
+ "exclude": exclude
623
+ }
624
+
625
+ endpoint = self._api.build_endpoint_with_params("/anime/torrents/release/{releaseId}", releaseId=releaseId)
626
+ return await self._api.get(endpoint, params)
627
+
628
+ async def torrents_rss(
629
+ self,
630
+ limit: Optional[int] = None,
631
+ pk: Optional[str] = None
632
+ ):
633
+ """
634
+ Возвращает данные по последним торрентам в виде XML документа
635
+
636
+ Args:
637
+ limit: Количество торрентов в выдаче. По умолчанию 10
638
+ pk: passkey пользователя. Оставьте пустым для собственного pk (если аутентифицирован)
639
+ """
640
+ params = {
641
+ "limit": limit,
642
+ "pk": pk
643
+ }
644
+ headers = {
645
+ "Content-Type": "application/xml",
646
+ }
647
+
648
+ return await self._api.get("/anime/torrents/rss", params=params, headers=headers)
649
+
650
+ async def torrents_rss_release_releaseId(
651
+ self,
652
+ releaseId: int,
653
+ pk: Optional[str] = None
654
+ ):
655
+ """
656
+ Возвращает данные по торрентам релиза в виде RSS ленты (xml)
657
+
658
+ Args:
659
+ releaseId: Обязательно ID релиза
660
+ pk: passkey пользователя. Оставьте пустым для собственного pk (если аутентифицирован)
661
+ """
662
+ params = {
663
+ "pk": pk
664
+ }
665
+ headers = {
666
+ "Content-Type": "application/xml",
667
+ }
668
+
669
+ endpoint = self._api.build_endpoint_with_params("/anime/torrents/rss/release/{releaseId}", releaseId=releaseId)
670
670
  return await self._api.get(endpoint=endpoint, params=params, headers=headers)