修改现有代码以从API获取搜索结果

时间:2018-12-17 23:32:49

标签: python json api

我目前正在从事一个小型业余项目,遇到了一些我无法解决的问题。首先,我想指出,我的编程经验仅限于某种计算物理学,因此与当前的问题相去甚远。

简单地说,我想对API请求的数据进行一些数据分析。我想到的API是this的一种(文档已在此处链接(无法发布任何链接))。 here还提供了相当不错的功能来处理。我能够编写一个基本程序来获取给定id的数据并进行一些简单的计算。由于必须查找每个标题的id很不方便,因此3的作者提供了一个搜索选项。因此,我可以通过nameseasonhere中定义的其他key搜索条目。

这当然很方便,但是我看不到如何在可能更复杂的环境中有效地使用它。例如,假设我按照3Read me文件中的建议进行了以下操作。

from Pymoe import Anilist
instance = Anilist()
instance.search.anime("King")

很显然,这将在标题中搜索“ King”一词,但是如果我想搜索具有最高人气的条目,这也是search定义中的关键(如可以在4第87行中看到),我该怎么做?

我目前面临的另一个问题与上面的部分相关,是修改search的目标。我已经为get完成了此操作(添加了另一个键,它很好用),但是我为此search苦苦挣扎。假设我要添加密钥seasonYear(可以在第19行的here中找到)。我的尝试是将3中的第69-94行更改为

    query ($query: String, $page: Int, $perpage: Int) {
        Page (page: $page, perPage: $perpage) {
            pageInfo {
                total
                currentPage
                lastPage
                hasNextPage
            }
            media (search: $query, type: ANIME) {
                id
                title {
                    romaji
                    english
                }
                coverImage {
                    large
                }
                averageScore
                popularity
                episodes
                season
                seasonYear
                hashtag
                isAdult
            }
        }
    }

我用seasonYear加行了。当我尝试运行此命令时,出现错误

{'data': None, 'errors': [{'message': 'Cannot query field "seasonYear" on type "Media".', 'status': 400, 'locations': [{'line': 22, 'column': 25}]}]}

但是根据文档,这是media类型的有效密钥。


TL; DR::如何搜索比名称更复杂的名称,例如流行度等。如何编辑代码,以便以后可以搜索诸如密钥{ {1}}。


编辑:在进行了更多研究并在线查看了一些其他示例之后,我得以解决我的第一个问题,即编写了一个函数,该函数返回带有特定{ {1}}。我想到的代码是

seasonYear

因此,唯一剩下的就是我关于popularity键的第二个问题。

1 个答案:

答案 0 :(得分:0)

Page in the docs下,您会看到media(注意小写)链接到这些docs here:此media返回与Media不同(大写)查询返回对象。就像错误指出的一样,此media node没有seasonYear值。从外观上看,您可能想要startDateendDate并从那里解析年份