use serde::{Deserialize, Serialize};
use serde_json::Value;
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct SerpApiYoutubeVideoInfoTaskAdvanced {
pub video_id: Option<String>,
pub se_domain: Option<String>,
pub location_code: Option<i32>,
pub language_code: Option<String>,
pub check_url: Option<String>,
pub datetime: Option<String>,
pub spell: Option<Value>,
pub item_types: Option<Vec<String>>,
pub items_count: Option<i64>,
pub items: Option<Vec<SerpApiElementYoutubeVideoInfo>>,
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct SerpApiElementYoutubeVideoInfo {
#[serde(rename = "type")]
pub type_of_element: Option<String>,
pub rank_group: Option<i64>,
pub rank_absolute: Option<i64>,
pub video_id: Option<String>,
pub title: Option<String>,
pub url: Option<String>,
pub description: Option<String>,
pub thumbnail_url: Option<String>,
pub category: Option<String>,
pub channel_id: Option<String>,
pub channel_name: Option<String>,
pub channel_url: Option<String>,
pub channel_logo: Option<String>,
pub channel_subscribers_count: Option<SerpApiYoutubeSubscribersCount>,
pub views_count: Option<i64>,
pub likes_count: Option<i64>,
pub comments_count: Option<i64>,
pub publication_date: Option<String>,
pub timestamp: Option<String>,
pub is_live: Option<bool>,
pub is_embeddable: Option<bool>,
pub duration_time: Option<String>,
pub duration_time_seconds: Option<i64>,
pub keywords: Option<Vec<String>>,
pub subtitles: Option<Vec<SerpApiYoutubeVideoSubtitleTrack>>,
pub streaming_quality: Option<Vec<SerpApiYoutubeStreamingQuality>>,
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct SerpApiYoutubeSubscribersCount {
pub displayed_count: Option<String>,
pub count: Option<i64>,
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct SerpApiYoutubeVideoSubtitleTrack {
pub language: Option<String>,
pub is_translatable: Option<bool>,
pub is_auto_generated: Option<bool>,
}
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct SerpApiYoutubeStreamingQuality {
pub label: Option<String>,
pub width: Option<i64>,
pub height: Option<i64>,
pub bitrate: Option<i64>,
pub mime_type: Option<String>,
pub fps: Option<i64>,
}