В настоящее время я работаю над небольшим хобби-проектом и столкнулся с некоторыми проблемами, которые не могу решить. Прежде всего, я хотел бы отметить, что мой опыт программирования ограничен некоторой вычислительной физикой и, следовательно, довольно далек от моей текущей проблемы.
Проще говоря, я хотел бы провести некоторый анализ данных с данными, запрошенными из API. Я имею в виду API-интерфейс это (документация связана прямо здесь (больше не могу публиковать ссылки)). Есть также довольно приятное дополнение для работы с этим предоставленным здесь. Мне удалось написать базовую программу для получения данных для данного id
и выполнить некоторые простые вычисления. Поскольку искать id
каждого заголовка довольно неудобно, автор 3 предоставил возможность поиска. Итак, я могу искать запись по name
, season
и некоторым другим key
, определенным в здесь.
Это, безусловно, удобно, но я не понимаю, как я могу эффективно использовать это в, возможно, немного более сложном контексте. Допустим, я делаю следующее, как это предлагается в файле Read me
3.
from Pymoe import Anilist
instance = Anilist()
instance.search.anime("King")
Совершенно очевидно, что это приведет к поиску слова «Король» в названии, но если я хочу найти записи с наибольшей популярностью, это также является ключом в определении search
(как можно увидеть в строке 87 4 ), как бы я это сделал?
Другая проблема, с которой я сейчас сталкиваюсь, которая частично связана с вышеизложенным, - это цель модификации search
. Я сделал это для get
(добавил еще один ключ, и он отлично работает), но я борюсь с этим для search
. Допустим, я хочу добавить ключ seasonYear
(который можно найти здесь в строке 19). Моя попытка состояла в том, чтобы изменить строки 69-94 в 3 на
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
.
@Dora, но когда я смотрю на определение Page
здесь, там есть ключ для seasonYear
... Я немного запутался, не могли бы вы немного прояснить это.
Вы передаете аргументы как season
, так и seasonYear
? По "# seasonYear: год сезона (зима 2017 также будет # включать выпуск за декабрь 2016 г.). Требуется аргумент сезона"(строка 16 документации по запросу)
@ReidBallard Я думаю, что да (в моем примере выше он включен), но я, очевидно, не уверен, правильно ли я делаю это ...
Хорошо, понятно: я предположил, что вы были searching по сезону. Год: вы просто извлекали его правильно? Посмотрев еще раз на документы, в разделе Страница здесь вы увидите, что media
(обратите внимание на строчные буквы) ссылается на эти документы здесь: этот возврат media
отличается от объекта возврата запроса Media
(заглавными буквами). Этот узел media
не имеет значения seasonYear
, как и написано в ошибке. Судя по всему, вы, вероятно, захотите либо startDate
, либо endDate
и проанализируете год оттуда.
@ReidBallard Спасибо за комментарий, который действительно решил мою проблему!
Рад слышать! Я скопирую решение, чтобы его было легче найти и на вопрос можно было отметить ответ.
Под Страница в документации вы увидите, что media
(обратите внимание на нижний регистр) ссылается на эти документы здесь: этот возврат media
отличается от объекта возврата запроса Media
(заглавными буквами). Этот media node
не имеет значения seasonYear
, как и написано в ошибке. Судя по всему, вы, вероятно, захотите либо startDate
, либо endDate
и проанализируете год оттуда.
Я читаю этот anilist.github.io/ApiV2-GraphQL-Docs/media.doc.html, но не вижу поля
seasonYear
. Я вижуseason