assets + fmt
Some checks failed
CI / Check / Test (push) Has been cancelled

This commit is contained in:
2026-06-03 01:13:06 +02:00
parent 8cabc6af70
commit e8e83d3f16
17 changed files with 44 additions and 95 deletions

74
Cargo.lock generated
View File

@@ -2727,20 +2727,6 @@ dependencies = [
"icu_properties", "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]] [[package]]
name = "image" name = "image"
version = "0.25.10" version = "0.25.10"
@@ -2755,7 +2741,7 @@ dependencies = [
"image-webp", "image-webp",
"moxcms", "moxcms",
"num-traits", "num-traits",
"png 0.18.1", "png",
"qoi", "qoi",
"ravif 0.13.0", "ravif 0.13.0",
"rayon", "rayon",
@@ -2772,7 +2758,7 @@ dependencies = [
"anyhow", "anyhow",
"async-trait", "async-trait",
"domain", "domain",
"image 0.25.10", "image",
"image-storage", "image-storage",
"object_store", "object_store",
"ravif 0.11.20", "ravif 0.11.20",
@@ -2817,7 +2803,7 @@ dependencies = [
"ab_glyph", "ab_glyph",
"approx", "approx",
"getrandom 0.2.17", "getrandom 0.2.17",
"image 0.25.10", "image",
"itertools 0.12.1", "itertools 0.12.1",
"nalgebra", "nalgebra",
"num", "num",
@@ -3019,12 +3005,6 @@ dependencies = [
"libc", "libc",
] ]
[[package]]
name = "jpeg-decoder"
version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "00810f1d8b74be64b13dbf3db89ac67740615d6c891f0e7b6179326533011a07"
[[package]] [[package]]
name = "js-sys" name = "js-sys"
version = "0.3.99" version = "0.3.99"
@@ -4040,48 +4020,6 @@ dependencies = [
"serde_json", "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]] [[package]]
name = "png" name = "png"
version = "0.18.1" version = "0.18.1"
@@ -6947,7 +6885,7 @@ version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c071456adef4aca59bf6a583c46b90ff5eb0b4f758fc347cea81290288f37ce1" checksum = "c071456adef4aca59bf6a583c46b90ff5eb0b4f758fc347cea81290288f37ce1"
dependencies = [ dependencies = [
"image 0.25.10", "image",
"libwebp-sys", "libwebp-sys",
] ]
@@ -7556,6 +7494,7 @@ dependencies = [
"tokio", "tokio",
"tracing", "tracing",
"tracing-subscriber", "tracing-subscriber",
"wrapup-renderer",
] ]
[[package]] [[package]]
@@ -7565,9 +7504,8 @@ dependencies = [
"ab_glyph", "ab_glyph",
"async-trait", "async-trait",
"domain", "domain",
"image 0.25.10", "image",
"imageproc", "imageproc",
"plotters",
"tempfile", "tempfile",
"tokio", "tokio",
"tracing", "tracing",

View File

@@ -204,13 +204,12 @@ impl WrapUpRepository for PostgresWrapUpRepository {
&self, &self,
before: chrono::NaiveDateTime, before: chrono::NaiveDateTime,
) -> Result<u64, DomainError> { ) -> Result<u64, DomainError> {
let result = sqlx::query( let result =
"DELETE FROM wrap_up_records WHERE status = 'failed' AND created_at < $1", sqlx::query("DELETE FROM wrap_up_records WHERE status = 'failed' AND created_at < $1")
) .bind(before)
.bind(before) .execute(&self.pool)
.execute(&self.pool) .await
.await .map_err(map_err)?;
.map_err(map_err)?;
Ok(result.rows_affected()) Ok(result.rows_affected())
} }
} }

View File

@@ -215,13 +215,12 @@ impl WrapUpRepository for SqliteWrapUpRepository {
before: chrono::NaiveDateTime, before: chrono::NaiveDateTime,
) -> Result<u64, DomainError> { ) -> Result<u64, DomainError> {
let before_str = before.format("%Y-%m-%dT%H:%M:%SZ").to_string(); let before_str = before.format("%Y-%m-%dT%H:%M:%SZ").to_string();
let result = sqlx::query( let result =
"DELETE FROM wrap_up_records WHERE status = 'failed' AND created_at < ?", sqlx::query("DELETE FROM wrap_up_records WHERE status = 'failed' AND created_at < ?")
) .bind(&before_str)
.bind(&before_str) .execute(&self.pool)
.execute(&self.pool) .await
.await .map_err(map_err)?;
.map_err(map_err)?;
Ok(result.rows_affected()) Ok(result.rows_affected())
} }
} }

