Skip to main content

tail_fin_youtube/
types.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Serialize, Deserialize)]
4pub struct Video {
5    pub id: String,
6    pub title: String,
7    pub channel: String,
8    pub channel_id: String,
9    pub views: Option<String>,
10    pub likes: Option<String>,
11    pub duration: Option<String>,
12    pub published_at: Option<String>,
13    pub description: Option<String>,
14    pub url: String,
15}
16
17#[derive(Debug, Clone, Serialize, Deserialize)]
18pub struct Channel {
19    pub id: String,
20    pub name: String,
21    pub handle: Option<String>,
22    pub subscribers: Option<String>,
23    pub video_count: Option<String>,
24    pub description: Option<String>,
25    pub url: String,
26}
27
28#[derive(Debug, Clone, Serialize, Deserialize)]
29pub struct Comment {
30    pub author: String,
31    pub text: String,
32    pub likes: Option<String>,
33    pub published_at: Option<String>,
34    pub reply_count: Option<u64>,
35}
36
37#[derive(Debug, Clone, Serialize, Deserialize)]
38pub struct TranscriptSegment {
39    pub text: String,
40    pub start_ms: u64,
41    pub duration_ms: u64,
42}
43
44/// InnerTube bootstrap data extracted from the page.
45#[derive(Debug, Clone)]
46pub struct InnerTubeContext {
47    pub api_key: String,
48    pub context: serde_json::Value,
49}