diff --git a/Cargo.lock b/Cargo.lock index ca0d378..80d40e9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2727,20 +2727,6 @@ dependencies = [ "icu_properties", ] -[[package]] -name = "image" -version = "0.24.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5690139d2f55868e080017335e4b94cb7414274c74f1669c84fb5feba2c9f69d" -dependencies = [ - "bytemuck", - "byteorder", - "color_quant", - "jpeg-decoder", - "num-traits", - "png 0.17.16", -] - [[package]] name = "image" version = "0.25.10" @@ -2755,7 +2741,7 @@ dependencies = [ "image-webp", "moxcms", "num-traits", - "png 0.18.1", + "png", "qoi", "ravif 0.13.0", "rayon", @@ -2772,7 +2758,7 @@ dependencies = [ "anyhow", "async-trait", "domain", - "image 0.25.10", + "image", "image-storage", "object_store", "ravif 0.11.20", @@ -2817,7 +2803,7 @@ dependencies = [ "ab_glyph", "approx", "getrandom 0.2.17", - "image 0.25.10", + "image", "itertools 0.12.1", "nalgebra", "num", @@ -3019,12 +3005,6 @@ dependencies = [ "libc", ] -[[package]] -name = "jpeg-decoder" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00810f1d8b74be64b13dbf3db89ac67740615d6c891f0e7b6179326533011a07" - [[package]] name = "js-sys" version = "0.3.99" @@ -4040,48 +4020,6 @@ dependencies = [ "serde_json", ] -[[package]] -name = "plotters" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aeb6f403d7a4911efb1e33402027fc44f29b5bf6def3effcc22d7bb75f2b747" -dependencies = [ - "num-traits", - "plotters-backend", - "plotters-bitmap", - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "plotters-backend" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df42e13c12958a16b3f7f4386b9ab1f3e7933914ecea48da7139435263a4172a" - -[[package]] -name = "plotters-bitmap" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72ce181e3f6bf82d6c1dc569103ca7b1bd964c60ba03d7e6cdfbb3e3eb7f7405" -dependencies = [ - "image 0.24.9", - "plotters-backend", -] - -[[package]] -name = "png" -version = "0.17.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82151a2fc869e011c153adc57cf2789ccb8d9906ce52c0b39a6b5697749d7526" -dependencies = [ - "bitflags 1.3.2", - "crc32fast", - "fdeflate", - "flate2", - "miniz_oxide", -] - [[package]] name = "png" version = "0.18.1" @@ -6947,7 +6885,7 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c071456adef4aca59bf6a583c46b90ff5eb0b4f758fc347cea81290288f37ce1" dependencies = [ - "image 0.25.10", + "image", "libwebp-sys", ] @@ -7556,6 +7494,7 @@ dependencies = [ "tokio", "tracing", "tracing-subscriber", + "wrapup-renderer", ] [[package]] @@ -7565,9 +7504,8 @@ dependencies = [ "ab_glyph", "async-trait", "domain", - "image 0.25.10", + "image", "imageproc", - "plotters", "tempfile", "tokio", "tracing", diff --git a/crates/adapters/postgres/src/wrapup.rs b/crates/adapters/postgres/src/wrapup.rs index 470c58f..36e55ad 100644 --- a/crates/adapters/postgres/src/wrapup.rs +++ b/crates/adapters/postgres/src/wrapup.rs @@ -204,13 +204,12 @@ impl WrapUpRepository for PostgresWrapUpRepository { &self, before: chrono::NaiveDateTime, ) -> Result { - let result = sqlx::query( - "DELETE FROM wrap_up_records WHERE status = 'failed' AND created_at < $1", - ) - .bind(before) - .execute(&self.pool) - .await - .map_err(map_err)?; + let result = + sqlx::query("DELETE FROM wrap_up_records WHERE status = 'failed' AND created_at < $1") + .bind(before) + .execute(&self.pool) + .await + .map_err(map_err)?; Ok(result.rows_affected()) } } diff --git a/crates/adapters/sqlite/src/wrapup.rs b/crates/adapters/sqlite/src/wrapup.rs index a4101dc..0a386f3 100644 --- a/crates/adapters/sqlite/src/wrapup.rs +++ b/crates/adapters/sqlite/src/wrapup.rs @@ -215,13 +215,12 @@ impl WrapUpRepository for SqliteWrapUpRepository { before: chrono::NaiveDateTime, ) -> Result { let before_str = before.format("%Y-%m-%dT%H:%M:%SZ").to_string(); - let result = sqlx::query( - "DELETE FROM wrap_up_records WHERE status = 'failed' AND created_at < ?", - ) - .bind(&before_str) - .execute(&self.pool) - .await - .map_err(map_err)?; + let result = + sqlx::query("DELETE FROM wrap_up_records WHERE status = 'failed' AND created_at < ?") + .bind(&before_str) + .execute(&self.pool) + .await + .map_err(map_err)?; Ok(result.rows_affected()) } } diff --git a/crates/adapters/wrapup-renderer/src/lib.rs b/crates/adapters/wrapup-renderer/src/lib.rs index 743ed17..be31596 100644 --- a/crates/adapters/wrapup-renderer/src/lib.rs +++ b/crates/adapters/wrapup-renderer/src/lib.rs @@ -35,7 +35,12 @@ impl WrapUpVideoRenderer for FfmpegWrapUpRenderer { slide_pngs.push(renderer.render_hero(report, width, height)?); slide_pngs.push(renderer.render_ratings(report, width, height)?); if !report.top_directors.is_empty() { - slide_pngs.push(renderer.render_directors(report, &assets.cast_images, width, height)?); + slide_pngs.push(renderer.render_directors( + report, + &assets.cast_images, + width, + height, + )?); } if !report.top_actors.is_empty() { slide_pngs.push(renderer.render_actors(report, &assets.cast_images, width, height)?); @@ -43,7 +48,12 @@ impl WrapUpVideoRenderer for FfmpegWrapUpRenderer { if !report.top_genres.is_empty() { slide_pngs.push(renderer.render_genres(report, width, height)?); } - slide_pngs.push(renderer.render_highlights(report, &assets.poster_images, width, height)?); + slide_pngs.push(renderer.render_highlights( + report, + &assets.poster_images, + width, + height, + )?); if !assets.poster_images.is_empty() { slide_pngs.push(renderer.render_mosaic(&assets.poster_images, width, height)?); } else { diff --git a/crates/application/src/wrapup/handle_requested.rs b/crates/application/src/wrapup/handle_requested.rs index 6ea2500..1f34608 100644 --- a/crates/application/src/wrapup/handle_requested.rs +++ b/crates/application/src/wrapup/handle_requested.rs @@ -16,7 +16,11 @@ pub async fn execute( if let Ok(Some(rec)) = ctx.repos.wrapup_repo.get_by_id(&wrapup_id).await && (rec.status == WrapUpStatus::Ready || rec.status == WrapUpStatus::Generating) { - tracing::debug!("wrapup {} already {:?}, skipping", wrapup_id.value(), rec.status); + tracing::debug!( + "wrapup {} already {:?}, skipping", + wrapup_id.value(), + rec.status + ); return Ok(()); } diff --git a/crates/domain/src/testing.rs b/crates/domain/src/testing.rs index 54f28ee..c47abb1 100644 --- a/crates/domain/src/testing.rs +++ b/crates/domain/src/testing.rs @@ -1218,10 +1218,7 @@ impl WrapUpRepository for PanicWrapUpRepository { async fn delete(&self, _: &WrapUpId) -> Result<(), DomainError> { panic!("PanicWrapUpRepository called") } - async fn delete_failed_older_than( - &self, - _: chrono::NaiveDateTime, - ) -> Result { + async fn delete_failed_older_than(&self, _: chrono::NaiveDateTime) -> Result { panic!("PanicWrapUpRepository called") } } diff --git a/crates/presentation/src/tests/extractors.rs b/crates/presentation/src/tests/extractors.rs index 3eeb992..2a1601a 100644 --- a/crates/presentation/src/tests/extractors.rs +++ b/crates/presentation/src/tests/extractors.rs @@ -632,10 +632,7 @@ impl domain::ports::WrapUpRepository for Panic { async fn delete(&self, _: &domain::value_objects::WrapUpId) -> Result<(), DomainError> { panic!() } - async fn delete_failed_older_than( - &self, - _: chrono::NaiveDateTime, - ) -> Result { + async fn delete_failed_older_than(&self, _: chrono::NaiveDateTime) -> Result { panic!() } } diff --git a/crates/worker/src/main.rs b/crates/worker/src/main.rs index c02f5e8..0b75d0a 100644 --- a/crates/worker/src/main.rs +++ b/crates/worker/src/main.rs @@ -106,9 +106,14 @@ async fn main() -> anyhow::Result<()> { document_parser: Arc::new(ImporterDocumentParser) as Arc, video_renderer: { let ffmpeg = &app_config.wrapup.ffmpeg_path; - if std::process::Command::new(ffmpeg).arg("-version").output().is_ok() { + if std::process::Command::new(ffmpeg) + .arg("-version") + .output() + .is_ok() + { tracing::info!("wrapup video renderer enabled (ffmpeg={ffmpeg})"); - Some(Arc::new(wrapup_renderer::FfmpegWrapUpRenderer::new()) as Arc) + Some(Arc::new(wrapup_renderer::FfmpegWrapUpRenderer::new()) + as Arc) } else { tracing::info!("wrapup video renderer disabled (ffmpeg not found)"); None diff --git a/static/wrapups/bg1.jpg b/static/wrapups/bg1.jpg new file mode 100644 index 0000000..2150768 Binary files /dev/null and b/static/wrapups/bg1.jpg differ diff --git a/static/wrapups/bg10.jpg b/static/wrapups/bg10.jpg new file mode 100644 index 0000000..982fdbd Binary files /dev/null and b/static/wrapups/bg10.jpg differ diff --git a/static/wrapups/bg2.png b/static/wrapups/bg2.png new file mode 100644 index 0000000..be5a580 Binary files /dev/null and b/static/wrapups/bg2.png differ diff --git a/static/wrapups/bg3.jpg b/static/wrapups/bg3.jpg new file mode 100644 index 0000000..4a9c48a Binary files /dev/null and b/static/wrapups/bg3.jpg differ diff --git a/static/wrapups/bg4.jpg b/static/wrapups/bg4.jpg new file mode 100644 index 0000000..0035d56 Binary files /dev/null and b/static/wrapups/bg4.jpg differ diff --git a/static/wrapups/bg5.jpg b/static/wrapups/bg5.jpg new file mode 100644 index 0000000..955efce Binary files /dev/null and b/static/wrapups/bg5.jpg differ diff --git a/static/wrapups/bg6.jpg b/static/wrapups/bg6.jpg new file mode 100644 index 0000000..d2e867a Binary files /dev/null and b/static/wrapups/bg6.jpg differ diff --git a/static/wrapups/bg8.jpg b/static/wrapups/bg8.jpg new file mode 100644 index 0000000..dcd8a58 Binary files /dev/null and b/static/wrapups/bg8.jpg differ diff --git a/static/wrapups/bg9.jpg b/static/wrapups/bg9.jpg new file mode 100644 index 0000000..bf315ca Binary files /dev/null and b/static/wrapups/bg9.jpg differ