Lidarr support #1

Merged
Dark-Alex-17 merged 61 commits from lidarr into main 2026-01-21 21:30:47 +00:00
13 changed files with 53 additions and 40 deletions
Showing only changes of commit e94f78dc7b - Show all commits
+4 -3
View File
@@ -6,7 +6,8 @@ mod tests {
use crate::app::App;
use crate::app::radarr::ActiveRadarrBlock;
use crate::models::radarr_models::{
AddMovieBody, AddMovieOptions, Collection, CollectionMovie, Credit, Movie, RadarrRelease,
AddMovieBody, AddMovieOptions, Collection, CollectionMovie, Credit, MinimumAvailability, Movie,
MovieMonitor, RadarrRelease,
};
use crate::models::servarr_data::radarr::modals::MovieDetailsModal;
use crate::models::servarr_models::Indexer;
@@ -88,13 +89,13 @@ mod tests {
tmdb_id: 1234,
title: "Test".to_owned(),
root_folder_path: "/nfs2".to_owned(),
minimum_availability: "announced".to_owned(),
minimum_availability: MinimumAvailability::Announced,
monitored: true,
quality_profile_id: 2222,
tags: vec![1, 2],
tag_input_string: None,
add_options: AddMovieOptions {
monitor: "movieOnly".to_owned(),
monitor: MovieMonitor::MovieOnly,
search_for_movie: true,
},
};
+2 -2
View File
@@ -122,12 +122,12 @@ impl<'a, 'b> CliCommandHandler<'a, 'b, RadarrAddCommand> for RadarrAddCommandHan
title: String::new(),
root_folder_path,
quality_profile_id,
minimum_availability: minimum_availability.to_string(),
minimum_availability,
monitored: !disable_monitoring,
tags,
tag_input_string: None,
add_options: AddMovieOptions {
monitor: monitor.to_string(),
monitor,
search_for_movie: !no_search_for_movie,
},
};
+2 -2
View File
@@ -384,12 +384,12 @@ mod tests {
title: String::new(),
root_folder_path: "/test".to_owned(),
quality_profile_id: 1,
minimum_availability: "released".to_owned(),
minimum_availability: MinimumAvailability::Released,
monitored: false,
tags: vec![1, 2],
tag_input_string: None,
add_options: AddMovieOptions {
monitor: "movieAndCollection".to_owned(),
monitor: MovieMonitor::MovieAndCollection,
search_for_movie: false,
},
};
+2 -2
View File
@@ -137,12 +137,12 @@ impl<'a, 'b> CliCommandHandler<'a, 'b, SonarrAddCommand> for SonarrAddCommandHan
root_folder_path,
quality_profile_id,
language_profile_id,
series_type: series_type.to_string(),
series_type,
season_folder: !disable_season_folders,
tags,
tag_input_string: None,
add_options: AddSeriesOptions {
monitor: monitor.to_string(),
monitor,
search_for_cutoff_unmet_episodes: !no_search_for_series,
search_for_missing_episodes: !no_search_for_series,
},
+2 -2
View File
@@ -517,13 +517,13 @@ mod tests {
root_folder_path: "/test".to_owned(),
quality_profile_id: 1,
language_profile_id: 1,
series_type: "anime".to_owned(),
series_type: SeriesType::Anime,
monitored: false,
tags: vec![1, 2],
tag_input_string: None,
season_folder: false,
add_options: AddSeriesOptions {
monitor: "future".to_owned(),
monitor: SeriesMonitor::Future,
search_for_cutoff_unmet_episodes: false,
search_for_missing_episodes: false,
},
@@ -83,8 +83,8 @@ impl AddMovieHandler<'_, '_> {
.unwrap();
let path = root_folder_list.current_selection().path.clone();
let monitor = monitor_list.current_selection().to_string();
let minimum_availability = minimum_availability_list.current_selection().to_string();
let monitor = *monitor_list.current_selection();
let minimum_availability = *minimum_availability_list.current_selection();
AddMovieBody {
tmdb_id,
@@ -5,7 +5,7 @@ pub(in crate::handlers::radarr_handlers) mod utils {
use crate::models::radarr_models::{
AddMovieBody, AddMovieOptions, AddMovieSearchResult, Collection, CollectionMovie,
DownloadRecord, IndexerSettings, MediaInfo, MinimumAvailability, Movie, MovieCollection,
MovieFile, RadarrRelease, Rating, RatingsList,
MovieFile, MovieMonitor, RadarrRelease, Rating, RatingsList,
};
use crate::models::servarr_models::{
Indexer, IndexerField, Language, Quality, QualityWrapper, RootFolder,
@@ -470,13 +470,13 @@ pub(in crate::handlers::radarr_handlers) mod utils {
tmdb_id: 1234,
title: "Test".to_owned(),
root_folder_path: "/nfs2".to_owned(),
minimum_availability: "announced".to_owned(),
minimum_availability: MinimumAvailability::Announced,
monitored: true,
quality_profile_id: 2222,
tags: Vec::new(),
tag_input_string: Some("usenet, testing".into()),
add_options: AddMovieOptions {
monitor: "movieOnly".to_owned(),
monitor: MovieMonitor::MovieOnly,
search_for_movie: true,
},
}
@@ -74,8 +74,8 @@ impl AddSeriesHandler<'_, '_> {
.unwrap();
let path = root_folder_list.current_selection().path.clone();
let monitor = monitor_list.current_selection().to_string();
let series_type = series_type_list.current_selection().to_string();
let monitor = *monitor_list.current_selection();
let series_type = *series_type_list.current_selection();
AddSeriesBody {
tvdb_id,
@@ -1169,12 +1169,12 @@ mod tests {
root_folder_path: "/nfs2".to_owned(),
quality_profile_id: 2222,
language_profile_id: 2222,
series_type: "standard".to_owned(),
series_type: SeriesType::Standard,
season_folder: true,
tags: Vec::default(),
tag_input_string: Some("usenet, testing".to_owned()),
add_options: AddSeriesOptions {
monitor: "all".to_owned(),
monitor: SeriesMonitor::All,
search_for_cutoff_unmet_episodes: true,
search_for_missing_episodes: true,
},
@@ -1647,12 +1647,12 @@ mod tests {
root_folder_path: "/nfs2".to_owned(),
quality_profile_id: 2222,
language_profile_id: 2222,
series_type: "standard".to_owned(),
series_type: SeriesType::Standard,
season_folder: true,
tags: Vec::default(),
tag_input_string: Some("usenet, testing".to_owned()),
add_options: AddSeriesOptions {
monitor: "all".to_owned(),
monitor: SeriesMonitor::All,
search_for_cutoff_unmet_episodes: true,
search_for_missing_episodes: true,
},
@@ -1777,12 +1777,12 @@ mod tests {
root_folder_path: "/nfs2".to_owned(),
quality_profile_id: 2222,
language_profile_id: 2222,
series_type: "standard".to_owned(),
series_type: SeriesType::Standard,
season_folder: true,
tags: Vec::default(),
tag_input_string: Some("usenet, testing".to_owned()),
add_options: AddSeriesOptions {
monitor: "all".to_owned(),
monitor: SeriesMonitor::All,
search_for_cutoff_unmet_episodes: true,
search_for_missing_episodes: true,
},
+15 -3
View File
@@ -27,7 +27,7 @@ pub struct AddMovieBody {
pub title: String,
pub root_folder_path: String,
pub quality_profile_id: i64,
pub minimum_availability: String,
pub minimum_availability: MinimumAvailability,
pub monitored: bool,
pub tags: Vec<i64>,
#[serde(skip_serializing, skip_deserializing)]
@@ -55,7 +55,7 @@ pub struct AddMovieSearchResult {
#[derive(Default, Clone, Serialize, Debug, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct AddMovieOptions {
pub monitor: String,
pub monitor: MovieMonitor,
pub search_for_movie: bool,
}
@@ -268,8 +268,20 @@ pub enum MinimumAvailability {
}
#[derive(
Default, PartialEq, Eq, Clone, Copy, Debug, EnumIter, ValueEnum, Display, EnumDisplayStyle,
Serialize,
Deserialize,
Default,
PartialEq,
Eq,
Clone,
Copy,
Debug,
EnumIter,
ValueEnum,
Display,
EnumDisplayStyle,
)]
#[serde(rename_all = "camelCase")]
#[strum(serialize_all = "camelCase")]
pub enum MovieMonitor {
#[default]
+2 -2
View File
@@ -31,7 +31,7 @@ pub struct AddSeriesBody {
pub root_folder_path: String,
pub quality_profile_id: i64,
pub language_profile_id: i64,
pub series_type: String,
pub series_type: SeriesType,
pub season_folder: bool,
pub tags: Vec<i64>,
#[serde(skip_serializing, skip_deserializing)]
@@ -68,7 +68,7 @@ pub struct AddSeriesSearchResultStatistics {
#[derive(Default, Clone, Serialize, Debug, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct AddSeriesOptions {
pub monitor: String,
pub monitor: SeriesMonitor,
pub search_for_cutoff_unmet_episodes: bool,
pub search_for_missing_episodes: bool,
}
@@ -2,7 +2,7 @@
mod tests {
use crate::models::radarr_models::{
AddMovieBody, AddMovieOptions, Credit, DeleteMovieParams, DownloadRecord, EditMovieParams,
MinimumAvailability, Movie, MovieHistoryItem, RadarrReleaseDownloadBody,
MinimumAvailability, Movie, MovieHistoryItem, MovieMonitor, RadarrReleaseDownloadBody,
};
use crate::models::servarr_data::radarr::modals::MovieDetailsModal;
use crate::models::servarr_data::radarr::radarr_data::ActiveRadarrBlock;
@@ -50,13 +50,13 @@ mod tests {
tmdb_id: 1234,
title: "Test".to_owned(),
root_folder_path: "/nfs2".to_owned(),
minimum_availability: "announced".to_owned(),
minimum_availability: MinimumAvailability::Announced,
monitored: true,
quality_profile_id: 2222,
tags: vec![1, 2],
tag_input_string: Some("usenet, testing".into()),
add_options: AddMovieOptions {
monitor: "movieOnly".to_owned(),
monitor: MovieMonitor::MovieOnly,
search_for_movie: true,
},
};
@@ -99,13 +99,13 @@ mod tests {
tmdb_id: 1234,
title: "Test".to_owned(),
root_folder_path: "/nfs2".to_owned(),
minimum_availability: "announced".to_owned(),
minimum_availability: MinimumAvailability::Announced,
monitored: true,
quality_profile_id: 2222,
tags: vec![1, 2],
tag_input_string: None,
add_options: AddMovieOptions {
monitor: "movieOnly".to_owned(),
monitor: MovieMonitor::MovieOnly,
search_for_movie: true,
},
};
@@ -2,8 +2,8 @@
mod tests {
use crate::models::servarr_data::sonarr::sonarr_data::ActiveSonarrBlock;
use crate::models::sonarr_models::{
AddSeriesBody, AddSeriesOptions, DeleteSeriesParams, EditSeriesParams, Series, SeriesType,
SonarrHistoryItem, SonarrSerdeable,
AddSeriesBody, AddSeriesOptions, DeleteSeriesParams, EditSeriesParams, Series, SeriesMonitor,
SeriesType, SonarrHistoryItem, SonarrSerdeable,
};
use crate::models::stateful_table::{SortOption, StatefulTable};
use crate::network::NetworkResource;
@@ -27,12 +27,12 @@ mod tests {
root_folder_path: "/nfs2".to_owned(),
quality_profile_id: 2222,
language_profile_id: 2222,
series_type: "standard".to_owned(),
series_type: SeriesType::Standard,
season_folder: true,
tags: Vec::new(),
tag_input_string: Some("usenet, testing".to_owned()),
add_options: AddSeriesOptions {
monitor: "all".to_owned(),
monitor: SeriesMonitor::All,
search_for_cutoff_unmet_episodes: true,
search_for_missing_episodes: true,
},
@@ -82,12 +82,12 @@ mod tests {
root_folder_path: "/nfs2".to_owned(),
quality_profile_id: 2222,
language_profile_id: 2222,
series_type: "standard".to_owned(),
series_type: SeriesType::Standard,
season_folder: true,
tags: vec![1, 2],
tag_input_string: None,
add_options: AddSeriesOptions {
monitor: "all".to_owned(),
monitor: SeriesMonitor::All,
search_for_cutoff_unmet_episodes: true,
search_for_missing_episodes: true,
},