データ取得
番組・エピソード・ユーザーの基本情報はGraphQLのQueryで取得できます。公開コンテンツの取得にはAPIトークンは不要ですが、meや自分のプレイリストなど、利用者固有の情報には認証が必要です。
番組とエピソード
IDを指定して番組と公開済みエピソードを取得します。ページネーションを行うフィールドでは、firstに1ページの件数、pageにページ番号を指定します。
query Podcast($podcastId: String!, $page: Int = 1) {
podcast(id: $podcastId) {
id
title
description
imageUrl300
hostedByListen
episodes(status: PUBLISHED, sort: NEWEST, first: 20, page: $page) {
data {
id
title
pubDate
duration
webviewUrl
}
paginatorInfo {
currentPage
hasMorePages
}
}
}
}
エピソードを直接取得する場合はepisode(id:)を使います。音声・ビデオのURLや変換状態はmediaVersionsを型ごとのフラグメントで取得できます。
query Episode($episodeId: String!) {
episode(id: $episodeId) {
id
title
description
pubDate
podcast { id title }
mediaVersions {
... on AudioVersion {
fileUrl
format
}
... on VideoVersion {
fileUrl
format
status
thumbnailUrl
}
}
}
}
非公開・限定公開・有料・フォロワー限定のコンテンツは、閲覧権限がある利用者として認証した場合だけ取得できます。
検索
番組はsearchPodcasts、エピソードはsearchEpisodesで検索できます。searchEpisodesのsemantic: trueは意味を考慮したハイブリッド検索、podcastIdは番組内検索です。
query SearchEpisodes($query: String!, $page: Int = 1) {
searchEpisodes(query: $query, semantic: false, first: 20, page: $page) {
data {
id
title
pubDate
searchSnippet
podcast { id title }
}
paginatorInfo {
currentPage
hasMorePages
}
}
}
よく使うQuery
| Query | 用途 | 認証 |
|---|---|---|
me |
ログイン中の利用者、所有番組、プレイリストなど | 必須 |
user(id:) |
公開ユーザー情報 | 不要 |
podcast(id:) |
番組と配信エピソード | コンテンツによる |
episode(id:) / episodes(ids:) |
1件または複数のエピソード | コンテンツによる |
searchPodcasts(query:) |
番組検索 | 不要 |
searchEpisodes(query:) |
エピソード全文検索 | 不要 |
categories / category(id:) |
カテゴリ一覧・詳細 | 不要 |
modelByUrl(url:) |
LISTENのURLから対象データを取得 | 不要 |
利用できるフィールドはGraphQLのイントロスペクションでも確認できます。必要なフィールドだけを選択してリクエストしてください。