podcastartgenerator/site/app/Console/Commands/MapLegacyArtworkToLegacyEpisodeCommand.php

61 lines
1.8 KiB
PHP
Raw Permalink Normal View History

<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Http;
use App\Models\Artwork;
use App\Models\Episode;
class MapLegacyArtworkToLegacyEpisodeCommand extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'naart:map-legacy';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Maps legacy artwork to the legacy episode it related to.';
/**
* Execute the console command.
*/
public function handle()
{
$artworks = Artwork::whereNotNull('legacy_id')->get();
foreach ($artworks as $artwork) {
if ($artwork->id > 76200) {
$legacyDetailResponse = $this->getArtworkInfoFromApi($artwork->legacy_id);
$response = $legacyDetailResponse->object();
if ($response->artwork->episode_id) {
$episode = Episode::where('legacy_id', $response->artwork->episode_id)->first();
if ($episode) {
$artwork->episode_id = $episode->id;
$this->line('Artwork ID ' . $artwork->id . ' is mapped to Episode ID ' . $episode->id);
if ($artwork->isDirty()) {
$this->line('This is a new mapping.');
$artwork->save();
}
}
}
}
}
}
private function getArtworkInfoFromApi($artwork_legacy_id) {
$response = Http::timeout(180)
->get('https://noagendaartgenerator.com/artworkapi/' . $artwork_legacy_id,
[
'p' => '7476',
]
);
return $response;
}
}