implement custom invidious instance support

This commit is contained in:
yggverse 2026-04-08 12:52:44 +03:00
parent 6afac2f85f
commit 22e3c301a2
4 changed files with 12 additions and 6 deletions

View file

@ -21,9 +21,11 @@ sleep = 1
# exec = "" # exec = ""
# stdout_contains = [""] # stdout_contains = [""]
# Supported values: youtube | invidious # Video instance provider
provider = "youtube" provider = "Youtube"
# provider = "Invidious"
# provider = { Invidious = "https://tux.rs" }
# Channels queue config # Channels queue config

View file

@ -7,7 +7,7 @@ use std::{collections::HashMap, path::PathBuf};
#[derive(Deserialize)] #[derive(Deserialize)]
pub enum Provider { pub enum Provider {
Youtube, Youtube,
Invidious, Invidious(Option<String>),
} }
#[derive(Deserialize)] #[derive(Deserialize)]

View file

@ -37,7 +37,7 @@ async fn main() {
let mut database = Database::new(&config.database).unwrap(); let mut database = Database::new(&config.database).unwrap();
let client = match config.provider { let client = match config.provider {
config::Provider::Youtube => Provider::youtube(), config::Provider::Youtube => Provider::youtube(),
config::Provider::Invidious => Provider::invidious(), config::Provider::Invidious(instance) => Provider::invidious(instance),
}; };
let channel_item_id_regex = Regex::new(r"^[A-z0-9_-]{11}$").unwrap(); let channel_item_id_regex = Regex::new(r"^[A-z0-9_-]{11}$").unwrap();

View file

@ -19,8 +19,12 @@ impl Provider {
pub fn youtube() -> Self { pub fn youtube() -> Self {
Self::Youtube(RustyPipe::new()) Self::Youtube(RustyPipe::new())
} }
pub fn invidious() -> Self { pub fn invidious(instance: Option<String>) -> Self {
Self::Invidious(ClientSync::default()) let mut client = ClientSync::default();
if let Some(i) = instance {
client.set_instance(i)
}
Self::Invidious(client)
} }
pub async fn videos(&self, channel_id: &str) -> Result<Vec<Video>> { pub async fn videos(&self, channel_id: &str) -> Result<Vec<Video>> {
let mut videos = Vec::new(); let mut videos = Vec::new();