aboutsummaryrefslogtreecommitdiff
path: root/import/src/main.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2023-08-04 10:12:43 +0200
committermetamuffin <metamuffin@disroot.org>2023-08-04 10:12:43 +0200
commit072d8308d7987e386a1bca9299e42859e2b41ad6 (patch)
tree74ad3026afc01f3b069db4418545f68b33fbabc7 /import/src/main.rs
parentcc37287b8c7280051a07d8f735e47e88bfe9fee6 (diff)
downloadjellything-072d8308d7987e386a1bca9299e42859e2b41ad6.tar
jellything-072d8308d7987e386a1bca9299e42859e2b41ad6.tar.bz2
jellything-072d8308d7987e386a1bca9299e42859e2b41ad6.tar.zst
extract cover
Diffstat (limited to 'import/src/main.rs')
-rw-r--r--import/src/main.rs44
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()