aboutsummaryrefslogtreecommitdiff
path: root/stream/src/webvtt.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2025-09-12 13:54:04 +0200
committermetamuffin <metamuffin@disroot.org>2025-09-12 13:54:04 +0200
commite99bde7a00a161ff5dd91eaf1ce546a9d98cef05 (patch)
tree454c2de6fae85720064b35593158e612b2d9fefb /stream/src/webvtt.rs
parent356b3b8eebf22083c7d9655bb43e141dd0df732c (diff)
downloadjellything-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.rs150
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(())
+// }