Packages
asmr_video_generator
1772075.732.183
Professional Elixir integration for asmr-video-generator. Provides utilities for building links and integrating with https://supermaker.ai/video/asmr-video-generator/.
Current section
Files
Jump to
Current section
Files
lib/asmr_video_generator.ex
defmodule AsmrVideoGenerator do
@moduledoc """
This module provides functions for generating ASMR videos using Supermaker AI.
It includes utilities for constructing URLs and manipulating video parameters.
"""
@base_url "https://supermaker.ai/video/asmr-video-generator"
@doc """
Builds a URL to the ASMR video generator with optional parameters.
## Examples
iex> AsmrVideoGenerator.build_url()
"https://supermaker.ai/video/asmr-video-generator"
iex> AsmrVideoGenerator.build_url(prompt: "Gentle rain", duration: 60)
"https://supermaker.ai/video/asmr-video-generator?prompt=Gentle rain&duration=60"
"""
def build_url(params \\ []) when is_list(params) do
@base_url
|> maybe_append_params(params)
end
defp maybe_append_params(base_url, []), do: base_url
defp maybe_append_params(base_url, params) when is_list(params) do
params
|> Enum.reject(fn {_, value} -> is_nil(value) end)
|> Enum.map(fn {key, value} -> "#{key}=#{URI.encode(to_string(value))}" end)
|> Enum.join("&")
|> then(fn param_string ->
case param_string do
"" -> base_url
_ -> "#{base_url}?#{param_string}"
end
end)
end
@doc """
Generates a default prompt for an ASMR video based on a theme.
## Examples
iex> AsmrVideoGenerator.generate_prompt("Nature")
"Relaxing nature sounds for sleep and meditation."
iex> AsmrVideoGenerator.generate_prompt("Rain")
"Gentle rain sounds for focus and relaxation."
"""
def generate_prompt("Nature"), do: "Relaxing nature sounds for sleep and meditation."
def generate_prompt("Rain"), do: "Gentle rain sounds for focus and relaxation."
def generate_prompt("Fire"), do: "Crackling fireplace sounds for warmth and comfort."
def generate_prompt(_), do: "Calming ASMR sounds for relaxation."
@doc """
Normalizes a duration in seconds to a valid range (30-300 seconds).
## Examples
iex> AsmrVideoGenerator.normalize_duration(15)
30
iex> AsmrVideoGenerator.normalize_duration(180)
180
iex> AsmrVideoGenerator.normalize_duration(400)
300
"""
def normalize_duration(duration) when is_integer(duration) do
cond do
duration < 30 -> 30
duration > 300 -> 300
true -> duration
end
end
@doc """
Converts a list of keywords into a comma-separated string for use in prompts.
## Examples
iex> AsmrVideoGenerator.keywords_to_string(["whispering", "tapping"])
"whispering, tapping"
iex> AsmrVideoGenerator.keywords_to_string([])
""
"""
def keywords_to_string(keywords) when is_list(keywords) do
keywords
|> Enum.map(&to_string/1)
|> Enum.join(", ")
end
end