Skip to content

Commit

Permalink
feat(anilist): make perPage configurable
Browse files Browse the repository at this point in the history
  • Loading branch information
Benexl committed Dec 7, 2024
1 parent a79b59f commit 677f469
Show file tree
Hide file tree
Showing 3 changed files with 81 additions and 30 deletions.
9 changes: 6 additions & 3 deletions fastanime/cli/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ class Config(object):
"normalize_titles": "True",
"notification_duration": "2",
"max_cache_lifetime": "03:00:00",
"per_page": "15",
"player": "mpv",
"preferred_history": "local",
"preferred_language": "english",
Expand Down Expand Up @@ -113,9 +114,7 @@ def load_config(self):
self.disable_mpv_popen = self.configparser.getboolean(
"stream", "disable_mpv_popen"
)
self.discord = self.configparser.getboolean(
"general", "discord"
)
self.discord = self.configparser.getboolean("general", "discord")
self.downloads_dir = self.configparser.get("general", "downloads_dir")
self.episode_complete_at = self.configparser.getint(
"stream", "episode_complete_at"
Expand Down Expand Up @@ -148,6 +147,7 @@ def load_config(self):
+ max_cache_lifetime[1] * 3600
+ max_cache_lifetime[2] * 60
)
self.per_page = self.configparser.get("anilist", "per_page")
self.player = self.configparser.get("stream", "player")
self.preferred_history = self.configparser.get("stream", "preferred_history")
self.preferred_language = self.configparser.get("general", "preferred_language")
Expand Down Expand Up @@ -568,6 +568,9 @@ def __repr__(self):
# since you will miss out on some features if you use the others
player = {self.player}
[anilist]
per_page = {self.per_page}
#
# HOPE YOU ENJOY FASTANIME AND BE SURE TO STAR THE PROJECT ON GITHUB
# https://github.com/Benexl/FastAnime
Expand Down
74 changes: 61 additions & 13 deletions fastanime/libs/anilist/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
"""

import logging
import os
from typing import TYPE_CHECKING

import requests
Expand Down Expand Up @@ -139,7 +140,12 @@ def update_anime_list(self, values_to_update: dict):
return self._make_authenticated_request(media_list_mutation, variables)

def get_anime_list(
self, status: "AnilistMediaListStatus", type="ANIME", page=1, **kwargs
self,
status: "AnilistMediaListStatus",
type="ANIME",
page=1,
perPage=os.environ.get("FASTANIME_PER_PAGE", 15),
**kwargs,
) -> tuple[bool, "AnilistMediaLists"] | tuple[bool, None]:
"""gets an anime list from your media list given the list status
Expand All @@ -154,6 +160,7 @@ def get_anime_list(
"userId": self.user_id,
"type": type,
"page": page,
"perPage": int(perPage),
}
return self._make_authenticated_request(media_list_query, variables)

Expand Down Expand Up @@ -354,51 +361,92 @@ def get_anime(self, id: int):
variables = {"id": id}
return self.get_data(anime_query, variables)

def get_trending(self, type="ANIME", page=1, *_, **kwargs):
def get_trending(
self,
type="ANIME",
page=1,
perPage=os.environ.get("FASTANIME_PER_PAGE", 15),
*_,
**kwargs,
):
"""
Gets the currently trending anime
"""
variables = {"type": type, "page": page}
variables = {"type": type, "page": page, "perPage": int(perPage)}
trending = self.get_data(trending_query, variables)
return trending

def get_most_favourite(self, type="ANIME", page=1, *_, **kwargs):
def get_most_favourite(
self,
type="ANIME",
page=1,
perPage=os.environ.get("FASTANIME_PER_PAGE", 15),
*_,
**kwargs,
):
"""
Gets the most favoured anime on anilist
"""
variables = {"type": type, "page": page}
variables = {"type": type, "page": page, "perPage": int(perPage)}
most_favourite = self.get_data(most_favourite_query, variables)
return most_favourite

def get_most_scored(self, type="ANIME", page=1, *_, **kwargs):
def get_most_scored(
self,
type="ANIME",
page=1,
perPage=os.environ.get("FASTANIME_PER_PAGE", 15),
*_,
**kwargs,
):
"""
Gets most scored anime on anilist
"""
variables = {"type": type, "page": page}
variables = {"type": type, "page": page, "perPage": int(perPage)}
most_scored = self.get_data(most_scored_query, variables)
return most_scored

