mirror of
https://github.com/storytold/artcraft.git
synced 2026-11-05 17:58:55 +00:00
add meda file default covers to responses
This commit is contained in:
1 parent
05a20d44e1
commit
02ae3d81e5
8 files changed
+62
-13
No files matched your search
@@ -28,6 +28,7 @@ use users_component::endpoints::logout_handler::*;
|
||||
use users_component::endpoints::session_info_handler::*;
|
||||
|
||||
use crate::http_server::common_responses::cover_image_details::*;
|
||||
use crate::http_server::common_responses::media_file_default_cover::MediaFileDefaultCover;
|
||||
use crate::http_server::common_responses::media_file_origin_details::*;
|
||||
use crate::http_server::common_responses::media_file_social_meta_lite::MediaFileSocialMetaLight;
|
||||
use crate::http_server::common_responses::pagination_cursors::PaginationCursors;
|
||||
@@ -39,7 +40,6 @@ use crate::http_server::endpoints::inference_job::get_inference_job_status::*;
|
||||
use crate::http_server::endpoints::inference_job::terminate_inference_job_handler::*;
|
||||
use crate::http_server::endpoints::media_files::batch_get_media_files_handler::*;
|
||||
use crate::http_server::endpoints::media_files::change_media_file_visibility_handler::*;
|
||||
use crate::http_server::endpoints::tts::enqueue_infer_tts_handler::enqueue_infer_tts_handler::*;
|
||||
use crate::http_server::endpoints::media_files::delete_media_file::*;
|
||||
use crate::http_server::endpoints::media_files::get_media_file::*;
|
||||
use crate::http_server::endpoints::media_files::list::list_featured_media_files::*;
|
||||
@@ -50,6 +50,7 @@ use crate::http_server::endpoints::media_files::rename_media_file_handler::*;
|
||||
use crate::http_server::endpoints::media_files::upload::upload_engine_asset::upload_engine_asset_media_file_handler::*;
|
||||
use crate::http_server::endpoints::media_files::upload::upload_error::MediaFileUploadError;
|
||||
use crate::http_server::endpoints::media_files::upload::upload_generic::upload_media_file_handler::*;
|
||||
use crate::http_server::endpoints::tts::enqueue_infer_tts_handler::enqueue_infer_tts_handler::*;
|
||||
use crate::http_server::endpoints::media_files::upload::upload_video::upload_video_media_file_handler::*;
|
||||
use crate::http_server::endpoints::media_files::upsert_write::write_engine_asset::write_engine_asset_media_file_handler::*;
|
||||
use crate::http_server::endpoints::media_files::upsert_write::write_error::MediaFileWriteError;
|
||||
@@ -150,6 +151,7 @@ use crate::http_server::web_utils::response_success_helpers::*;
|
||||
CoverImageDetails,
|
||||
DefaultAvatarInfo,
|
||||
DefaultCoverInfo,
|
||||
MediaFileDefaultCover,
|
||||
MediaFileModelDetails,
|
||||
MediaFileOriginDetails,
|
||||
MediaFileSocialMetaLight,
|
||||
|
||||
+23
-7
@@ -4,10 +4,11 @@ use tokens::tokens::media_files::MediaFileToken;
|
||||
|
||||
use tokens::tokens::users::UserToken;
|
||||
|
||||
const NUMBER_OF_IMAGES : u64 = 10;
|
||||
// TODO: Check the model cover number of images
|
||||
const NUMBER_OF_IMAGES : u64 = 8;
|
||||
const NUMBER_OF_IMAGES_SALT_OFFSET : u8 = 5;
|
||||
|
||||
const NUMBER_OF_COLORS : u64 = 5;
|
||||
const NUMBER_OF_COLORS : u64 = 8;
|
||||
const NUMBER_OF_COLORS_SALT_OFFSET : u8 = 1;
|
||||
|
||||
#[derive(Clone, Serialize,ToSchema)]
|
||||
@@ -17,10 +18,16 @@ pub struct MediaFileDefaultCover {
|
||||
}
|
||||
|
||||
impl MediaFileDefaultCover {
|
||||
/// Typical constructor
|
||||
pub fn from_token(token: &MediaFileToken) -> Self {
|
||||
Self::from_token_str(token.as_str())
|
||||
}
|
||||
|
||||
/// For non-media file tokens (eg. emulated TTS results)
|
||||
pub fn from_token_str(token: &str) -> Self {
|
||||
Self {
|
||||
image_index: hash(token.as_str(), NUMBER_OF_IMAGES, NUMBER_OF_IMAGES_SALT_OFFSET),
|
||||
color_index: hash(token.as_str(), NUMBER_OF_COLORS, NUMBER_OF_COLORS_SALT_OFFSET),
|
||||
image_index: hash(token, NUMBER_OF_IMAGES, NUMBER_OF_IMAGES_SALT_OFFSET),
|
||||
color_index: hash(token, NUMBER_OF_COLORS, NUMBER_OF_COLORS_SALT_OFFSET),
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -44,10 +51,19 @@ mod tests {
|
||||
|
||||
#[test]
|
||||
fn test() {
|
||||
let token = MediaFileToken::new_from_str("foo");
|
||||
let cover = MediaFileDefaultCover::from_token(&token);
|
||||
assert_eq!(cover.color_index, 5);
|
||||
assert_eq!(cover.image_index, 4);
|
||||
|
||||
let token = MediaFileToken::new_from_str("bar");
|
||||
let cover = MediaFileDefaultCover::from_token(&token);
|
||||
assert_eq!(cover.color_index, 5);
|
||||
assert_eq!(cover.image_index, 2);
|
||||
|
||||
let token = MediaFileToken::new_from_str("asdf");
|
||||
let cover = MediaFileDefaultCover::from_token(&token);
|
||||
|
||||
assert_eq!(cover.color_index, 3);
|
||||
assert_eq!(cover.image_index, 16);
|
||||
assert_eq!(cover.color_index, 0);
|
||||
assert_eq!(cover.image_index, 0);
|
||||
}
|
||||
}
|
||||
+6
-1
@@ -26,6 +26,7 @@ use tokens::tokens::media_files::MediaFileToken;
|
||||
use tokens::tokens::model_weights::ModelWeightToken;
|
||||
use tokens::tokens::prompts::PromptToken;
|
||||
use users_component::common_responses::user_details_lite::UserDetailsLight;
|
||||
use crate::http_server::common_responses::media_file_default_cover::MediaFileDefaultCover;
|
||||
|
||||
use crate::http_server::common_responses::simple_entity_stats::SimpleEntityStats;
|
||||
use crate::http_server::web_utils::response_error_helpers::to_simple_json_error;
|
||||
@@ -78,6 +79,9 @@ pub struct BatchMediaFileInfo {
|
||||
/// URL to the media file
|
||||
pub public_bucket_path: String,
|
||||
|
||||
// Default cover image if there is nothing else we can use as a cover and thumbnail.
|
||||
pub default_cover: MediaFileDefaultCover,
|
||||
|
||||
//// Provenance Data
|
||||
//pub origin_product: MediaFileOriginProductCategory,
|
||||
//pub origin_category: MediaFileOriginCategory,
|
||||
@@ -271,13 +275,14 @@ pub async fn batch_get_media_files_handler(
|
||||
};
|
||||
|
||||
BatchMediaFileInfo {
|
||||
token: result.token,
|
||||
token: result.token.clone(),
|
||||
media_type: result.media_type,
|
||||
media_class: result.media_class,
|
||||
maybe_media_subtype: result.maybe_media_subtype,
|
||||
maybe_engine_extension,
|
||||
maybe_batch_token: result.maybe_batch_token,
|
||||
public_bucket_path,
|
||||
default_cover: MediaFileDefaultCover::from_token(&result.token),
|
||||
maybe_title: result.maybe_title,
|
||||
maybe_text_transcript: result.maybe_text_transcript,
|
||||
maybe_model_weight_info: match result.maybe_model_weights_token {
|
||||
|
||||
+7
-1
@@ -23,6 +23,7 @@ use tokens::tokens::media_files::MediaFileToken;
|
||||
use tokens::tokens::model_weights::ModelWeightToken;
|
||||
use tokens::tokens::prompts::PromptToken;
|
||||
use users_component::common_responses::user_details_lite::UserDetailsLight;
|
||||
use crate::http_server::common_responses::media_file_default_cover::MediaFileDefaultCover;
|
||||
|
||||
use crate::http_server::common_responses::simple_entity_stats::SimpleEntityStats;
|
||||
use crate::http_server::web_utils::response_error_helpers::to_simple_json_error;
|
||||
@@ -64,6 +65,9 @@ pub struct MediaFileInfo {
|
||||
/// URL to the media file
|
||||
pub public_bucket_path: String,
|
||||
|
||||
// Default cover image if there is nothing else we can use as a cover and thumbnail.
|
||||
pub default_cover: MediaFileDefaultCover,
|
||||
|
||||
//// Provenance Data
|
||||
//pub origin_product: MediaFileOriginProductCategory,
|
||||
//pub origin_category: MediaFileOriginCategory,
|
||||
@@ -287,13 +291,14 @@ async fn modern_media_file_lookup(
|
||||
Ok(GetMediaFileSuccessResponse {
|
||||
success: true,
|
||||
media_file: MediaFileInfo {
|
||||
token: result.token,
|
||||
token: result.token.clone(),
|
||||
media_type: result.media_type,
|
||||
media_class: result.media_class,
|
||||
maybe_media_subtype: result.maybe_media_subtype,
|
||||
maybe_engine_extension,
|
||||
maybe_batch_token: result.maybe_batch_token,
|
||||
public_bucket_path,
|
||||
default_cover: MediaFileDefaultCover::from_token(&result.token),
|
||||
maybe_title: result.maybe_title,
|
||||
maybe_text_transcript: result.maybe_text_transcript,
|
||||
maybe_model_weight_info: match result.maybe_model_weights_token {
|
||||
@@ -385,6 +390,7 @@ async fn emulate_media_file_with_legacy_tts_result_lookup(
|
||||
maybe_engine_extension: None,
|
||||
maybe_batch_token: None,
|
||||
public_bucket_path,
|
||||
default_cover: MediaFileDefaultCover::from_token_str(&result.tts_result_token),
|
||||
maybe_model_weight_info: Some(GetMediaFileModelInfo {
|
||||
// NB: These should be reasonable synthetic defaults for emulated TT2 results, even the "ModelWeightToken".
|
||||
weight_token: ModelWeightToken::new_from_str(&result.tts_model_token),
|
||||
|
||||
+6
-1
@@ -16,6 +16,7 @@ use enums::by_table::media_files::media_file_type::MediaFileType;
|
||||
use mysql_queries::queries::media_files::list::list_media_files_by_tokens::list_media_files_by_tokens;
|
||||
use tokens::tokens::media_files::MediaFileToken;
|
||||
use users_component::common_responses::user_details_lite::UserDetailsLight;
|
||||
use crate::http_server::common_responses::media_file_default_cover::MediaFileDefaultCover;
|
||||
|
||||
use crate::http_server::common_responses::media_file_origin_details::MediaFileOriginDetails;
|
||||
use crate::http_server::common_responses::simple_entity_stats::SimpleEntityStats;
|
||||
@@ -38,6 +39,9 @@ pub struct MediaFile {
|
||||
/// URL to the media file
|
||||
pub public_bucket_path: String,
|
||||
|
||||
// Default cover image if there is nothing else we can use as a cover and thumbnail.
|
||||
pub default_cover: MediaFileDefaultCover,
|
||||
|
||||
#[deprecated(note="Use MediaFileOriginDetails instead")]
|
||||
pub origin_category: MediaFileOriginCategory,
|
||||
|
||||
@@ -157,9 +161,10 @@ pub async fn list_featured_media_files_handler(
|
||||
.to_string();
|
||||
|
||||
MediaFile {
|
||||
token: m.token,
|
||||
token: m.token.clone(),
|
||||
media_type: m.media_type,
|
||||
public_bucket_path,
|
||||
default_cover: MediaFileDefaultCover::from_token(&m.token),
|
||||
origin: MediaFileOriginDetails::from_db_fields_str(
|
||||
m.origin_category,
|
||||
m.origin_product_category,
|
||||
|
||||
+5
@@ -18,6 +18,7 @@ use enums::common::visibility::Visibility;
|
||||
use mysql_queries::queries::media_files::list::list_media_files::{list_media_files, ListMediaFilesArgs};
|
||||
use tokens::tokens::media_files::MediaFileToken;
|
||||
use users_component::common_responses::user_details_lite::UserDetailsLight;
|
||||
use crate::http_server::common_responses::media_file_default_cover::MediaFileDefaultCover;
|
||||
|
||||
use crate::http_server::common_responses::media_file_origin_details::MediaFileOriginDetails;
|
||||
use crate::http_server::common_responses::pagination_cursors::PaginationCursors;
|
||||
@@ -67,6 +68,9 @@ pub struct MediaFileListItem {
|
||||
/// URL to the media file.
|
||||
pub public_bucket_path: String,
|
||||
|
||||
// Default cover image if there is nothing else we can use as a cover and thumbnail.
|
||||
pub default_cover: MediaFileDefaultCover,
|
||||
|
||||
pub maybe_creator: Option<UserDetailsLight>,
|
||||
|
||||
/// Statistics about the media file
|
||||
@@ -239,6 +243,7 @@ pub async fn list_media_files_handler(
|
||||
record.maybe_public_bucket_extension.as_deref())
|
||||
.get_full_object_path_str()
|
||||
.to_string(),
|
||||
default_cover: MediaFileDefaultCover::from_token(&record.token),
|
||||
maybe_creator: UserDetailsLight::from_optional_db_fields_owned(
|
||||
record.maybe_creator_user_token,
|
||||
record.maybe_creator_username,
|
||||
|
||||
+6
-1
@@ -19,6 +19,7 @@ use mysql_queries::queries::media_files::list::list_media_files_by_batch_token::
|
||||
use mysql_queries::queries::media_files::list::list_media_files_for_user::{list_media_files_for_user, ListMediaFileForUserArgs};
|
||||
use tokens::tokens::batch_generations::BatchGenerationToken;
|
||||
use tokens::tokens::media_files::MediaFileToken;
|
||||
use crate::http_server::common_responses::media_file_default_cover::MediaFileDefaultCover;
|
||||
|
||||
use crate::http_server::common_responses::media_file_origin_details::MediaFileOriginDetails;
|
||||
use crate::http_server::common_responses::pagination_page::PaginationPage;
|
||||
@@ -71,6 +72,9 @@ pub struct MediaFilesByBatchListItem {
|
||||
/// URL to the media file.
|
||||
pub public_bucket_path: String,
|
||||
|
||||
// Default cover image if there is nothing else we can use as a cover and thumbnail.
|
||||
pub default_cover: MediaFileDefaultCover,
|
||||
|
||||
pub creator_set_visibility: Visibility,
|
||||
|
||||
/// The name or title of the media file (optional)
|
||||
@@ -196,7 +200,7 @@ pub async fn list_media_files_by_batch_token_handler(
|
||||
true
|
||||
})
|
||||
.map(|record| MediaFilesByBatchListItem {
|
||||
token: record.token,
|
||||
token: record.token.clone(),
|
||||
media_type: record.media_type,
|
||||
origin: MediaFileOriginDetails::from_db_fields_str(
|
||||
record.origin_category,
|
||||
@@ -214,6 +218,7 @@ pub async fn list_media_files_by_batch_token_handler(
|
||||
record.maybe_public_bucket_extension.as_deref())
|
||||
.get_full_object_path_str()
|
||||
.to_string(),
|
||||
default_cover: MediaFileDefaultCover::from_token(&record.token),
|
||||
creator_set_visibility: record.creator_set_visibility,
|
||||
maybe_title: record.maybe_title,
|
||||
maybe_text_transcript: record.maybe_text_transcript,
|
||||
|
||||
+6
-1
@@ -19,6 +19,7 @@ use enums::common::view_as::ViewAs;
|
||||
use enums::common::visibility::Visibility;
|
||||
use mysql_queries::queries::media_files::list::list_media_files_for_user::{list_media_files_for_user, ListMediaFileForUserArgs};
|
||||
use tokens::tokens::media_files::MediaFileToken;
|
||||
use crate::http_server::common_responses::media_file_default_cover::MediaFileDefaultCover;
|
||||
|
||||
use crate::http_server::common_responses::media_file_origin_details::MediaFileOriginDetails;
|
||||
use crate::http_server::common_responses::pagination_page::PaginationPage;
|
||||
@@ -81,6 +82,9 @@ pub struct MediaFileForUserListItem {
|
||||
/// URL to the media file.
|
||||
pub public_bucket_path: String,
|
||||
|
||||
// Default cover image if there is nothing else we can use as a cover and thumbnail.
|
||||
pub default_cover: MediaFileDefaultCover,
|
||||
|
||||
pub creator_set_visibility: Visibility,
|
||||
|
||||
/// The name or title of the media file (optional)
|
||||
@@ -230,7 +234,7 @@ pub async fn list_media_files_for_user_handler(
|
||||
true
|
||||
})
|
||||
.map(|record| MediaFileForUserListItem {
|
||||
token: record.token,
|
||||
token: record.token.clone(),
|
||||
media_type: record.media_type,
|
||||
media_class: record.media_class,
|
||||
origin: MediaFileOriginDetails::from_db_fields_str(
|
||||
@@ -249,6 +253,7 @@ pub async fn list_media_files_for_user_handler(
|
||||
record.maybe_public_bucket_extension.as_deref())
|
||||
.get_full_object_path_str()
|
||||
.to_string(),
|
||||
default_cover: MediaFileDefaultCover::from_token(&record.token),
|
||||
creator_set_visibility: record.creator_set_visibility,
|
||||
maybe_title: record.maybe_title,
|
||||
maybe_text_transcript: record.maybe_text_transcript,
|
||||
|
||||
Reference in new issue
Block a user