radiko-rs 0.4.1

An unofficial Rust library for accessing Japan's radiko radio streaming service
Documentation
use serde::{Deserialize, Serialize};

#[derive(Debug, Deserialize, Serialize, Clone)]
#[serde(rename = "radiko")]
pub struct RadikoProgramXml {
    pub ttl: Option<u32>,
    pub srvtime: Option<u64>,
    pub stations: StationsXml,
}

#[derive(Debug, Deserialize, Serialize, Clone)]
pub struct StationsXml {
    #[serde(rename = "station")]
    pub station: Vec<StationXml>,
}

#[derive(Debug, Deserialize, Serialize, Clone)]
pub struct ProgramsXml {
    pub date: Option<String>,
    #[serde(rename = "prog")]
    pub program: Vec<ProgramXml>,
}

#[derive(Debug, Deserialize, Serialize, Clone)]
pub struct ProgramXml {
    #[serde(rename = "@id")]
    pub id: String,
    #[serde(rename = "@master_id")]
    pub master_id: Option<String>,
    #[serde(rename = "@ft")]
    pub ft: String,
    #[serde(rename = "@to")]
    pub to: String,
    #[serde(rename = "@ftl")]
    pub ftl: String,
    #[serde(rename = "@tol")]
    pub tol: String,
    #[serde(rename = "@dur")]
    pub dur: Option<u32>,

    pub title: String,
    pub url: Option<String>,
    pub desc: Option<String>,
    pub url_link: Option<String>,
    pub info: Option<String>,
    pub pfm: Option<String>,
    pub img: Option<String>,
    pub failed_record: Option<u8>,
    pub ts_in_ng: Option<u8>,
    pub tsplus_in_ng: Option<u8>,
    pub ts_out_ng: Option<u8>,
    pub tsplus_out_ng: Option<u8>,
    pub tag: Option<TagXml>,
    pub genre: Option<GenreXml>,
    pub metas: Option<MetasXml>,
}

#[derive(Debug, Deserialize, Serialize, Clone)]
pub struct StationXml {
    #[serde(rename = "@id")]
    pub id: String,
    pub name: String,
    #[serde(rename = "progs")]
    pub programs: Vec<ProgramsXml>,
}

#[derive(Debug, Deserialize, Serialize, Clone)]
pub struct TagXml {
    #[serde(rename = "item", default)]
    pub items: Vec<TagItemXml>,
}

#[derive(Debug, Deserialize, Serialize, Clone)]
pub struct TagItemXml {
    pub name: String,
}

#[derive(Debug, Deserialize, Serialize, Clone)]
pub struct GenreXml {
    #[serde(rename = "program", default)]
    pub programs: Vec<GenreProgramXml>,
    #[serde(rename = "personality", default)]
    pub personalities: Vec<GenrePersonalityXml>,
}

#[derive(Debug, Deserialize, Serialize, Clone)]
pub struct GenreProgramXml {
    #[serde(rename = "@id")]
    pub id: String,
    pub name: String,
}

#[derive(Debug, Deserialize, Serialize, Clone)]
pub struct GenrePersonalityXml {
    #[serde(rename = "@id")]
    pub id: String,
    pub name: String,
}

#[derive(Debug, Deserialize, Serialize, Clone)]
pub struct MetasXml {
    #[serde(rename = "meta", default)]
    pub metas: Vec<MetaXml>,
}

#[derive(Debug, Deserialize, Serialize, Clone)]
pub struct MetaXml {
    #[serde(rename = "@name")]
    pub name: String,
    #[serde(rename = "@value")]
    pub value: String,
}