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

2024-10-03 09:20:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在做一个小的爱好项目,遇到了一些我自己无法解决的问题。首先,我想指出的是,我的编程经验局限于一些计算物理,因此离我目前的问题相当遥远。你知道吗

简单地说,我想对API请求的数据进行一些数据分析。我想到的API是this一个(文档就在那里链接(不能再发布任何链接))。还有一个很好的补充来处理提供的here。我能够编写一个basic程序来获取给定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:我如何搜索比名字更复杂的东西,例如流行度等。我如何编辑代码以便以后能够搜索像键seasonYear这样的东西。你知道吗


编辑:在做了更多的研究并在网上查看了一些其他示例之后,我能够解决我的第一个问题,那就是编写一个函数,返回具有特定popularity的所有条目。我用来做这件事的代码是

        query ($query: Int) {
            Page {
                media(isAdult: false, popularity_greater: $query, type: ANIME) {
                    id
                    title {
                        english
                    }
                    episodes
                    startDate {
                        day
                        month
                        year
                    }
                    endDate {
                        day
                        month
                        year
                    }
                    genres
                    popularity
                }
            }
        }

所以唯一剩下的是关于seasonYear键的第二个问题。你知道吗


Tags: 数据文档apiidsearchhere链接type
1条回答
网友
1楼 · 发布于 2024-10-03 09:20:07

Page in the docs下,您将看到media(注意小写)链接到这些docs here:这个media返回与Media(大写)查询返回对象不同。这个media node没有seasonYear值,正如错误所说。从外观上看,您可能需要startDateendDate并从那里开始解析

相关问题 更多 >