rusty_dl 1.0.8

A crate for downloading youtube videos, twitter medias (videos, images, gif) from tweets and files on the web.
Documentation
use serde::{Deserialize, Serialize};

use super::AccessibilityDataWrapper;

#[derive(Debug, Deserialize, Serialize, Clone)]
pub struct Menu {
    #[serde(rename = "menuRenderer")]
    pub menu_renderer: MenuRenderer,
}

#[derive(Debug, Deserialize, Serialize, Clone)]
pub struct MenuRenderer {
    pub accessibility: AccessibilityDataWrapper,
    pub items: Vec<MenuItem>,
    #[serde(rename = "trackingParams")]
    pub tracking_params: String,
}

#[derive(Debug, Deserialize, Serialize, Clone)]
pub struct MenuItem {
    #[serde(rename = "menuServiceItemRenderer")]
    pub menu_service_item_renderer: MenuServiceItemRenderer,
}

#[derive(Debug, Deserialize, Serialize, Clone)]
pub struct MenuServiceItemRenderer {
    pub icon: Icon,
    #[serde(rename = "serviceEndpoint")]
    pub service_endpoint: ServiceEndpoint,
    pub text: Text,
    #[serde(rename = "trackingParams")]
    pub tracking_params: String,
    #[serde(rename = "hasSeparator")]
    pub has_separator: Option<bool>,
}

#[derive(Debug, Deserialize, Serialize, Clone)]
pub struct Icon {
    #[serde(rename = "iconType")]
    pub icon_type: String,
}

#[derive(Debug, Deserialize, Serialize, Clone)]
pub struct ServiceEndpoint {
    #[serde(rename = "clickTrackingParams")]
    pub click_tracking_params: String,
    #[serde(rename = "commandMetadata")]
    pub command_metadata: CommandMetadata,
    #[serde(rename = "signalServiceEndpoint")]
    pub signal_service_endpoint: Option<SignalServiceEndpoint>,
    #[serde(rename = "shareEntityServiceEndpoint")]
    pub share_entity_service_endpoint: Option<ShareEntityServiceEndpoint>,
}

#[derive(Debug, Deserialize, Serialize, Clone)]
pub struct CommandMetadata {
    #[serde(rename = "webCommandMetadata")]
    pub web_command_metadata: WebCommandMetadata,
}

#[derive(Debug, Deserialize, Serialize, Clone)]
pub struct WebCommandMetadata {
    #[serde(rename = "sendPost")]
    pub send_post: bool,
    #[serde(rename = "apiUrl")]
    pub api_url: Option<String>,
}

#[derive(Debug, Deserialize, Serialize, Clone)]
pub struct SignalServiceEndpoint {
    pub actions: Vec<Action>,
    pub signal: String,
}

#[derive(Debug, Deserialize, Serialize, Clone)]
pub struct Action {
    #[serde(rename = "addToPlaylistCommand")]
    pub add_to_playlist_command: AddToPlaylistCommand,
    #[serde(rename = "clickTrackingParams")]
    pub click_tracking_params: String,
}

#[derive(Debug, Deserialize, Serialize, Clone)]
pub struct AddToPlaylistCommand {
    #[serde(rename = "listType")]
    pub list_type: String,
    #[serde(rename = "onCreateListCommand")]
    pub on_create_list_command: OnCreateListCommand,
    #[serde(rename = "openMiniplayer")]
    pub open_miniplayer: bool,
    #[serde(rename = "videoId")]
    pub video_id: String,
    #[serde(rename = "videoIds")]
    pub video_ids: Vec<String>,
}

#[derive(Debug, Deserialize, Serialize, Clone)]
pub struct OnCreateListCommand {
    #[serde(rename = "clickTrackingParams")]
    pub click_tracking_params: String,
    #[serde(rename = "commandMetadata")]
    pub command_metadata: CommandMetadata,
    #[serde(rename = "createPlaylistServiceEndpoint")]
    pub create_playlist_service_endpoint: CreatePlaylistServiceEndpoint,
}

#[derive(Debug, Deserialize, Serialize, Clone)]
pub struct CreatePlaylistServiceEndpoint {
    pub params: String,
    #[serde(rename = "videoIds")]
    pub video_ids: Vec<String>,
}

#[derive(Debug, Deserialize, Serialize, Clone)]
pub struct ShareEntityServiceEndpoint {
    pub commands: Vec<ShareEntityCommand>,
    pub serialized_share_entity: Option<String>,
}

#[derive(Debug, Deserialize, Serialize, Clone)]
pub struct ShareEntityCommand {
    #[serde(rename = "clickTrackingParams")]
    pub click_tracking_params: String,
    pub open_popup_action: Option<OpenPopupAction>,
}

#[derive(Debug, Deserialize, Serialize, Clone)]
pub struct OpenPopupAction {
    #[serde(rename = "beReused")]
    pub be_reused: bool,
    pub popup: Popup,
    #[serde(rename = "popupType")]
    pub popup_type: String,
}

#[derive(Debug, Deserialize, Serialize, Clone)]
pub struct Popup {
    #[serde(rename = "popupType")]
    pub unified_share_panel_renderer: UnifiedSharePanelRenderer,
}

#[derive(Debug, Deserialize, Serialize, Clone)]
pub struct UnifiedSharePanelRenderer {
    #[serde(rename = "showLoadingSpinner")]
    pub show_loading_spinner: bool,
    #[serde(rename = "trackingParams")]
    pub tracking_params: String,
}

#[derive(Debug, Deserialize, Serialize, Clone)]
pub struct Text {
    pub runs: Vec<Run>,
}

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