feat: following / followers page

This commit is contained in:
rebelonion 2024-03-05 19:33:42 -06:00
parent 8da0092561
commit 31afbd547e
17 changed files with 546 additions and 215 deletions

View file

@ -1278,12 +1278,19 @@ Page(page:$page,perPage:50) {
}
return responseArray
}
private fun userFavMediaQuery(anime: Boolean, page: Int, id: Int): String {
return """User(id:${id}){id favourites{${if (anime) "anime" else "manga"}(page:$page){pageInfo{hasNextPage}edges{favouriteOrder node{id idMal isAdult mediaListEntry{ progress private score(format:POINT_100) status } chapters isFavourite format episodes nextAiringEpisode{episode}meanScore isFavourite format startDate{year month day} title{english romaji userPreferred}type status(version:2)bannerImage coverImage{large}}}}}}"""
}
suspend fun userFollowing(id: Int): Query.Following?{
return executeQuery<Query.Following>("""{Following:Page {following(userId:${id},sort:[USERNAME]){id name avatar{large medium}bannerImage}}}""", force = true)
return executeQuery<Query.Following>("""{Page {following(userId:${id},sort:[USERNAME]){id name avatar{large medium}bannerImage}}}""", force = true)
}
suspend fun userFollowers(id: Int): Query.Follower?{
return executeQuery<Query.Follower>("""{Page {followers(userId:${id},sort:[USERNAME]){id name avatar{large medium}bannerImage}}}""", force = true)
}
private suspend fun userBannerImage(type: String,id: Int?): String? {
val response =
executeQuery<Query.MediaListCollection>("""{ MediaListCollection(userId: ${id}, type: $type, chunk:1,perChunk:25, sort: [SCORE_DESC,UPDATED_TIME_DESC]) { lists { entries{ media { id bannerImage } } } } } """)

View file

@ -143,73 +143,97 @@ class Query {
data class ToggleFollow(
@SerialName("data")
val data: Data?
) {
) : java.io.Serializable {
@Serializable
data class Data(
@SerialName("ToggleFollow")
val toggleFollow: FollowData
)
) : java.io.Serializable
}
@Serializable
data class GenreCollection(
@SerialName("data")
val data: Data
) {
) : java.io.Serializable {
@Serializable
data class Data(
@SerialName("GenreCollection")
val genreCollection: List<String>?
)
) : java.io.Serializable
}
@Serializable
data class MediaTagCollection(
@SerialName("data")
val data: Data
) {
) : java.io.Serializable {
@Serializable
data class Data(
@SerialName("MediaTagCollection")
val mediaTagCollection: List<MediaTag>?
)
) : java.io.Serializable
}
@Serializable
data class User(
@SerialName("data")
val data: Data
) {
) : java.io.Serializable {
@Serializable
data class Data(
@SerialName("User")
val user: ani.dantotsu.connections.anilist.api.User?
)
) : java.io.Serializable
}
@Serializable
data class UserProfileResponse(
@SerialName("data")
val data: Data
) {
) : java.io.Serializable {
@Serializable
data class Data(
@SerialName("user")
val user: UserProfile?
)
) : java.io.Serializable
}
@Serializable
data class Following(
@SerialName("data")
val data: Data
) {
) : java.io.Serializable {
@Serializable
data class Data(
@SerialName("following")
val following: ani.dantotsu.connections.anilist.api.User?
)
@SerialName("Page")
val page: FollowingPage?
) : java.io.Serializable
}
@Serializable
data class Follower(
@SerialName("data")
val data: Data
) : java.io.Serializable {
@Serializable
data class Data(
@SerialName("Page")
val page: FollowerPage?
) : java.io.Serializable
}
@Serializable
data class FollowerPage(
@SerialName("followers")
val followers: List<ani.dantotsu.connections.anilist.api.User>?
) : java.io.Serializable
@Serializable
data class FollowingPage(
@SerialName("following")
val following: List<ani.dantotsu.connections.anilist.api.User>?
) : java.io.Serializable
@Serializable
data class UserProfile(
@SerialName("id")
@ -342,7 +366,7 @@ class Query {
val mediaListOptions: MediaListOptions,
@SerialName("statistics")
val statistics: StatisticsTypes
)
) : java.io.Serializable
@Serializable
data class StatisticsTypes(
@ -350,7 +374,7 @@ class Query {
val anime: Statistics,
@SerialName("manga")
val manga: Statistics
)
) : java.io.Serializable
@Serializable
data class Statistics(
@ -392,7 +416,7 @@ class Query {
val staff: List<StatisticsStaff>,
@SerialName("studios")
val studios: List<StatisticsStudio>
)
) : java.io.Serializable
@Serializable
data class StatisticsFormat(
@ -408,7 +432,7 @@ class Query {
val mediaIds: List<Int>,
@SerialName("format")
val format: String
)
) : java.io.Serializable
@Serializable
data class StatisticsStatus(
@ -424,7 +448,7 @@ class Query {
val mediaIds: List<Int>,
@SerialName("status")
val status: String
)
) : java.io.Serializable
@Serializable
data class StatisticsScore(
@ -440,7 +464,7 @@ class Query {
val mediaIds: List<Int>,
@SerialName("score")
val score: Int
)
) : java.io.Serializable
@Serializable
data class StatisticsLength(
@ -456,7 +480,7 @@ class Query {
val mediaIds: List<Int>,
@SerialName("length")
val length: String? //can be null for manga
)
) : java.io.Serializable
@Serializable
data class StatisticsReleaseYear(
@ -472,7 +496,7 @@ class Query {
val mediaIds: List<Int>,
@SerialName("releaseYear")
val releaseYear: Int
)
) : java.io.Serializable
@Serializable
data class StatisticsStartYear(
@ -488,7 +512,7 @@ class Query {
val mediaIds: List<Int>,
@SerialName("startYear")
val startYear: Int
)
) : java.io.Serializable
@Serializable
data class StatisticsGenre(
@ -504,7 +528,7 @@ class Query {
val mediaIds: List<Int>,
@SerialName("genre")
val genre: String
)
) : java.io.Serializable
@Serializable
data class StatisticsTag(
@ -520,7 +544,7 @@ class Query {
val mediaIds: List<Int>,
@SerialName("tag")
val tag: Tag
)
) : java.io.Serializable
@Serializable
data class Tag(
@ -528,7 +552,7 @@ class Query {
val id: Int,
@SerialName("name")
val name: String
)
) : java.io.Serializable
@Serializable
data class StatisticsCountry(
@ -544,7 +568,7 @@ class Query {
val mediaIds: List<Int>,
@SerialName("country")
val country: String
)
) : java.io.Serializable
@Serializable
data class StatisticsVoiceActor(
@ -562,7 +586,7 @@ class Query {
val voiceActor: VoiceActor,
@SerialName("characterIds")
val characterIds: List<Int>
)
) : java.io.Serializable
@Serializable
data class VoiceActor(
@ -570,7 +594,7 @@ class Query {
val id: Int,
@SerialName("name")
val name: StaffName
)
) : java.io.Serializable
@Serializable
data class StaffName(
@ -588,7 +612,7 @@ class Query {
val alternative: List<String>?,
@SerialName("userPreferred")
val userPreferred: String?
)
) : java.io.Serializable
@Serializable
data class StatisticsStaff(
@ -604,7 +628,7 @@ class Query {
val mediaIds: List<Int>,
@SerialName("staff")
val staff: VoiceActor
)
) : java.io.Serializable
@Serializable
data class StatisticsStudio(
@ -620,7 +644,7 @@ class Query {
val mediaIds: List<Int>,
@SerialName("studio")
val studio: StatStudio
)
) : java.io.Serializable
@Serializable
data class StatStudio(
@ -630,7 +654,7 @@ class Query {
val name: String,
@SerialName("isAnimationStudio")
val isAnimationStudio: Boolean
)
) : java.io.Serializable
}