diff options
-rw-r--r-- | crates/yt_dlp/src/wrapper/info_json.rs | 253 |
1 files changed, 253 insertions, 0 deletions
diff --git a/crates/yt_dlp/src/wrapper/info_json.rs b/crates/yt_dlp/src/wrapper/info_json.rs index bffc133..9d63ee6 100644 --- a/crates/yt_dlp/src/wrapper/info_json.rs +++ b/crates/yt_dlp/src/wrapper/info_json.rs @@ -29,132 +29,385 @@ type ExtractorKey = String; #[derive(Debug, Deserialize, Serialize, PartialEq)] #[serde(deny_unknown_fields)] pub struct InfoJson { + #[serde(skip_serializing_if = "Option::is_none")] pub __files_to_move: Option<FilesToMove>, + + #[serde(skip_serializing_if = "Option::is_none")] pub __last_playlist_index: Option<u32>, + + #[serde(skip_serializing_if = "Option::is_none")] pub __post_extractor: Option<String>, + + #[serde(skip_serializing_if = "Option::is_none")] pub __x_forwarded_for_ip: Option<String>, + + #[serde(skip_serializing_if = "Option::is_none")] pub _filename: Option<PathBuf>, + + #[serde(skip_serializing_if = "Option::is_none")] pub _format_sort_fields: Option<Vec<String>>, + + #[serde(skip_serializing_if = "Option::is_none")] pub _has_drm: Option<Todo>, + + #[serde(skip_serializing_if = "Option::is_none")] pub _type: Option<InfoType>, + + #[serde(skip_serializing_if = "Option::is_none")] pub _version: Option<Version>, + + #[serde(skip_serializing_if = "Option::is_none")] pub abr: Option<f64>, + + #[serde(skip_serializing_if = "Option::is_none")] pub acodec: Option<String>, + + #[serde(skip_serializing_if = "Option::is_none")] pub age_limit: Option<u32>, + + #[serde(skip_serializing_if = "Option::is_none")] pub artists: Option<Todo>, + + #[serde(skip_serializing_if = "Option::is_none")] pub aspect_ratio: Option<f64>, + + #[serde(skip_serializing_if = "Option::is_none")] pub asr: Option<u32>, + + #[serde(skip_serializing_if = "Option::is_none")] pub audio_channels: Option<u32>, + + #[serde(skip_serializing_if = "Option::is_none")] pub audio_ext: Option<String>, + + #[serde(skip_serializing_if = "Option::is_none")] pub automatic_captions: Option<HashMap<String, Vec<Caption>>>, + + #[serde(skip_serializing_if = "Option::is_none")] pub availability: Option<String>, + + #[serde(skip_serializing_if = "Option::is_none")] pub average_rating: Option<String>, + + #[serde(skip_serializing_if = "Option::is_none")] pub categories: Option<Vec<String>>, + + #[serde(skip_serializing_if = "Option::is_none")] pub channel: Option<String>, + + #[serde(skip_serializing_if = "Option::is_none")] pub channel_follower_count: Option<u32>, + + #[serde(skip_serializing_if = "Option::is_none")] pub channel_id: Option<String>, + + #[serde(skip_serializing_if = "Option::is_none")] pub channel_is_verified: Option<bool>, + + #[serde(skip_serializing_if = "Option::is_none")] pub channel_url: Option<String>, + + #[serde(skip_serializing_if = "Option::is_none")] pub chapters: Option<Vec<Chapter>>, + + #[serde(skip_serializing_if = "Option::is_none")] pub comment_count: Option<u32>, + + #[serde(skip_serializing_if = "Option::is_none")] pub comments: Option<Vec<Comment>>, + + #[serde(skip_serializing_if = "Option::is_none")] pub concurrent_view_count: Option<u32>, + + #[serde(skip_serializing_if = "Option::is_none")] pub container: Option<Todo>, + + #[serde(skip_serializing_if = "Option::is_none")] pub description: Option<String>, + + #[serde(skip_serializing_if = "Option::is_none")] pub direct: Option<bool>, + + #[serde(skip_serializing_if = "Option::is_none")] pub display_id: Option<String>, + + #[serde(skip_serializing_if = "Option::is_none")] pub downloader_options: Option<DownloaderOptions>, + + #[serde(skip_serializing_if = "Option::is_none")] pub duration: Option<f64>, + + #[serde(skip_serializing_if = "Option::is_none")] pub duration_string: Option<String>, + + #[serde(skip_serializing_if = "Option::is_none")] pub dynamic_range: Option<String>, + + #[serde(skip_serializing_if = "Option::is_none")] pub entries: Option<Vec<InfoJson>>, + + #[serde(skip_serializing_if = "Option::is_none")] pub episode: Option<String>, + + #[serde(skip_serializing_if = "Option::is_none")] pub episode_number: Option<u32>, + + #[serde(skip_serializing_if = "Option::is_none")] pub epoch: Option<u32>, + + #[serde(skip_serializing_if = "Option::is_none")] pub ext: Option<String>, + + #[serde(skip_serializing_if = "Option::is_none")] pub extractor: Option<Extractor>, + + #[serde(skip_serializing_if = "Option::is_none")] pub extractor_key: Option<ExtractorKey>, + + #[serde(skip_serializing_if = "Option::is_none")] pub filename: Option<PathBuf>, + + #[serde(skip_serializing_if = "Option::is_none")] pub filesize: Option<u64>, + + #[serde(skip_serializing_if = "Option::is_none")] pub filesize_approx: Option<u64>, + + #[serde(skip_serializing_if = "Option::is_none")] pub format: Option<String>, + + #[serde(skip_serializing_if = "Option::is_none")] pub format_id: Option<String>, + + #[serde(skip_serializing_if = "Option::is_none")] pub format_index: Option<u32>, + + #[serde(skip_serializing_if = "Option::is_none")] pub format_note: Option<String>, + + #[serde(skip_serializing_if = "Option::is_none")] pub formats: Option<Vec<Format>>, + + #[serde(skip_serializing_if = "Option::is_none")] pub fps: Option<f64>, + + #[serde(skip_serializing_if = "Option::is_none")] pub fulltitle: Option<String>, + + #[serde(skip_serializing_if = "Option::is_none")] pub genre: Option<String>, + + #[serde(skip_serializing_if = "Option::is_none")] pub genres: Option<Vec<String>>, + + #[serde(skip_serializing_if = "Option::is_none")] pub has_drm: Option<bool>, + + #[serde(skip_serializing_if = "Option::is_none")] pub heatmap: Option<Vec<HeatMapEntry>>, + + #[serde(skip_serializing_if = "Option::is_none")] pub height: Option<u32>, + + #[serde(skip_serializing_if = "Option::is_none")] pub hls_aes: Option<Todo>, + + #[serde(skip_serializing_if = "Option::is_none")] pub http_headers: Option<HttpHeader>, + + #[serde(skip_serializing_if = "Option::is_none")] pub id: Option<String>, + + #[serde(skip_serializing_if = "Option::is_none")] pub ie_key: Option<ExtractorKey>, + + #[serde(skip_serializing_if = "Option::is_none")] pub is_live: Option<bool>, + + #[serde(skip_serializing_if = "Option::is_none")] pub language: Option<String>, + + #[serde(skip_serializing_if = "Option::is_none")] pub language_preference: Option<i32>, + + #[serde(skip_serializing_if = "Option::is_none")] pub license: Option<Todo>, + + #[serde(skip_serializing_if = "Option::is_none")] pub like_count: Option<u32>, + + #[serde(skip_serializing_if = "Option::is_none")] pub live_status: Option<String>, + + #[serde(skip_serializing_if = "Option::is_none")] pub location: Option<Todo>, + + #[serde(skip_serializing_if = "Option::is_none")] pub manifest_url: Option<Url>, + + #[serde(skip_serializing_if = "Option::is_none")] pub media_type: Option<Todo>, + + #[serde(skip_serializing_if = "Option::is_none")] pub modified_date: Option<String>, + + #[serde(skip_serializing_if = "Option::is_none")] pub n_entries: Option<u32>, + + #[serde(skip_serializing_if = "Option::is_none")] pub original_url: Option<String>, + + #[serde(skip_serializing_if = "Option::is_none")] pub playable_in_embed: Option<bool>, + + #[serde(skip_serializing_if = "Option::is_none")] pub playlist: Option<Todo>, + + #[serde(skip_serializing_if = "Option::is_none")] pub playlist_autonumber: Option<u32>, + + #[serde(skip_serializing_if = "Option::is_none")] pub playlist_channel: Option<Todo>, + + #[serde(skip_serializing_if = "Option::is_none")] pub playlist_channel_id: Option<Todo>, + + #[serde(skip_serializing_if = "Option::is_none")] pub playlist_count: Option<u32>, + + #[serde(skip_serializing_if = "Option::is_none")] pub playlist_id: Option<Todo>, + + #[serde(skip_serializing_if = "Option::is_none")] pub playlist_index: Option<u64>, + + #[serde(skip_serializing_if = "Option::is_none")] pub playlist_title: Option<Todo>, + + #[serde(skip_serializing_if = "Option::is_none")] pub playlist_uploader: Option<Todo>, + + #[serde(skip_serializing_if = "Option::is_none")] pub playlist_uploader_id: Option<Todo>, + + #[serde(skip_serializing_if = "Option::is_none")] pub playlist_webpage_url: Option<Url>, + + #[serde(skip_serializing_if = "Option::is_none")] pub preference: Option<Todo>, + + #[serde(skip_serializing_if = "Option::is_none")] pub protocol: Option<String>, + + #[serde(skip_serializing_if = "Option::is_none")] pub quality: Option<f64>, + + #[serde(skip_serializing_if = "Option::is_none")] pub release_date: Option<String>, + + #[serde(skip_serializing_if = "Option::is_none")] pub release_timestamp: Option<u64>, + + #[serde(skip_serializing_if = "Option::is_none")] pub release_year: Option<u32>, + + #[serde(skip_serializing_if = "Option::is_none")] pub repost_count: Option<u32>, + + #[serde(skip_serializing_if = "Option::is_none")] pub requested_downloads: Option<Vec<RequestedDownloads>>, + + #[serde(skip_serializing_if = "Option::is_none")] pub requested_entries: Option<Vec<u32>>, + + #[serde(skip_serializing_if = "Option::is_none")] pub requested_formats: Option<Vec<Format>>, + + #[serde(skip_serializing_if = "Option::is_none")] pub requested_subtitles: Option<HashMap<String, Subtitle>>, + + #[serde(skip_serializing_if = "Option::is_none")] pub resolution: Option<String>, + + #[serde(skip_serializing_if = "Option::is_none")] pub season: Option<String>, + + #[serde(skip_serializing_if = "Option::is_none")] pub season_number: Option<u32>, + + #[serde(skip_serializing_if = "Option::is_none")] pub series: Option<String>, + + #[serde(skip_serializing_if = "Option::is_none")] pub source_preference: Option<i32>, + + #[serde(skip_serializing_if = "Option::is_none")] pub sponsorblock_chapters: Option<Vec<SponsorblockChapter>>, + + #[serde(skip_serializing_if = "Option::is_none")] pub stretched_ratio: Option<Todo>, + + #[serde(skip_serializing_if = "Option::is_none")] pub subtitles: Option<HashMap<String, Vec<Caption>>>, + + #[serde(skip_serializing_if = "Option::is_none")] pub tags: Option<Vec<String>>, + + #[serde(skip_serializing_if = "Option::is_none")] pub tbr: Option<f64>, + + #[serde(skip_serializing_if = "Option::is_none")] pub thumbnail: Option<Url>, + + #[serde(skip_serializing_if = "Option::is_none")] pub thumbnails: Option<Vec<ThumbNail>>, + + #[serde(skip_serializing_if = "Option::is_none")] pub timestamp: Option<f64>, + + #[serde(skip_serializing_if = "Option::is_none")] pub title: Option<String>, + + #[serde(skip_serializing_if = "Option::is_none")] pub upload_date: Option<String>, + + #[serde(skip_serializing_if = "Option::is_none")] pub uploader: Option<String>, + + #[serde(skip_serializing_if = "Option::is_none")] pub uploader_id: Option<String>, + + #[serde(skip_serializing_if = "Option::is_none")] pub uploader_url: Option<String>, + + #[serde(skip_serializing_if = "Option::is_none")] pub url: Option<Url>, + + #[serde(skip_serializing_if = "Option::is_none")] pub vbr: Option<f64>, + + #[serde(skip_serializing_if = "Option::is_none")] pub vcodec: Option<String>, + + #[serde(skip_serializing_if = "Option::is_none")] pub video_ext: Option<String>, + + #[serde(skip_serializing_if = "Option::is_none")] pub view_count: Option<u32>, + + #[serde(skip_serializing_if = "Option::is_none")] pub was_live: Option<bool>, + + #[serde(skip_serializing_if = "Option::is_none")] pub webpage_url: Option<Url>, + + #[serde(skip_serializing_if = "Option::is_none")] pub webpage_url_basename: Option<String>, + + #[serde(skip_serializing_if = "Option::is_none")] pub webpage_url_domain: Option<String>, + + #[serde(skip_serializing_if = "Option::is_none")] pub width: Option<u32>, } |