use crate::lyrics::LyricFormat;
use lunar_lib::formatter::TemplateOwned;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ExportConfig {
pub file_name_format: TemplateOwned,
pub artist_separator: String,
pub alt_artist_separator: String,
pub album_data_path: Option<TemplateOwned>,
pub singles_as_albums: bool,
pub embed_lyrics: bool,
pub export_synced_lyrics_as: Option<LyricFormat>,
pub plain_lyrics_as_txt: bool,
pub overwrite: bool,
}
impl ExportConfig {
#[must_use]
pub fn selene_export() -> Self {
Self {
file_name_format: TemplateOwned::new("{$album>/}{$main_track_artist?UNKNOWN ARTIST} - {$title?UNKNOWN TITLE}{$feat_track_artists< (feat. >)}").unwrap(),
artist_separator: ", ".to_owned(),
alt_artist_separator: " & ".to_owned(),
album_data_path: Some(TemplateOwned::new("{$album}/").unwrap()),
embed_lyrics: true,
export_synced_lyrics_as: Some(LyricFormat::SeleneLrc),
plain_lyrics_as_txt: true,
singles_as_albums: false,
overwrite: true,
}
}
#[must_use]
pub fn standard_export(lyric_files: bool, embed_lyrics: bool) -> Self {
Self {
file_name_format: TemplateOwned::new("{$album>/}{$main_track_artist?UNKNOWN ARTIST} - {$title?UNKNOWN TITLE}{$feat_track_artists< (feat. >)}").unwrap(),
artist_separator: ", ".to_owned(),
alt_artist_separator: " & ".to_owned(),
album_data_path: Some(TemplateOwned::new("{$album}/").unwrap()),
embed_lyrics,
export_synced_lyrics_as: lyric_files.then_some(LyricFormat::Lrc { a2: false }),
plain_lyrics_as_txt: lyric_files,
singles_as_albums: false,
overwrite: true,
}
}
}