docs: more model documentation
This commit is contained in:
parent
305c3ee70e
commit
49f3aa3577
7 changed files with 48 additions and 23 deletions
|
|
@ -141,6 +141,9 @@ pub async fn generate_locales(project_root: &Path) {
|
|||
let (languages, countries) = get_locales().await;
|
||||
|
||||
let code_head = r#"// This file is automatically generated. DO NOT EDIT.
|
||||
|
||||
//! Languages and countries
|
||||
|
||||
use std::{fmt::Display, str::FromStr};
|
||||
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
|
@ -177,28 +180,41 @@ impl FromStr for Country {
|
|||
}
|
||||
"#;
|
||||
|
||||
let mut code_langs =
|
||||
r#"#[derive(Copy, Clone, Debug, Serialize, Deserialize, PartialEq, Eq, PartialOrd, Ord, Hash)]
|
||||
let mut code_langs = r#"/// Available languages
|
||||
#[derive(Copy, Clone, Debug, Serialize, Deserialize, PartialEq, Eq, PartialOrd, Ord, Hash)]
|
||||
#[serde(rename_all = "lowercase")]
|
||||
pub enum Language {
|
||||
"#.to_owned();
|
||||
"#
|
||||
.to_owned();
|
||||
|
||||
let mut code_countries =
|
||||
r#"#[derive(Copy, Clone, Debug, Serialize, Deserialize, PartialEq, Eq, PartialOrd, Ord, Hash)]
|
||||
let mut code_countries = r#"/// Available countries
|
||||
#[derive(Copy, Clone, Debug, Serialize, Deserialize, PartialEq, Eq, PartialOrd, Ord, Hash)]
|
||||
#[serde(rename_all = "UPPERCASE")]
|
||||
pub enum Country {
|
||||
"#.to_owned();
|
||||
"#
|
||||
.to_owned();
|
||||
|
||||
let mut code_lang_array = format!("pub const LANGUAGES: [Language; {}] = [\n", languages.len());
|
||||
let mut code_country_array =
|
||||
format!("pub const COUNTRIES: [Country; {}] = [\n", countries.len());
|
||||
let mut code_lang_array = format!(
|
||||
"/// Array of all available languages\npub const LANGUAGES: [Language; {}] = [\n",
|
||||
languages.len()
|
||||
);
|
||||
let mut code_country_array = format!(
|
||||
"/// Array of all available countries\npub const COUNTRIES: [Country; {}] = [\n",
|
||||
countries.len()
|
||||
);
|
||||
|
||||
let mut code_lang_names = r#"impl Language {
|
||||
/// Get the native name of the language
|
||||
///
|
||||
/// Examples: "English (US)", "Deutsch", "中文 (简体)"
|
||||
pub fn name(&self) -> &str {
|
||||
match self {
|
||||
"#
|
||||
.to_owned();
|
||||
let mut code_country_names = r#"impl Country {
|
||||
/// Get the English name of the country
|
||||
///
|
||||
/// Examples: "United States", "Germany"
|
||||
pub fn name(&self) -> &str {
|
||||
match self {
|
||||
"#
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ mod response;
|
|||
mod video_details;
|
||||
|
||||
#[cfg(feature = "rss")]
|
||||
#[cfg_attr(docsrs, doc(cfg(feature = "rss")))]
|
||||
mod channel_rss;
|
||||
|
||||
use std::fmt::Debug;
|
||||
|
|
|
|||
|
|
@ -731,18 +731,6 @@ mod tests {
|
|||
assert!(player_data.expires_in_seconds > 10000);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn tmp() {
|
||||
let rp = RustyPipe::builder().strict().build();
|
||||
let player_data = rp
|
||||
.query()
|
||||
.player("tVWWp1PqDus", ClientType::Desktop)
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
dbg!(&player_data);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn t_cipher_to_url() {
|
||||
let signature_cipher = "s=w%3DAe%3DA6aDNQLkViKS7LOm9QtxZJHKwb53riq9qEFw-ecBWJCAiA%3DcEg0tn3dty9jEHszfzh4Ud__bg9CEHVx4ix-7dKsIPAhIQRw8JQ0qOA&sp=sig&url=https://rr5---sn-h0jelnez.googlevideo.com/videoplayback%3Fexpire%3D1659376413%26ei%3Dvb7nYvH5BMK8gAfBj7ToBQ%26ip%3D2003%253Ade%253Aaf06%253A6300%253Ac750%253A1b77%253Ac74a%253A80e3%26id%3Do-AB_BABwrXZJN428ZwDxq5ScPn2AbcGODnRlTVhCQ3mj2%26itag%3D251%26source%3Dyoutube%26requiressl%3Dyes%26mh%3DhH%26mm%3D31%252C26%26mn%3Dsn-h0jelnez%252Csn-4g5ednsl%26ms%3Dau%252Conr%26mv%3Dm%26mvi%3D5%26pl%3D37%26initcwndbps%3D1588750%26spc%3DlT-Khi831z8dTejFIRCvCEwx_6romtM%26vprv%3D1%26mime%3Daudio%252Fwebm%26ns%3Db_Mq_qlTFcSGlG9RpwpM9xQH%26gir%3Dyes%26clen%3D3781277%26dur%3D229.301%26lmt%3D1655510291473933%26mt%3D1659354538%26fvip%3D5%26keepalive%3Dyes%26fexp%3D24001373%252C24007246%26c%3DWEB%26rbqsm%3Dfr%26txp%3D4532434%26n%3Dd2g6G2hVqWIXxedQ%26sparams%3Dexpire%252Cei%252Cip%252Cid%252Citag%252Csource%252Crequiressl%252Cspc%252Cvprv%252Cmime%252Cns%252Cgir%252Cclen%252Cdur%252Clmt%26lsparams%3Dmh%252Cmm%252Cmn%252Cms%252Cmv%252Cmvi%252Cpl%252Cinitcwndbps%26lsig%3DAG3C_xAwRQIgCKCGJ1iu4wlaGXy3jcJyU3inh9dr1FIfqYOZEG_MdmACIQCbungkQYFk7EhD6K2YvLaHFMjKOFWjw001_tLb0lPDtg%253D%253D";
|
||||
|
|
|
|||
|
|
@ -1,8 +1,12 @@
|
|||
// This file is automatically generated. DO NOT EDIT.
|
||||
|
||||
//! Languages and countries
|
||||
|
||||
use std::{fmt::Display, str::FromStr};
|
||||
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
/// Available languages
|
||||
#[derive(Copy, Clone, Debug, Serialize, Deserialize, PartialEq, Eq, PartialOrd, Ord, Hash)]
|
||||
#[serde(rename_all = "lowercase")]
|
||||
pub enum Language {
|
||||
|
|
@ -184,6 +188,7 @@ pub enum Language {
|
|||
Zu,
|
||||
}
|
||||
|
||||
/// Available countries
|
||||
#[derive(Copy, Clone, Debug, Serialize, Deserialize, PartialEq, Eq, PartialOrd, Ord, Hash)]
|
||||
#[serde(rename_all = "UPPERCASE")]
|
||||
pub enum Country {
|
||||
|
|
@ -407,6 +412,7 @@ pub enum Country {
|
|||
Zw,
|
||||
}
|
||||
|
||||
/// Array of all available languages
|
||||
pub const LANGUAGES: [Language; 83] = [
|
||||
Language::Af,
|
||||
Language::Am,
|
||||
|
|
@ -493,6 +499,7 @@ pub const LANGUAGES: [Language; 83] = [
|
|||
Language::Zu,
|
||||
];
|
||||
|
||||
/// Array of all available countries
|
||||
pub const COUNTRIES: [Country; 109] = [
|
||||
Country::Ae,
|
||||
Country::Ar,
|
||||
|
|
@ -606,6 +613,9 @@ pub const COUNTRIES: [Country; 109] = [
|
|||
];
|
||||
|
||||
impl Language {
|
||||
/// Get the native name of the language
|
||||
///
|
||||
/// Examples: "English (US)", "Deutsch", "中文 (简体)"
|
||||
pub fn name(&self) -> &str {
|
||||
match self {
|
||||
Language::Af => "Afrikaans",
|
||||
|
|
@ -696,6 +706,9 @@ impl Language {
|
|||
}
|
||||
|
||||
impl Country {
|
||||
/// Get the English name of the country
|
||||
///
|
||||
/// Examples: "United States", "Germany"
|
||||
pub fn name(&self) -> &str {
|
||||
match self {
|
||||
Country::Ae => "United Arab Emirates",
|
||||
|
|
|
|||
|
|
@ -465,9 +465,9 @@ pub struct VideoDetails {
|
|||
///
|
||||
/// Information about the license:
|
||||
///
|
||||
/// https://www.youtube.com/t/creative_commons
|
||||
/// <https://www.youtube.com/t/creative_commons>
|
||||
///
|
||||
/// https://creativecommons.org/licenses/by/3.0/
|
||||
/// <https://creativecommons.org/licenses/by/3.0/>
|
||||
pub is_ccommons: bool,
|
||||
/// Chapters of the video
|
||||
pub chapters: Vec<Chapter>,
|
||||
|
|
|
|||
|
|
@ -1,3 +1,5 @@
|
|||
//! Data model for texts with links
|
||||
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
#[derive(Default, Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
|
||||
|
|
@ -41,6 +43,7 @@ pub trait ToPlaintext {
|
|||
|
||||
/// Trait for converting rich text to html.
|
||||
#[cfg(feature = "html")]
|
||||
#[cfg_attr(docsrs, doc(cfg(feature = "html")))]
|
||||
pub trait ToHtml {
|
||||
/// Convert rich text to html.
|
||||
fn to_html(&self) -> String {
|
||||
|
|
@ -93,6 +96,7 @@ impl ToPlaintext for TextComponent {
|
|||
}
|
||||
|
||||
#[cfg(feature = "html")]
|
||||
#[cfg_attr(docsrs, doc(cfg(feature = "html")))]
|
||||
impl ToHtml for TextComponent {
|
||||
fn to_html_yt_host(&self, yt_host: &str) -> String {
|
||||
match self {
|
||||
|
|
@ -127,6 +131,7 @@ impl ToPlaintext for RichText {
|
|||
}
|
||||
|
||||
#[cfg(feature = "html")]
|
||||
#[cfg_attr(docsrs, doc(cfg(feature = "html")))]
|
||||
impl ToHtml for RichText {
|
||||
fn to_html_yt_host(&self, yt_host: &str) -> String {
|
||||
self.0.iter().map(|c| c.to_html_yt_host(yt_host)).collect()
|
||||
|
|
|
|||
|
|
@ -1,3 +1,5 @@
|
|||
//! Filters for selecting audio/video streams
|
||||
|
||||
use std::collections::HashSet;
|
||||
|
||||
use super::{
|
||||
|
|
|
|||
Reference in a new issue