Enable special files to be declared as output file

This commit is contained in:
ByteDream 2023-04-09 11:24:12 +02:00
parent 7e34076a7b
commit d79f00871e
2 changed files with 4 additions and 3 deletions

View file

@ -110,7 +110,7 @@ impl Execute for Archive {
.unwrap_or_default() .unwrap_or_default()
.to_string_lossy() .to_string_lossy()
!= "mkv" != "mkv"
&& !is_special_file(PathBuf::from(&self.output)) && !is_special_file(&self.output)
&& self.output != "-" && self.output != "-"
{ {
bail!("File extension is not '.mkv'. Currently only matroska / '.mkv' files are supported") bail!("File extension is not '.mkv'. Currently only matroska / '.mkv' files are supported")

View file

@ -5,7 +5,7 @@ use crate::utils::ffmpeg::FFmpegPreset;
use crate::utils::filter::Filter; use crate::utils::filter::Filter;
use crate::utils::format::{Format, SingleFormat}; use crate::utils::format::{Format, SingleFormat};
use crate::utils::log::progress; use crate::utils::log::progress;
use crate::utils::os::{free_file, has_ffmpeg}; use crate::utils::os::{free_file, has_ffmpeg, is_special_file};
use crate::utils::parse::parse_url; use crate::utils::parse::parse_url;
use crate::utils::video::variant_data_from_stream; use crate::utils::video::variant_data_from_stream;
use crate::Execute; use crate::Execute;
@ -86,6 +86,7 @@ impl Execute for Download {
.extension() .extension()
.unwrap_or_default() .unwrap_or_default()
.is_empty() .is_empty()
&& !is_special_file(&self.output)
&& self.output != "-" && self.output != "-"
{ {
bail!("No file extension found. Please specify a file extension (via `-o`) for the output file") bail!("No file extension found. Please specify a file extension (via `-o`) for the output file")
@ -132,7 +133,7 @@ impl Execute for Download {
let download_builder = DownloadBuilder::new() let download_builder = DownloadBuilder::new()
.default_subtitle(self.subtitle.clone()) .default_subtitle(self.subtitle.clone())
.output_format(if self.output == "-" { .output_format(if is_special_file(&self.output) || self.output == "-" {
Some("mpegts".to_string()) Some("mpegts".to_string())
} else { } else {
None None