Update
This commit is contained in:
@@ -3,18 +3,39 @@
|
||||
namespace App\Helpers\FirstParty\Maintenance;
|
||||
|
||||
use App\Helpers\FirstParty\AI\OpenAI;
|
||||
use App\Helpers\FirstParty\Meme\MemeGenerator;
|
||||
use App\Models\Category;
|
||||
use App\Models\MemeMedia;
|
||||
use ProtoneMedia\LaravelFFMpeg\Support\FFMpeg;
|
||||
|
||||
class MemeMediaMaintenance
|
||||
{
|
||||
public static function generateMemesByCategories()
|
||||
{
|
||||
Category::where('system_memes_generated_count', '<', 1)
|
||||
->chunk(10, function ($categories) {
|
||||
foreach ($categories as $category) {
|
||||
dump('Processing ' . $category->name);
|
||||
|
||||
$meme = MemeGenerator::generateMemeByCategory($category);
|
||||
|
||||
if (!is_null($meme)) {
|
||||
$category->system_memes_generated_count++;
|
||||
$category->save();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
public static function patchMemeKeywords()
|
||||
{
|
||||
$meme_medias = MemeMedia::whereNull('action_keywords')->get();
|
||||
|
||||
foreach ($meme_medias as $key => $meme_media) {
|
||||
|
||||
dump('Processing '.$key + 1 .'/'.$meme_medias->count().': '.$meme_media->name);
|
||||
dump('Processing ' . $key + 1 . '/' . $meme_medias->count() . ': ' . $meme_media->name);
|
||||
|
||||
$meme_keywords_response = OpenAI::getMemeKeywords($meme_media->name, $meme_media->description);
|
||||
|
||||
|
||||
@@ -92,13 +92,13 @@ public static function generateMemeByCategory(Category $category)
|
||||
}
|
||||
|
||||
if (! is_null($meme) && $meme->status == self::STATUS_PENDING) {
|
||||
// populate meme_id
|
||||
$meme->meme_id = self::getSuitableMemeMedia($meme)->id;
|
||||
$meme->background_id = self::generateBackgroundMediaWithRunware($meme_output->background)->id;
|
||||
// populate meme_media_id
|
||||
$meme->meme_media_id = self::getSuitableMemeMedia($meme)->id;
|
||||
$meme->background_media_id = self::generateBackgroundMediaWithRunware($meme_output->background)->id;
|
||||
|
||||
if (
|
||||
//!is_null($meme->meme_id) &&
|
||||
! is_null($meme->background_id)
|
||||
//!is_null($meme->meme_media_id) &&
|
||||
! is_null($meme->background_media_id)
|
||||
) {
|
||||
$meme->status = self::STATUS_COMPLETED;
|
||||
}
|
||||
|
||||
@@ -12,9 +12,9 @@ class FrontMediaController extends Controller
|
||||
{
|
||||
public function init(Request $request)
|
||||
{
|
||||
$meme = Meme::with('meme_media', 'background_media')->where('status', MemeGenerator::STATUS_COMPLETED)->take(1)->latest()->first();
|
||||
$meme = Meme::with('meme_media', 'background_media')->where('status', MemeGenerator::STATUS_COMPLETED)->inRandomOrder()->first();
|
||||
|
||||
$meme_media = MemeGenerator::getSuitableMemeMedia($meme);
|
||||
$meme_media = MemeGenerator::getSuitableMemeMedia($meme, 2);
|
||||
|
||||
return response()->json([
|
||||
'success' => [
|
||||
|
||||
@@ -47,6 +47,7 @@ class Category extends Model
|
||||
'sample_captions' => 'array',
|
||||
'keywords' => 'array',
|
||||
'payload' => 'object',
|
||||
'system_memes_generated_count' => 'int',
|
||||
];
|
||||
|
||||
protected $fillable = [
|
||||
@@ -61,6 +62,7 @@ class Category extends Model
|
||||
'sample_captions',
|
||||
'keywords',
|
||||
'payload',
|
||||
'system_memes_generated_count',
|
||||
];
|
||||
|
||||
/**
|
||||
|
||||
@@ -18,8 +18,8 @@
|
||||
* @property string $type
|
||||
* @property int|null $category_id
|
||||
* @property int|null $user_id
|
||||
* @property int|null $meme_id
|
||||
* @property int|null $background_id
|
||||
* @property int|null $meme_media_id
|
||||
* @property int|null $background_media_id
|
||||
* @property string $status
|
||||
* @property string $prompt
|
||||
* @property string|null $caption
|
||||
@@ -42,8 +42,8 @@ class Meme extends Model
|
||||
|
||||
'category_id' => 'int',
|
||||
'user_id' => 'int',
|
||||
'meme_id' => 'int',
|
||||
'background_id' => 'int',
|
||||
'meme_media_id' => 'int',
|
||||
'background_media_id' => 'int',
|
||||
|
||||
'meme_keywords' => 'array',
|
||||
'keywords' => 'array',
|
||||
@@ -58,8 +58,8 @@ class Meme extends Model
|
||||
'is_system',
|
||||
'category_id',
|
||||
'user_id',
|
||||
'meme_id',
|
||||
'background_id',
|
||||
'meme_media_id',
|
||||
'background_media_id',
|
||||
'status',
|
||||
'prompt',
|
||||
'caption',
|
||||
@@ -74,11 +74,11 @@ class Meme extends Model
|
||||
|
||||
public function meme_media()
|
||||
{
|
||||
return $this->hasOne(MemeMedia::class, 'id', 'meme_id');
|
||||
return $this->hasOne(MemeMedia::class, 'id', 'meme_media_id');
|
||||
}
|
||||
|
||||
public function background_media()
|
||||
{
|
||||
return $this->hasOne(BackgroundMedia::class, 'id', 'background_id');
|
||||
return $this->hasOne(BackgroundMedia::class, 'id', 'background_media_id');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,8 +34,8 @@ public function up(): void
|
||||
|
||||
$table->foreignId('category_id')->nullable();
|
||||
$table->foreignId('user_id')->nullable();
|
||||
$table->foreignId('meme_id')->nullable();
|
||||
$table->foreignId('background_id')->nullable();
|
||||
$table->foreignId('meme_media_id')->nullable();
|
||||
$table->foreignId('background_media_id')->nullable();
|
||||
|
||||
$table->enum('status', ['pending', 'completed'])->default('pending');
|
||||
$table->text('prompt');
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
Schema::table('categories', function (Blueprint $table) {
|
||||
$table->integer('system_memes_generated_count')->default(0);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
Schema::table('categories', function (Blueprint $table) {
|
||||
$table->dropColumn('system_memes_generated_count');
|
||||
});
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user