feat: adding ability to optimize and import older site content.
This commit is contained in:
60
site/database/seeders/EpisodeSeeder.php
Normal file
60
site/database/seeders/EpisodeSeeder.php
Normal file
@@ -0,0 +1,60 @@
|
||||
<?php
|
||||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
|
||||
use Illuminate\Database\Seeder;
|
||||
use App\Models\Episode;
|
||||
use App\Models\Podcast;
|
||||
use Illuminate\Support\Facades\Http;
|
||||
use Illuminate\Support\Str;
|
||||
use Carbon\Carbon;
|
||||
|
||||
class EpisodeSeeder extends Seeder
|
||||
{
|
||||
/**
|
||||
* Run the database seeds.
|
||||
*/
|
||||
public function run(): void
|
||||
{
|
||||
$current_page = 1;
|
||||
$response = $this->getResponseFromApi($current_page);
|
||||
$last_page = $response->object()->last_page;
|
||||
$this->command->info('Last Page: ' . $last_page);
|
||||
$podcast = Podcast::find(1);
|
||||
while ($current_page <= $last_page) {
|
||||
$this->command->info('Getting Page ' . $current_page);
|
||||
foreach ($response->object()->data as $episode) {
|
||||
$podcastEpisode = Episode::where('title', $episode->title)->first();
|
||||
if (!$podcastEpisode) {
|
||||
$podcastEpisode = Episode::factory()->state([
|
||||
'podcast_id' => 1,
|
||||
'episode_date' => Carbon::parse($episode->show_date),
|
||||
'published' => (bool)$episode->published,
|
||||
'artwork_id' => null,
|
||||
'slug' => $episode->episode_number . '_' . Str::slug($episode->title),
|
||||
'title' => $episode->title,
|
||||
'mp3' => $episode->link,
|
||||
'created_at' => Carbon::parse($episode->created_at),
|
||||
'updated_at' => Carbon::parse($episode->updated_at),
|
||||
'legacy_id' => $episode->id ?? null
|
||||
])->create();
|
||||
} else {
|
||||
$podcastEpisode->legacy_id = $episode->id ?? null;
|
||||
if ($podcastEpisode->isDirty()) {
|
||||
$podcastEpisode->save();
|
||||
}
|
||||
}
|
||||
$this->command->info('Created ' . $episode->show_date . ' - (' . $episode->episode_number . ') ' . $episode->title);
|
||||
}
|
||||
$current_page++;
|
||||
$response = $this->getResponseFromApi($current_page);
|
||||
}
|
||||
}
|
||||
|
||||
private function getResponseFromApi($current_page) {
|
||||
$response = Http::timeout(180)
|
||||
->get('https://noagendaartgenerator.com/episodesjson?p=7476&page=' . $current_page);
|
||||
return $response;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user