diff options
author | metamuffin <metamuffin@disroot.org> | 2025-09-12 13:54:04 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2025-09-12 13:54:04 +0200 |
commit | e99bde7a00a161ff5dd91eaf1ce546a9d98cef05 (patch) | |
tree | 454c2de6fae85720064b35593158e612b2d9fefb /stream/src/webvtt.rs | |
parent | 356b3b8eebf22083c7d9655bb43e141dd0df732c (diff) | |
download | jellything-e99bde7a00a161ff5dd91eaf1ce546a9d98cef05.tar jellything-e99bde7a00a161ff5dd91eaf1ce546a9d98cef05.tar.bz2 jellything-e99bde7a00a161ff5dd91eaf1ce546a9d98cef05.tar.zst |
move stream types to own crate; removes a common dep
Diffstat (limited to 'stream/src/webvtt.rs')
-rw-r--r-- | stream/src/webvtt.rs | 150 |
1 files changed, 68 insertions, 82 deletions
diff --git a/stream/src/webvtt.rs b/stream/src/webvtt.rs index c0bc466..d99111e 100644 --- a/stream/src/webvtt.rs +++ b/stream/src/webvtt.rs @@ -3,91 +3,77 @@ which is licensed under the GNU Affero General Public License (version 3); see /COPYING. Copyright (C) 2025 metamuffin <metamuffin.org> */ -use anyhow::Result; -use jellycommon::{stream::StreamSpec, Node}; -use std::sync::Arc; -use tokio::io::DuplexStream; -pub async fn vtt_stream( - json: bool, - node: Arc<Node>, - spec: StreamSpec, - b: DuplexStream, -) -> Result<()> { - let _ = b; - let _ = spec; - let _ = node; - let _ = json; - // TODO cache +// async fn vtt_stream(json: bool, node: Arc<Node>, spec: StreamSpec, b: DuplexStream) -> Result<()> { +// TODO cache +// TODO should use fragments too? big films take too long... - // TODO should use fragments too? big films take too long... +// let tracki = *spec.track.first().ok_or(anyhow!("no track selected"))?; +// let local_track = local_tracks.first().ok_or(anyhow!("no tracks"))?.clone(); +// let track = &node.media.as_ref().unwrap().tracks[tracki]; +// let cp = local_track.codec_private.clone(); - // let tracki = *spec.track.first().ok_or(anyhow!("no track selected"))?; - // let local_track = local_tracks.first().ok_or(anyhow!("no tracks"))?.clone(); - // let track = &node.media.as_ref().unwrap().tracks[tracki]; - // let cp = local_track.codec_private.clone(); +// let subtitles = async_cache_memory( +// &[ +// "vtt", +// &format!( +// "{} {}", +// local_track.path.to_str().unwrap(), +// local_track.track +// ), +// ], +// move || async move { +// let blocks = tokio::task::spawn_blocking(move || { +// extract_track(CONF.media_path.clone(), local_track) +// }) +// .await??; +// let subtitles = parse_subtitles(&track.codec, cp, blocks)?; +// Ok(subtitles) +// }, +// )spec.track.first().ok_or(anyhow!("no track selected"))?; +// let local_track = local_tracks.first().ok_or(anyhow!("no tracks"))?.clone(); +// let track = &node.media.as_ref().unwrap().tracks[tracki]; +// let cp = local_track.codec_private.clone(); - // let subtitles = async_cache_memory( - // &[ - // "vtt", - // &format!( - // "{} {}", - // local_track.path.to_str().unwrap(), - // local_track.track - // ), - // ], - // move || async move { - // let blocks = tokio::task::spawn_blocking(move || { - // extract_track(CONF.media_path.clone(), local_track) - // }) - // .await??; - // let subtitles = parse_subtitles(&track.codec, cp, blocks)?; - // Ok(subtitles) - // }, - // )spec.track.first().ok_or(anyhow!("no track selected"))?; - // let local_track = local_tracks.first().ok_or(anyhow!("no tracks"))?.clone(); - // let track = &node.media.as_ref().unwrap().tracks[tracki]; - // let cp = local_track.codec_private.clone(); +// let subtitles = async_cache_memory( +// &[ +// "vtt", +// &format!( +// "{} {}", +// local_track.path.to_str().unwrap(), +// local_track.track +// ), +// ], +// move || async move { +// let blocks = tokio::task::spawn_blocking(move || { +// extract_track(CONF.media_path.clone(), local_track) +// }) +// .await??; +// let subtitles = parse_subtitles(&track.codec, cp, blocks)?; +// Ok(subtitles) +// }, +// ) +// .await?; - // let subtitles = async_cache_memory( - // &[ - // "vtt", - // &format!( - // "{} {}", - // local_track.path.to_str().unwrap(), - // local_track.track - // ), - // ], - // move || async move { - // let blocks = tokio::task::spawn_blocking(move || { - // extract_track(CONF.media_path.clone(), local_track) - // }) - // .await??; - // let subtitles = parse_subtitles(&track.codec, cp, blocks)?; - // Ok(subtitles) - // }, - // ) - // .await?; +// let output = if json { +// serde_json::to_string(subtitles.as_ref())? +// } else { +// write_webvtt(node.title.clone().unwrap_or_default(), subtitles.as_ref()) +// .context("writing webvtt")? +// }; +// tokio::task::spawn(async move { +// let _ = b.write_all(output.as_bytes()).await; +// }); +// .await?; - // let output = if json { - // serde_json::to_string(subtitles.as_ref())? - // } else { - // write_webvtt(node.title.clone().unwrap_or_default(), subtitles.as_ref()) - // .context("writing webvtt")? - // }; - // tokio::task::spawn(async move { - // let _ = b.write_all(output.as_bytes()).await; - // }); - // .await?; - - // let output = if json { - // serde_json::to_string(subtitles.as_ref())? - // } else { - // write_webvtt(node.title.clone().unwrap_or_default(), subtitles.as_ref()) - // .context("writing webvtt")? - // }; - // tokio::task::spawn(async move { - // let _ = b.write_all(output.as_bytes()).await; - // }); - Ok(()) -} +// let output = if json { +// serde_json::to_string(subtitles.as_ref())? +// } else { +// write_webvtt(node.title.clone().unwrap_or_default(), subtitles.as_ref()) +// .context("writing webvtt")? +// }; +// tokio::task::spawn(async move { +// let _ = b.write_all(output.as_bytes()).await; +// }); +// Ok(()) +// } |