Compare commits
1 commit
ba1b0b79be
...
99f703135d
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
99f703135d |
6 changed files with 409 additions and 712 deletions
1099
Cargo.lock
generated
1099
Cargo.lock
generated
File diff suppressed because it is too large
Load diff
|
|
@ -24,7 +24,7 @@ figment_file_provider_adapter = "0.1.1"
|
||||||
log = "0.4.22"
|
log = "0.4.22"
|
||||||
multimap = "0.10.0"
|
multimap = "0.10.0"
|
||||||
pretty_env_logger = "0.5.0"
|
pretty_env_logger = "0.5.0"
|
||||||
progenitor-client = "0.11.0"
|
progenitor-client = "0.8.0"
|
||||||
readonly = "0.2.12"
|
readonly = "0.2.12"
|
||||||
regress = "0.10.1"
|
regress = "0.10.1"
|
||||||
reqwest = { version = "0.12.8", features = ["json", "stream"] }
|
reqwest = { version = "0.12.8", features = ["json", "stream"] }
|
||||||
|
|
@ -37,7 +37,7 @@ vcard4 = "0.7.0"
|
||||||
[build-dependencies]
|
[build-dependencies]
|
||||||
openapiv3 = "2.0.0"
|
openapiv3 = "2.0.0"
|
||||||
prettyplease = "0.2.24"
|
prettyplease = "0.2.24"
|
||||||
progenitor = "0.11.0"
|
progenitor = "0.8.0"
|
||||||
serde_json = "1.0"
|
serde_json = "1.0"
|
||||||
syn = "2.0"
|
syn = "2.0"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -50,7 +50,7 @@ pub async fn auto_create_albums(ctx: Context, separator: String) -> Result<()> {
|
||||||
.cloned()
|
.cloned()
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
info!("Creating missing albums: {missing_albums:?}");
|
info!("Creating missing albums: {:?}", missing_albums);
|
||||||
|
|
||||||
for missing_album in &missing_albums {
|
for missing_album in &missing_albums {
|
||||||
let assets = sorted_assets
|
let assets = sorted_assets
|
||||||
|
|
|
||||||
|
|
@ -55,7 +55,8 @@ pub async fn sync_date_of_birth(ctx: Context, vcard_file: &PathBuf) -> Result<()
|
||||||
let bday = vcard_date_to_naive_date(dt.value.first().unwrap().clone())?;
|
let bday = vcard_date_to_naive_date(dt.value.first().unwrap().clone())?;
|
||||||
if c.date_of_birth.as_ref().is_some_and(|bdate| bday == *bdate) {
|
if c.date_of_birth.as_ref().is_some_and(|bdate| bday == *bdate) {
|
||||||
debug!(
|
debug!(
|
||||||
"{formatted_name} already has the proper date of birth, skipping"
|
"{} already has the proper date of birth, skipping",
|
||||||
|
formatted_name
|
||||||
);
|
);
|
||||||
} else if bday.year() > 0 {
|
} else if bday.year() > 0 {
|
||||||
UpdatePersonDateOfBirth::new(UpdatePersonDateOfBirthArgs {
|
UpdatePersonDateOfBirth::new(UpdatePersonDateOfBirthArgs {
|
||||||
|
|
@ -67,7 +68,8 @@ pub async fn sync_date_of_birth(ctx: Context, vcard_file: &PathBuf) -> Result<()
|
||||||
updated_dobs += 1;
|
updated_dobs += 1;
|
||||||
} else {
|
} else {
|
||||||
debug!(
|
debug!(
|
||||||
"{formatted_name} has an incomplete date of birth, skipping"
|
"{} has an incomplete date of birth, skipping",
|
||||||
|
formatted_name
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -75,14 +77,14 @@ pub async fn sync_date_of_birth(ctx: Context, vcard_file: &PathBuf) -> Result<()
|
||||||
todo!("{}: DateTimeOrTextProperty({})", formatted_name, prop)
|
todo!("{}: DateTimeOrTextProperty({})", formatted_name, prop)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
None => debug!("No Immich match for {formatted_name}"),
|
None => debug!("No Immich match for {}", formatted_name),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
None => todo!(),
|
None => todo!(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
info!("Updated {updated_dobs} persons");
|
info!("Updated {} persons", updated_dobs);
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -55,7 +55,7 @@ async fn main() -> Result<()> {
|
||||||
if let Some(project_dirs) = ProjectDirs::from("fr", "enoent", "Immich Tools") {
|
if let Some(project_dirs) = ProjectDirs::from("fr", "enoent", "Immich Tools") {
|
||||||
let config_file_path = project_dirs.config_dir().join("config.toml");
|
let config_file_path = project_dirs.config_dir().join("config.toml");
|
||||||
if config_file_path.exists() {
|
if config_file_path.exists() {
|
||||||
debug!("Reading configuration from {config_file_path:?}");
|
debug!("Reading configuration from {:?}", config_file_path);
|
||||||
conf_extractor =
|
conf_extractor =
|
||||||
conf_extractor.merge(FileAdapter::wrap(Toml::file_exact(config_file_path)));
|
conf_extractor.merge(FileAdapter::wrap(Toml::file_exact(config_file_path)));
|
||||||
}
|
}
|
||||||
|
|
@ -135,7 +135,7 @@ async fn validate_client_connection(client: &Client) -> Result<()> {
|
||||||
.with_note(|| {
|
.with_note(|| {
|
||||||
format!(
|
format!(
|
||||||
"The API version for this client is {}, make sure the server version is compatible",
|
"The API version for this client is {}, make sure the server version is compatible",
|
||||||
Client::api_version()
|
client.api_version()
|
||||||
)
|
)
|
||||||
})?;
|
})?;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@ pub struct AssetQuery {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn fetch_all_assets(query: AssetQuery, client: &Client) -> Result<Vec<AssetResponseDto>> {
|
pub async fn fetch_all_assets(query: AssetQuery, client: &Client) -> Result<Vec<AssetResponseDto>> {
|
||||||
debug!("Fetching assets with query {query:?}");
|
debug!("Fetching assets with query {:?}", query);
|
||||||
|
|
||||||
// is_offline is ignored, let's fetch trashed assets instead and filter them later
|
// is_offline is ignored, let's fetch trashed assets instead and filter them later
|
||||||
let trashed_after = if query.is_offline == Some(true) {
|
let trashed_after = if query.is_offline == Some(true) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue