Add utilities around albums and assets

This commit is contained in:
Marc Plano-Lesay 2024-11-05 09:23:34 +11:00
parent d37ab08728
commit a8796b2728
Signed by: kernald
GPG key ID: 66A41B08CC62A6CF
3 changed files with 91 additions and 0 deletions

21
src/utils/albums.rs Normal file
View 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
View 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)
}

View file

@ -1 +1,3 @@
pub mod albums;
pub mod assets;
pub mod people;