Merge branch 'albums-utils' into 'main'
Add utilities around albums and assets See merge request kernald/immich-tools!13
This commit is contained in:
commit
866fe29b05
3 changed files with 91 additions and 0 deletions
21
src/utils/albums.rs
Normal file
21
src/utils/albums.rs
Normal file
|
@ -0,0 +1,21 @@
|
|||
use crate::{
|
||||
types::{AlbumResponseDto, AssetResponseDto},
|
||||
Client,
|
||||
};
|
||||
use color_eyre::eyre::Result;
|
||||
use uuid::Uuid;
|
||||
|
||||
pub async fn fetch_all_albums(client: &Client) -> Result<Vec<AlbumResponseDto>> {
|
||||
Ok(client.get_all_albums(None, None).await?.to_vec())
|
||||
}
|
||||
|
||||
pub async fn fetch_album_assets(
|
||||
album_uuid: &Uuid,
|
||||
client: &Client,
|
||||
) -> Result<Vec<AssetResponseDto>> {
|
||||
Ok(client
|
||||
.get_album_info(album_uuid, None, Some(false))
|
||||
.await?
|
||||
.assets
|
||||
.clone())
|
||||
}
|
68
src/utils/assets.rs
Normal file
68
src/utils/assets.rs
Normal file
|
@ -0,0 +1,68 @@
|
|||
use crate::{
|
||||
types::{AssetResponseDto, MetadataSearchDto},
|
||||
Client,
|
||||
};
|
||||
use color_eyre::eyre::Result;
|
||||
|
||||
pub async fn fetch_all_assets(client: &Client) -> Result<Vec<AssetResponseDto>> {
|
||||
let mut all_assets = Vec::new();
|
||||
let mut page_number = None;
|
||||
let mut has_next_page = true;
|
||||
|
||||
while has_next_page {
|
||||
let fetched = client
|
||||
.search_metadata(&MetadataSearchDto {
|
||||
checksum: None,
|
||||
city: None,
|
||||
country: None,
|
||||
created_after: None,
|
||||
created_before: None,
|
||||
device_asset_id: None,
|
||||
device_id: None,
|
||||
encoded_video_path: None,
|
||||
id: None,
|
||||
is_archived: None,
|
||||
is_encoded: None,
|
||||
is_favorite: None,
|
||||
is_motion: None,
|
||||
is_not_in_album: None,
|
||||
is_offline: None,
|
||||
is_visible: None,
|
||||
lens_model: None,
|
||||
library_id: None,
|
||||
make: None,
|
||||
model: None,
|
||||
order: None,
|
||||
original_file_name: None,
|
||||
original_path: None,
|
||||
page: page_number,
|
||||
person_ids: vec![],
|
||||
preview_path: None,
|
||||
size: None,
|
||||
state: None,
|
||||
taken_after: None,
|
||||
taken_before: None,
|
||||
thumbnail_path: None,
|
||||
trashed_after: None,
|
||||
trashed_before: None,
|
||||
type_: None,
|
||||
updated_after: None,
|
||||
updated_before: None,
|
||||
with_archived: true,
|
||||
with_deleted: None,
|
||||
with_exif: None,
|
||||
with_people: None,
|
||||
with_stacked: None,
|
||||
})
|
||||
.await?;
|
||||
all_assets.extend(fetched.assets.items.clone());
|
||||
has_next_page = fetched.assets.next_page.is_some();
|
||||
page_number = fetched
|
||||
.assets
|
||||
.next_page
|
||||
.clone()
|
||||
.map(|page| page.parse::<f64>().unwrap());
|
||||
}
|
||||
|
||||
Ok(all_assets)
|
||||
}
|
|
@ -1 +1,3 @@
|
|||
pub mod albums;
|
||||
pub mod assets;
|
||||
pub mod people;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue