feat(meta): look up series external ids
This commit is contained in:
@@ -9,8 +9,8 @@ use serde::de::DeserializeOwned;
|
||||
use crate::cache::Cache;
|
||||
use crate::error::{Error, Result};
|
||||
use crate::model::{
|
||||
Movie, MovieSearchResult, RawFindPage, RawMovie, RawSearchPage, RawSeason, RawSeries,
|
||||
RawSeriesSearchPage, Season, Series, SeriesSearchResult,
|
||||
ExternalIds, Movie, MovieSearchResult, RawExternalIds, RawFindPage, RawMovie, RawSearchPage,
|
||||
RawSeason, RawSeries, RawSeriesSearchPage, Season, Series, SeriesSearchResult,
|
||||
};
|
||||
|
||||
/// TMDB's v3 API root.
|
||||
@@ -157,6 +157,20 @@ impl TmdbClient {
|
||||
Ok(raw.into())
|
||||
}
|
||||
|
||||
/// External ids for one TV series, of which the TVDB id is the one this
|
||||
/// project needs (§6.1).
|
||||
///
|
||||
/// # Errors
|
||||
///
|
||||
/// [`Error::NotFound`] when TMDB has no such id, otherwise any of [`Error`].
|
||||
pub async fn series_external_ids(&self, tmdb_id: u32) -> Result<ExternalIds> {
|
||||
let path = format!("tv/{tmdb_id}/external_ids");
|
||||
let raw: RawExternalIds = self.get_json(&path, &[]).await?;
|
||||
Ok(ExternalIds {
|
||||
tvdb_id: raw.tvdb_id,
|
||||
})
|
||||
}
|
||||
|
||||
/// Episodes in one TV season.
|
||||
///
|
||||
/// # Errors
|
||||
|
||||
@@ -23,4 +23,6 @@ mod model;
|
||||
|
||||
pub use client::{TmdbClient, TmdbClientBuilder, DEFAULT_BASE_URL, DEFAULT_CACHE_TTL};
|
||||
pub use error::{Error, Result};
|
||||
pub use model::{Episode, Movie, MovieSearchResult, Season, Series, SeriesSearchResult};
|
||||
pub use model::{
|
||||
Episode, ExternalIds, Movie, MovieSearchResult, Season, Series, SeriesSearchResult,
|
||||
};
|
||||
|
||||
@@ -218,9 +218,16 @@ pub(crate) struct RawSeries {
|
||||
external_ids: Option<RawExternalIds>,
|
||||
}
|
||||
|
||||
/// The slice of `/tv/{id}/external_ids` this project reads.
|
||||
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
|
||||
pub struct ExternalIds {
|
||||
/// The Torznab `tvdbid` parameter (§6.1), when TMDB knows one.
|
||||
pub tvdb_id: Option<u32>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
struct RawExternalIds {
|
||||
tvdb_id: Option<u32>,
|
||||
pub(crate) struct RawExternalIds {
|
||||
pub(crate) tvdb_id: Option<u32>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
|
||||
Reference in New Issue
Block a user