feat: issue #25 implemented - cli
This commit is contained in:
@@ -15,14 +15,7 @@ defmodule BDS.Desktop.ShellLive.GalleryImport do
|
||||
@spec start(list(String.t()), String.t(), String.t(), String.t(), integer(), pid()) :: :ok
|
||||
def start(paths, project_id, post_id, language, concurrency_limit, parent) do
|
||||
{:ok, metadata} = Metadata.get_project_metadata(project_id)
|
||||
main_language = metadata.main_language || language
|
||||
blog_languages = metadata.blog_languages || []
|
||||
|
||||
translate_targets =
|
||||
[main_language | blog_languages]
|
||||
|> Enum.reject(&(&1 == language or is_nil(&1)))
|
||||
|> Enum.uniq()
|
||||
|
||||
translate_targets = translate_targets(metadata, language)
|
||||
{in_flight, remaining} = Enum.split(paths, concurrency_limit)
|
||||
|
||||
tasks =
|
||||
@@ -48,6 +41,36 @@ defmodule BDS.Desktop.ShellLive.GalleryImport do
|
||||
send(parent, {:add_images_complete, length(paths)})
|
||||
end
|
||||
|
||||
@doc """
|
||||
The translation targets for AI-generated media texts: the project main
|
||||
language plus all blog languages, minus the source `language`.
|
||||
"""
|
||||
def translate_targets(metadata, language) do
|
||||
main_language = metadata.main_language || language
|
||||
blog_languages = metadata.blog_languages || []
|
||||
|
||||
[main_language | blog_languages]
|
||||
|> Enum.reject(&(&1 == language or is_nil(&1)))
|
||||
|> Enum.uniq()
|
||||
end
|
||||
|
||||
@doc """
|
||||
Imports a single file and runs the same best-effort AI enrichment
|
||||
(title/alt/caption plus translations) as the gallery pipeline, without
|
||||
linking the media to a post. Used by the CLI `media` command (issue #25).
|
||||
|
||||
Returns `{:ok, media, display_title}` or `{:error, reason}`.
|
||||
"""
|
||||
def import_and_enrich(path, project_id, language, translate_targets) do
|
||||
case Media.import_media(%{project_id: project_id, source_path: path}) do
|
||||
{:ok, media} ->
|
||||
{:ok, media, enrich_media(media, language, translate_targets)}
|
||||
|
||||
{:error, reason} ->
|
||||
{:error, reason}
|
||||
end
|
||||
end
|
||||
|
||||
defp drain_tasks(
|
||||
[],
|
||||
tasks,
|
||||
|
||||
Reference in New Issue
Block a user