diff options
author | metamuffin <metamuffin@disroot.org> | 2023-08-04 10:12:43 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2023-08-04 10:12:43 +0200 |
commit | 072d8308d7987e386a1bca9299e42859e2b41ad6 (patch) | |
tree | 74ad3026afc01f3b069db4418545f68b33fbabc7 /import | |
parent | cc37287b8c7280051a07d8f735e47e88bfe9fee6 (diff) | |
download | jellything-072d8308d7987e386a1bca9299e42859e2b41ad6.tar jellything-072d8308d7987e386a1bca9299e42859e2b41ad6.tar.bz2 jellything-072d8308d7987e386a1bca9299e42859e2b41ad6.tar.zst |
extract cover
Diffstat (limited to 'import')
-rw-r--r-- | import/src/main.rs | 44 |
1 files changed, 35 insertions, 9 deletions
diff --git a/import/src/main.rs b/import/src/main.rs index 806ebfb..bf90eb2 100644 --- a/import/src/main.rs +++ b/import/src/main.rs @@ -10,10 +10,10 @@ use clap::{Parser, Subcommand}; use jellycommon::{AssetLocation, MediaInfo, MediaSource, Node, NodeKind, NodePrivate, NodePublic}; use jellymatroska::read::EbmlReader; use jellyremuxer::import::{import_metadata, seek_index::import_seek_index}; -use log::info; +use log::{info, warn}; use std::{ fs::{remove_file, File}, - io::stdin, + io::{stdin, Write}, path::PathBuf, process::exit, }; @@ -154,21 +154,47 @@ fn main() -> anyhow::Result<()> { if !args.dry { std::fs::create_dir_all(&path)?; - poster = tmdb_details + poster = file_meta .as_ref() - .map(|d| { - d.poster_path + .map(|m| { + m.cover .as_ref() - .map(|p| { - let pu = path.join("poster.jpeg"); + .map(|(mime, data)| { + let pu = path.join(format!( + "cover.{}", + match mime.as_str() { + "image/webp" => "webp", + "image/jpeg" => "jpeg", + "image/png" => "png", + _ => { + warn!("unknown mime, just using webp"); + "webp" + } + } + )); let mut f = File::create(&pu)?; - tmdb_image(&p, &mut f)?; + f.write_all(&data)?; Ok::<_, anyhow::Error>(pu) }) .transpose() }) .transpose()? - .flatten(); + .flatten() + .or(tmdb_details + .as_ref() + .map(|d| { + d.poster_path + .as_ref() + .map(|p| { + let pu = path.join("poster.jpeg"); + let mut f = File::create(&pu)?; + tmdb_image(&p, &mut f)?; + Ok::<_, anyhow::Error>(pu) + }) + .transpose() + }) + .transpose()? + .flatten()); backdrop = tmdb_details .as_ref() |