View File

@@ -35,7 +35,12 @@ impl WrapUpVideoRenderer for FfmpegWrapUpRenderer {
slide_pngs.push(renderer.render_hero(report, width, height)?); slide_pngs.push(renderer.render_hero(report, width, height)?);
slide_pngs.push(renderer.render_ratings(report, width, height)?); slide_pngs.push(renderer.render_ratings(report, width, height)?);
if !report.top_directors.is_empty() { 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() { if !report.top_actors.is_empty() {
slide_pngs.push(renderer.render_actors(report, &assets.cast_images, width, height)?); 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() { if !report.top_genres.is_empty() {
slide_pngs.push(renderer.render_genres(report, width, height)?); 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() { if !assets.poster_images.is_empty() {
slide_pngs.push(renderer.render_mosaic(&assets.poster_images, width, height)?); slide_pngs.push(renderer.render_mosaic(&assets.poster_images, width, height)?);
} else { } else {

View File

@@ -16,7 +16,11 @@ pub async fn execute(
if let Ok(Some(rec)) = ctx.repos.wrapup_repo.get_by_id(&wrapup_id).await if let Ok(Some(rec)) = ctx.repos.wrapup_repo.get_by_id(&wrapup_id).await
&& (rec.status == WrapUpStatus::Ready || rec.status == WrapUpStatus::Generating) && (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(()); return Ok(());
} }

View File

@@ -1218,10 +1218,7 @@ impl WrapUpRepository for PanicWrapUpRepository {
async fn delete(&self, _: &WrapUpId) -> Result<(), DomainError> { async fn delete(&self, _: &WrapUpId) -> Result<(), DomainError> {
panic!("PanicWrapUpRepository called") panic!("PanicWrapUpRepository called")
} }
async fn delete_failed_older_than( async fn delete_failed_older_than(&self, _: chrono::NaiveDateTime) -> Result<u64, DomainError> {
&self,
_: chrono::NaiveDateTime,
) -> Result<u64, DomainError> {
panic!("PanicWrapUpRepository called") panic!("PanicWrapUpRepository called")
} }
} }

View File

@@ -632,10 +632,7 @@ impl domain::ports::WrapUpRepository for Panic {
async fn delete(&self, _: &domain::value_objects::WrapUpId) -> Result<(), DomainError> { async fn delete(&self, _: &domain::value_objects::WrapUpId) -> Result<(), DomainError> {
panic!() panic!()
} }
async fn delete_failed_older_than( async fn delete_failed_older_than(&self, _: chrono::NaiveDateTime) -> Result<u64, DomainError> {
&self,
_: chrono::NaiveDateTime,
) -> Result<u64, DomainError> {
panic!() panic!()
} }
} }

View File

@@ -106,9 +106,14 @@ async fn main() -> anyhow::Result<()> {
document_parser: Arc::new(ImporterDocumentParser) as Arc<dyn DocumentParser>, document_parser: Arc::new(ImporterDocumentParser) as Arc<dyn DocumentParser>,
video_renderer: { video_renderer: {
let ffmpeg = &app_config.wrapup.ffmpeg_path; 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})"); tracing::info!("wrapup video renderer enabled (ffmpeg={ffmpeg})");
Some(Arc::new(wrapup_renderer::FfmpegWrapUpRenderer::new()) as Arc<dyn domain::ports::WrapUpVideoRenderer>) Some(Arc::new(wrapup_renderer::FfmpegWrapUpRenderer::new())
as Arc<dyn domain::ports::WrapUpVideoRenderer>)
} else { } else {
tracing::info!("wrapup video renderer disabled (ffmpeg not found)"); tracing::info!("wrapup video renderer disabled (ffmpeg not found)");
None None

BIN
static/wrapups/bg1.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 381 KiB

BIN
static/wrapups/bg10.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 291 KiB

BIN
static/wrapups/bg2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 404 KiB

BIN
static/wrapups/bg3.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

BIN
static/wrapups/bg4.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 776 KiB

BIN
static/wrapups/bg5.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 KiB

BIN
static/wrapups/bg6.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 MiB

BIN
static/wrapups/bg8.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

BIN
static/wrapups/bg9.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1022 KiB