File tree Expand file tree Collapse file tree 2 files changed +82
-0
lines changed Expand file tree Collapse file tree 2 files changed +82
-0
lines changed Original file line number Diff line number Diff line change @@ -27,6 +27,7 @@ part 'AnilistQueries/Search.dart';
27
27
part 'AnilistQueries/GetAnimeMangaListData.dart' ;
28
28
part 'AnilistQueries/GetUserMediaList.dart' ;
29
29
part 'AnilistQueries/GetGenresAndTags.dart' ;
30
+ part 'AnilistQueries/GetCalendarData.dart' ;
30
31
31
32
class AnilistQueries {
32
33
// main function in the [AnilistQueries.dart]
@@ -86,6 +87,10 @@ class AnilistQueries {
86
87
/// Returns a map where the keys are list categories and values are lists of [media] objects.
87
88
Future <Map <String , List <media>>> getMangaList () => _getMangaList ();
88
89
90
+ /// Fetches the user's calender data.
91
+ /// Returns a list of [media] objects.
92
+ Future <List <media>> getCalendarData () => _getCalendarData ();
93
+
89
94
/// Searches for media based on various parameters.
90
95
///
91
96
/// Required:
Original file line number Diff line number Diff line change
1
+ part of '../AnilistQueries.dart' ;
2
+ extension on AnilistQueries {
3
+
4
+ Future <List <media>> _getCalendarData () async {
5
+ int page = 1 ;
6
+ List <media> mediaList = [];
7
+
8
+ Future <Page ?> execute (int page) async => (await executeQuery <PageResponse >(_queryCalendar (page),force: true ))? .data? .page;
9
+
10
+ Page ? result;
11
+ do {
12
+ result = await execute (page);
13
+ if (result != null && result.airingSchedules != null ) {
14
+ mediaList.addAll (result.airingSchedules!
15
+ .where ((m) =>
16
+ m.media != null &&
17
+ m.media! .countryOfOrigin == "JP" &&
18
+ (! Anilist .adult || m.media! .isAdult == false ))
19
+ .map ((j) {
20
+ final mediaItem = mediaData (j.media! );
21
+ mediaItem.relation = "${j .episode },${j .airingAt }" ;
22
+ return mediaItem;
23
+ }).toList ());
24
+ page++ ;
25
+ }
26
+ } while (result? .pageInfo? .hasNextPage == true );
27
+
28
+ return mediaList.reversed.toList ();
29
+ }
30
+
31
+ _queryCalendar (int page){
32
+ final int curr = DateTime .now ().millisecondsSinceEpoch ~ / 1000 ;
33
+ return '''{
34
+ Page(page: $page , perPage: 50) {
35
+ pageInfo {
36
+ hasNextPage
37
+ total
38
+ }
39
+ airingSchedules(
40
+ airingAt_greater: ${curr - 86400 },
41
+ airingAt_lesser: ${curr + (86400 * 6 )},
42
+ sort: TIME_DESC
43
+ ) {
44
+ episode
45
+ airingAt
46
+ media {
47
+ id
48
+ idMal
49
+ status
50
+ chapters
51
+ episodes
52
+ nextAiringEpisode { episode }
53
+ isAdult
54
+ type
55
+ meanScore
56
+ isFavourite
57
+ format
58
+ bannerImage
59
+ countryOfOrigin
60
+ coverImage { large }
61
+ title {
62
+ english
63
+ romaji
64
+ userPreferred
65
+ }
66
+ mediaListEntry {
67
+ progress
68
+ private
69
+ score(format: POINT_100)
70
+ status
71
+ }
72
+ }
73
+ }
74
+ }
75
+ }''' ;
76
+ }
77
+ }
You can’t perform that action at this time.
0 commit comments