diff options
Diffstat (limited to 'import/src/tmdb.rs')
-rw-r--r-- | import/src/tmdb.rs | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/import/src/tmdb.rs b/import/src/tmdb.rs index 678ce61..70e95ce 100644 --- a/import/src/tmdb.rs +++ b/import/src/tmdb.rs @@ -116,6 +116,26 @@ impl Tmdb { }) .await } + + pub async fn episode_details( + &self, + series_id: u64, + season: usize, + episode: usize, + ) -> anyhow::Result<Arc<TmdbEpisode>> { + async_cache_memory(&["api-tmdb-episode-details", &format!("{series_id} {season} {episode}")], || async move { + info!("tmdb episode details {series_id} S={season} E={episode}"); + Ok(self + .image_client + .get(&format!("https://api.themoviedb.org/3/tv/{series_id}/season/{season}/episode/{episode}?api_key={}", self.key)) + .send() + .await? + .error_for_status()? + .json() + .await?) + }) + .await + } } pub fn parse_release_date(d: &str) -> anyhow::Result<Option<i64>> { @@ -143,6 +163,18 @@ pub fn parse_release_date(d: &str) -> anyhow::Result<Option<i64>> { } #[derive(Debug, Clone, Deserialize, Encode, Decode)] +pub struct TmdbEpisode { + pub air_date: String, + pub overview: String, + pub name: String, + pub id: u64, + pub runtime: f64, + pub still_path: Option<String>, + pub vote_average: f64, + pub vote_count: usize, +} + +#[derive(Debug, Clone, Deserialize, Encode, Decode)] pub struct TmdbPersonImage { pub id: u64, pub profiles: Vec<TmdbPersonImageProfile>, |