feat: adding ability to optimize and import older site content.
This commit is contained in:
105
site/database/seeders/SeedFromOldApiSeeder.php
Normal file
105
site/database/seeders/SeedFromOldApiSeeder.php
Normal file
@@ -0,0 +1,105 @@
|
||||
<?php
|
||||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
|
||||
use Illuminate\Database\Seeder;
|
||||
use Illuminate\Support\Facades\Http;
|
||||
use Illuminate\Support\Str;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
use App\Models\Artist;
|
||||
use App\Models\Artwork;
|
||||
use App\Models\Episode;
|
||||
use App\Models\Podcast;
|
||||
use App\Models\Overlay;
|
||||
use App\Jobs\StashAndOptimizeLegacyArtworkJob;
|
||||
use App\Jobs\ImportLegacyUserJob;
|
||||
use Carbon\Carbon;
|
||||
|
||||
class SeedFromOldApiSeeder extends Seeder
|
||||
{
|
||||
/**
|
||||
* Run the database seeds.
|
||||
*/
|
||||
public function run(): void
|
||||
{
|
||||
//$this->populateLegacyArtworks();
|
||||
//die();
|
||||
$current_page = 283;
|
||||
$totalArtworks = 0;
|
||||
$missingArtworks = 0;
|
||||
$missingModel = 0;
|
||||
$response = $this->getResponseFromApi($current_page);
|
||||
$last_page = $response->object()->users->last_page;
|
||||
while ($current_page <= $last_page) {
|
||||
$this->command->info('Getting Page ' . $current_page);
|
||||
foreach ($response->object()->users->data as $user) {
|
||||
$this->command->line('Getting Art for ' . $user->profile->name . ', found ' . count($user->artworks) . ' artworks.');
|
||||
$totalArtworks += count($user->artworks);
|
||||
$legacyUser = Artist::where('name', $user->profile->name)->first();
|
||||
if (!$legacyUser) {
|
||||
ImportLegacyUserJob::dispatch($user);
|
||||
} else {
|
||||
if ($legacyUser->artworks->count() < count($user->artworks)) {
|
||||
$countDiff = count($user->artworks) - $legacyUser->artworks->count();
|
||||
$missingArtworks += $countDiff;
|
||||
$this->command->comment('Artist ID '
|
||||
. $legacyUser->id
|
||||
. ' '
|
||||
. $legacyUser->name
|
||||
. ' has '
|
||||
. $legacyUser->artworks->count()
|
||||
. ' artworks.');
|
||||
$this->command->error('Missing ' . $countDiff . ' artworks.');
|
||||
foreach ($user->artworks as $artwork) {
|
||||
$date = Carbon::parse($artwork->created_at);
|
||||
$basename = $date->format('Y')
|
||||
. '/' . $date->format('m')
|
||||
. '/' . Str::slug($legacyUser->name)
|
||||
. '-' . Str::slug($artwork->title)
|
||||
. '_' . $artwork->id . '.jpg';
|
||||
if (Storage::disk('static')->exists('artworks/' . $basename)) {
|
||||
$artworkModel = Artwork::where('filename', $basename)->first();
|
||||
if (!$artworkModel) {
|
||||
$missingModel++;
|
||||
$this->command->error($basename . ' exists.');
|
||||
StashAndOptimizeLegacyArtworkJob::dispatch($legacyUser, $artwork);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
} else {
|
||||
$this->command->line('Locally stored all of ' . $legacyUser->name . '\'s artworks.');
|
||||
}
|
||||
}
|
||||
}
|
||||
$current_page++;
|
||||
$response = $this->getResponseFromApi($current_page);
|
||||
}
|
||||
$this->command->info('Total Artworks: ' . $totalArtworks);
|
||||
$this->command->info('Total Missing: ' . $missingArtworks);
|
||||
$this->command->info('Total Missing Model: ' . $missingModel);
|
||||
}
|
||||
|
||||
private function getResponseFromApi($current_page) {
|
||||
$response = Http::timeout(180)
|
||||
->get('https://noagendaartgenerator.com/artistapi',
|
||||
[
|
||||
'p' => '7476',
|
||||
'page' => $current_page,
|
||||
]
|
||||
);
|
||||
return $response;
|
||||
}
|
||||
|
||||
private function populateLegacyArtworks() {
|
||||
$artworks = Artwork::whereNull('legacy_id')->get();
|
||||
foreach ($artworks as $artwork) {
|
||||
$file = pathinfo($artwork->filename);
|
||||
$filename = explode('_', $file['filename']);
|
||||
$legacy_id = end($filename);
|
||||
$artwork->legacy_id = $legacy_id;
|
||||
$artwork->save();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user