This commit is contained in:
ct
2025-06-21 09:13:23 +08:00
parent db10fc3f1c
commit 8e58f85860
39 changed files with 684 additions and 181 deletions

View File

@@ -27,7 +27,6 @@ public static function getSuitableMemeMedia(Meme $meme, $tolerance = 5)
{
$meme_media = null;
$primary_keyword_type = $meme->primary_keyword_type;
if ($primary_keyword_type == 'action') {
@@ -40,7 +39,7 @@ public static function getSuitableMemeMedia(Meme $meme, $tolerance = 5)
$meme_media = self::getMemeMediaByKeywords($keywords, $tolerance);
}
} else if ($primary_keyword_type == 'emotion') {
} elseif ($primary_keyword_type == 'emotion') {
$meme_media = self::getMemeMediaByKeywords($meme->emotion_keywords, $tolerance, 'emotion_keywords');
if (is_null($meme_media)) {
@@ -48,8 +47,8 @@ public static function getSuitableMemeMedia(Meme $meme, $tolerance = 5)
$meme_media = self::getMemeMediaByKeywords($keywords, $tolerance);
}
} else if ($primary_keyword_type == 'misc') {
$meme_media = self::getMemeMediaByKeywords($meme->misc_keywords, $tolerance, 'misc_keywords');
} elseif ($primary_keyword_type == 'misc') {
$meme_media = self::getMemeMediaByKeywords($meme->misc_keywords, $tolerance, 'misc_keywords');
if (is_null($meme_media)) {
$keywords = array_merge($meme->action_keywords, $meme->emotion_keywords, $meme->keywords);
@@ -97,7 +96,7 @@ public static function generateMemeByCategory(Category $category)
$meme->background_media_id = self::generateBackgroundMediaWithRunware($meme_output->background)->id;
if (
//!is_null($meme->meme_media_id) &&
// !is_null($meme->meme_media_id) &&
! is_null($meme->background_media_id)
) {
$meme->status = self::STATUS_COMPLETED;
@@ -117,13 +116,13 @@ public static function generateMemeOutputByCategory(Category $category)
$random_keyword = Str::lower($category->name);
if (! is_null($category->parent_id)) {
$random_keyword = $category->parent->name . ' - ' . $random_keyword;
$random_keyword = $category->parent->name.' - '.$random_keyword;
}
if (! is_null($category->meme_angles)) {
$random_keyword .= ' - ' . collect($category->meme_angles)->random();
$random_keyword .= ' - '.collect($category->meme_angles)->random();
} elseif (! is_null($category->keywords)) {
$random_keyword .= ' - ' . collect($category->keywords)->random();
$random_keyword .= ' - '.collect($category->keywords)->random();
}
$prompt = "Write me 1 meme about {$random_keyword}";
@@ -170,7 +169,7 @@ public static function generateMemeOutputByCategory(Category $category)
$meme_output = (object) [
'success' => false,
'attempts' => $attempt, // Optional: track how many attempts were made
'error' => 'Failed to generate valid meme after ' . $retries . ' attempts',
'error' => 'Failed to generate valid meme after '.$retries.' attempts',
];
}
@@ -214,16 +213,14 @@ public static function getMemeMediaByKeywords(array $keywords, int $tolerance =
$meme_embedding = CloudflareAI::getVectorEmbeddingBgeSmall(implode(' ', $keywords));
$meme_medias = MemeMediaEmbedding::query()
->when(!is_empty($tag), function ($query) use ($tag) {
->when(! is_empty($tag), function ($query) use ($tag) {
return $query->where('tag', $tag);
})
->nearestNeighbors('embedding', $meme_embedding, Distance::L2)
->take($tolerance)
->get();
if ($meme_medias->count() > 0) {
$meme_media = $meme_medias->random()->meme_media;
}