bazarr-bulk 0.1.3

A bulk operation CLI tool for Bazarr
use serde::{Deserialize, Serialize};

#[derive(Debug, Serialize, Deserialize)]
pub struct PaginatedResponse<T> {
    pub data: Vec<T>,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct Movie {
    pub subtitles: Vec<Subtitle>,
    #[serde(rename = "radarrId")]
    pub radarr_id: u32,
    pub title: String,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct TVShow {
    #[serde(rename = "sonarrSeriesId")]
    pub sonarr_series_id: u32,
    pub title: String,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct Episode {
    #[serde(rename = "sonarrEpisodeId")]
    pub sonarr_episode_id: u32,
    pub subtitles: Vec<Subtitle>,
    pub title: String,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct AudioLanguageItem {
    pub name: String,
    pub code2: Option<String>,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct Subtitle {
    pub path: Option<String>,
    #[serde(flatten)]
    pub audio_language_item: AudioLanguageItem,
}

impl Subtitle {
    pub fn is_valid(&self) -> bool {
        self.path.is_some() && self.audio_language_item.code2.is_some()
    }
}