def get_most_recently_updated(self, type="ANIME", page=1, *_, **kwargs):
def get_most_recently_updated(
self,
type="ANIME",
page=1,
perPage=os.environ.get("FASTANIME_PER_PAGE", 15),
*_,
**kwargs,
):
"""
Gets most recently updated anime from anilist
"""
variables = {"type": type, "page": page}
variables = {"type": type, "page": page, "perPage": int(perPage)}
most_recently_updated = self.get_data(most_recently_updated_query, variables)
return most_recently_updated

def get_most_popular(self, type="ANIME", page=1, **kwargs):
def get_most_popular(
self,
type="ANIME",
page=1,
perPage=os.environ.get("FASTANIME_PER_PAGE", 15),
**kwargs,
):
"""
Gets most popular anime on anilist
"""
variables = {"type": type, "page": page}
variables = {"type": type, "page": page, "perPage": int(perPage)}
most_popular = self.get_data(most_popular_query, variables)
return most_popular

def get_upcoming_anime(self, type="ANIME", page: int = 1, *_, **kwargs):
def get_upcoming_anime(
self,
type="ANIME",
page: int = 1,
perPage=os.environ.get("FASTANIME_PER_PAGE", 15),
*_,
**kwargs,
):
"""
Gets upcoming anime from anilist
"""
variables = {"page": page, "type": type}
variables = {"page": page, "type": type, "perPage": int(perPage)}
upcoming_anime = self.get_data(upcoming_anime_query, variables)
return upcoming_anime

Expand Down
28 changes: 14 additions & 14 deletions fastanime/libs/anilist/queries_graphql.py
Original file line number Diff line number Diff line change
Expand Up @@ -193,8 +193,8 @@
"""

media_list_query = """
query ($userId: Int, $status: MediaListStatus, $type: MediaType, $page: Int) {
Page(perPage: 15, page: $page) {
query ($userId: Int, $status: MediaListStatus, $type: MediaType, $page: Int, $perPage: Int) {
Page(perPage: $perPage, page: $page) {
pageInfo {
currentPage
total
Expand Down Expand Up @@ -406,8 +406,8 @@
)

trending_query = """
query ($type: MediaType, $page: Int) {
Page(perPage: 15, page: $page) {
query ($type: MediaType, $page: Int,$perPage:Int) {
Page(perPage: $perPage, page: $page) {
media(sort: TRENDING_DESC, type: $type, genre_not_in: ["hentai"]) {
id
idMal
Expand Down Expand Up @@ -471,8 +471,8 @@

# mosts
most_favourite_query = """
query ($type: MediaType, $page: Int) {
Page(perPage: 15, page: $page) {
query ($type: MediaType, $page: Int,$perPage:Int) {
Page(perPage: $perPage, page: $page) {
media(sort: FAVOURITES_DESC, type: $type, genre_not_in: ["hentai"]) {
id
idMal
Expand Down Expand Up @@ -539,8 +539,8 @@
"""

most_scored_query = """
query ($type: MediaType, $page: Int) {
Page(perPage: 15, page: $page) {
query ($type: MediaType, $page: Int,$perPage:Int) {
Page(perPage: $perPage, page: $page) {
media(sort: SCORE_DESC, type: $type, genre_not_in: ["hentai"]) {
id
idMal
Expand Down Expand Up @@ -603,8 +603,8 @@
"""

most_popular_query = """
query ($type: MediaType, $page: Int) {
Page(perPage: 15, page: $page) {
query ($type: MediaType, $page: Int,$perPage:Int) {
Page(perPage: $perPage, page: $page) {
media(sort: POPULARITY_DESC, type: $type, genre_not_in: ["hentai"]) {
id
idMal
Expand Down Expand Up @@ -667,8 +667,8 @@
"""

most_recently_updated_query = """
query ($type: MediaType, $page: Int) {
Page(perPage: 15, page: $page) {
query ($type: MediaType, $page: Int,$perPage:Int) {
Page(perPage: $perPage, page: $page) {
media(
sort: UPDATED_AT_DESC
type: $type
Expand Down Expand Up @@ -918,8 +918,8 @@
"""

upcoming_anime_query = """
query ($page: Int, $type: MediaType) {
Page(perPage: 15, page: $page) {
query ($page: Int, $type: MediaType,$perPage:Int) {
Page(perPage: $perPage, page: $page) {
pageInfo {
total
perPage
Expand Down

0 comments on commit 677f469

Please sign in to comment.