aboutsummaryrefslogtreecommitdiff
path: root/import/src/infojson.rs
diff options
context:
space:
mode:
Diffstat (limited to 'import/src/infojson.rs')
-rw-r--r--import/src/infojson.rs146
1 files changed, 0 insertions, 146 deletions
diff --git a/import/src/infojson.rs b/import/src/infojson.rs
deleted file mode 100644
index ada6c3a..0000000
--- a/import/src/infojson.rs
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- This file is part of jellything (https://codeberg.org/metamuffin/jellything)
- which is licensed under the GNU Affero General Public License (version 3); see /COPYING.
- Copyright (C) 2025 metamuffin <metamuffin.org>
-*/
-use anyhow::Context;
-use jellycommon::chrono::{format::Parsed, Utc};
-use serde::{Deserialize, Serialize};
-use std::collections::HashMap;
-
-#[derive(Debug, Clone, Serialize, Deserialize)]
-pub struct YVideo {
- pub id: String,
- pub title: String,
- pub alt_title: Option<String>,
- pub formats: Option<Vec<YFormat>>,
- pub thumbnails: Option<Vec<YThumbnail>>,
- pub thumbnail: Option<String>,
- pub description: Option<String>,
- pub channel_id: Option<String>,
- pub duration: Option<f64>,
- pub view_count: Option<usize>,
- pub average_rating: Option<String>,
- pub age_limit: Option<usize>,
- pub webpage_url: String,
- pub categories: Option<Vec<String>>,
- pub tags: Option<Vec<String>>,
- pub playable_in_embed: Option<bool>,
- pub aspect_ratio: Option<f32>,
- pub width: Option<i32>,
- pub height: Option<i32>,
- pub automatic_captions: Option<HashMap<String, Vec<YCaption>>>,
- pub comment_count: Option<usize>,
- pub chapters: Option<Vec<YChapter>>,
- pub heatmap: Option<Vec<YHeatmapSample>>,
- pub like_count: Option<usize>,
- pub channel: Option<String>,
- pub channel_follower_count: Option<usize>,
- pub channel_is_verified: Option<bool>,
- pub uploader: Option<String>,
- pub uploader_id: Option<String>,
- pub uploader_url: Option<String>,
- pub upload_date: Option<String>,
- pub availability: Option<String>, // "public" | "private" | "unlisted",
- pub original_url: Option<String>,
- pub webpage_url_basename: String,
- pub webpage_url_domain: String,
- pub extractor: String,
- pub extractor_key: String,
- pub playlist_count: Option<usize>,
- pub playlist: Option<String>,
- pub playlist_id: Option<String>,
- pub playlist_title: Option<String>,
- pub playlist_uploader: Option<String>,
- pub playlist_uploader_id: Option<String>,
- pub n_entries: Option<usize>,
- pub playlist_index: Option<usize>,
- pub display_id: Option<String>,
- pub fulltitle: Option<String>,
- pub duration_string: Option<String>,
- pub is_live: Option<bool>,
- pub was_live: Option<bool>,
- pub epoch: usize,
-}
-
-#[derive(Debug, Clone, Serialize, Deserialize)]
-pub struct YCaption {
- pub url: Option<String>,
- pub ext: String, //"vtt" | "json3" | "srv1" | "srv2" | "srv3" | "ttml",
- pub protocol: Option<String>,
- pub name: Option<String>,
-}
-
-#[derive(Debug, Clone, Serialize, Deserialize)]
-pub struct YFormat {
- pub format_id: String,
- pub format_note: Option<String>,
- pub ext: String,
- pub protocol: String,
- pub acodec: Option<String>,
- pub vcodec: Option<String>,
- pub url: Option<String>,
- pub width: Option<u32>,
- pub height: Option<u32>,
- pub fps: Option<f64>,
- pub columns: Option<u32>,
- pub fragments: Option<Vec<YFragment>>,
- pub resolution: Option<String>,
- pub dynamic_range: Option<String>,
- pub aspect_ratio: Option<f64>,
- pub http_headers: HashMap<String, String>,
- pub audio_ext: String,
- pub video_ext: String,
- pub vbr: Option<f64>,
- pub abr: Option<f64>,
- pub format: String,
-}
-
-#[derive(Debug, Clone, Serialize, Deserialize)]
-pub struct YFragment {
- pub url: Option<String>,
- pub duration: Option<f64>,
-}
-
-#[derive(Debug, Clone, Serialize, Deserialize)]
-pub struct YThumbnail {
- pub url: String,
- pub preference: Option<i32>,
- pub id: String,
- pub height: Option<u32>,
- pub width: Option<u32>,
- pub resolution: Option<String>,
-}
-
-#[derive(Debug, Clone, Serialize, Deserialize)]
-pub struct YChapter {
- pub start_time: f64,
- pub end_time: f64,
- pub title: String,
-}
-
-#[derive(Debug, Clone, Serialize, Deserialize)]
-pub struct YHeatmapSample {
- pub start_time: f64,
- pub end_time: f64,
- pub value: f64,
-}
-
-pub fn parse_upload_date(d: &str) -> anyhow::Result<i64> {
- let (year, month, day) = (&d[0..4], &d[4..6], &d[6..8]);
- let (year, month, day) = (
- year.parse().context("parsing year")?,
- month.parse().context("parsing month")?,
- day.parse().context("parsing day")?,
- );
-
- let mut p = Parsed::new();
- p.year = Some(year);
- p.month = Some(month);
- p.day = Some(day);
- p.hour_div_12 = Some(0);
- p.hour_mod_12 = Some(0);
- p.minute = Some(0);
- p.second = Some(0);
- Ok(p.to_datetime_with_timezone(&Utc)?.timestamp_millis())
-}