Update
This commit is contained in:
@@ -3,18 +3,39 @@
|
|||||||
namespace App\Helpers\FirstParty\Maintenance;
|
namespace App\Helpers\FirstParty\Maintenance;
|
||||||
|
|
||||||
use App\Helpers\FirstParty\AI\OpenAI;
|
use App\Helpers\FirstParty\AI\OpenAI;
|
||||||
|
use App\Helpers\FirstParty\Meme\MemeGenerator;
|
||||||
|
use App\Models\Category;
|
||||||
use App\Models\MemeMedia;
|
use App\Models\MemeMedia;
|
||||||
use ProtoneMedia\LaravelFFMpeg\Support\FFMpeg;
|
use ProtoneMedia\LaravelFFMpeg\Support\FFMpeg;
|
||||||
|
|
||||||
class MemeMediaMaintenance
|
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()
|
public static function patchMemeKeywords()
|
||||||
{
|
{
|
||||||
$meme_medias = MemeMedia::whereNull('action_keywords')->get();
|
$meme_medias = MemeMedia::whereNull('action_keywords')->get();
|
||||||
|
|
||||||
foreach ($meme_medias as $key => $meme_media) {
|
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);
|
$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) {
|
if (! is_null($meme) && $meme->status == self::STATUS_PENDING) {
|
||||||
// populate meme_id
|
// populate meme_media_id
|
||||||
$meme->meme_id = self::getSuitableMemeMedia($meme)->id;
|
$meme->meme_media_id = self::getSuitableMemeMedia($meme)->id;
|
||||||
$meme->background_id = self::generateBackgroundMediaWithRunware($meme_output->background)->id;
|
$meme->background_media_id = self::generateBackgroundMediaWithRunware($meme_output->background)->id;
|
||||||
|
|
||||||
if (
|
if (
|
||||||
//!is_null($meme->meme_id) &&
|
//!is_null($meme->meme_media_id) &&
|
||||||
! is_null($meme->background_id)
|
! is_null($meme->background_media_id)
|
||||||
) {
|
) {
|
||||||
$meme->status = self::STATUS_COMPLETED;
|
$meme->status = self::STATUS_COMPLETED;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,9 +12,9 @@ class FrontMediaController extends Controller
|
|||||||
{
|
{
|
||||||
public function init(Request $request)
|
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([
|
return response()->json([
|
||||||
'success' => [
|
'success' => [
|
||||||
|
|||||||
@@ -47,6 +47,7 @@ class Category extends Model
|
|||||||
'sample_captions' => 'array',
|
'sample_captions' => 'array',
|
||||||
'keywords' => 'array',
|
'keywords' => 'array',
|
||||||
'payload' => 'object',
|
'payload' => 'object',
|
||||||
|
'system_memes_generated_count' => 'int',
|
||||||
];
|
];
|
||||||
|
|
||||||
protected $fillable = [
|
protected $fillable = [
|
||||||
@@ -61,6 +62,7 @@ class Category extends Model
|
|||||||
'sample_captions',
|
'sample_captions',
|
||||||
'keywords',
|
'keywords',
|
||||||
'payload',
|
'payload',
|
||||||
|
'system_memes_generated_count',
|
||||||
];
|
];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -18,8 +18,8 @@
|
|||||||
* @property string $type
|
* @property string $type
|
||||||
* @property int|null $category_id
|
* @property int|null $category_id
|
||||||
* @property int|null $user_id
|
* @property int|null $user_id
|
||||||
* @property int|null $meme_id
|
* @property int|null $meme_media_id
|
||||||
* @property int|null $background_id
|
* @property int|null $background_media_id
|
||||||
* @property string $status
|
* @property string $status
|
||||||
* @property string $prompt
|
* @property string $prompt
|
||||||
* @property string|null $caption
|
* @property string|null $caption
|
||||||
@@ -42,8 +42,8 @@ class Meme extends Model
|
|||||||
|
|
||||||
'category_id' => 'int',
|
'category_id' => 'int',
|
||||||
'user_id' => 'int',
|
'user_id' => 'int',
|
||||||
'meme_id' => 'int',
|
'meme_media_id' => 'int',
|
||||||
'background_id' => 'int',
|
'background_media_id' => 'int',
|
||||||
|
|
||||||
'meme_keywords' => 'array',
|
'meme_keywords' => 'array',
|
||||||
'keywords' => 'array',
|
'keywords' => 'array',
|
||||||
@@ -58,8 +58,8 @@ class Meme extends Model
|
|||||||
'is_system',
|
'is_system',
|
||||||
'category_id',
|
'category_id',
|
||||||
'user_id',
|
'user_id',
|
||||||
'meme_id',
|
'meme_media_id',
|
||||||
'background_id',
|
'background_media_id',
|
||||||
'status',
|
'status',
|
||||||
'prompt',
|
'prompt',
|
||||||
'caption',
|
'caption',
|
||||||
@@ -74,11 +74,11 @@ class Meme extends Model
|
|||||||
|
|
||||||
public function meme_media()
|
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()
|
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('category_id')->nullable();
|
||||||
$table->foreignId('user_id')->nullable();
|
$table->foreignId('user_id')->nullable();
|
||||||
$table->foreignId('meme_id')->nullable();
|
$table->foreignId('meme_media_id')->nullable();
|
||||||
$table->foreignId('background_id')->nullable();
|
$table->foreignId('background_media_id')->nullable();
|
||||||
|
|
||||||
$table->enum('status', ['pending', 'completed'])->default('pending');
|
$table->enum('status', ['pending', 'completed'])->default('pending');
|
||||||
$table->text('prompt');
|
$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