From b18f3fba8b33d542d165493018b2d62372492422 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Mon, 26 Jun 2023 03:21:38 -0600 Subject: [PATCH] Update IG Import commands, fix stalled import queue --- .../Commands/ImportRemoveDeletedAccounts.php | 61 +++++++++++++++++++ app/Console/Commands/TransformImports.php | 22 ++++++- app/Console/Kernel.php | 3 +- 3 files changed, 84 insertions(+), 2 deletions(-) create mode 100644 app/Console/Commands/ImportRemoveDeletedAccounts.php diff --git a/app/Console/Commands/ImportRemoveDeletedAccounts.php b/app/Console/Commands/ImportRemoveDeletedAccounts.php new file mode 100644 index 000000000..e1e6acafd --- /dev/null +++ b/app/Console/Commands/ImportRemoveDeletedAccounts.php @@ -0,0 +1,61 @@ +whereNotNull('status') + ->whereIn('status', ['deleted', 'delete']) + ->where('id', '>', $skipMinId) + ->limit(500) + ->pluck('id'); + + if(!$deletedIds || !$deletedIds->count()) { + return; + } + + foreach($deletedIds as $did) { + if(Storage::exists('imports/' . $did)) { + Storage::deleteDirectory('imports/' . $did); + } + + ImportPost::where('user_id', $did)->delete(); + $skipMinId = $did; + } + + Cache::put(self::CACHE_KEY, $skipMinId, 864000); + } +} diff --git a/app/Console/Commands/TransformImports.php b/app/Console/Commands/TransformImports.php index a08f7ed76..3b9509387 100644 --- a/app/Console/Commands/TransformImports.php +++ b/app/Console/Commands/TransformImports.php @@ -38,7 +38,7 @@ class TransformImports extends Command return; } - $ips = ImportPost::whereNull('status_id')->whereSkipMissingMedia(false)->take(100)->get(); + $ips = ImportPost::whereNull('status_id')->where('skip_missing_media', '!=', true)->take(200)->get(); if(!$ips->count()) { return; @@ -48,7 +48,27 @@ class TransformImports extends Command $id = $ip->user_id; $pid = $ip->profile_id; $profile = Profile::find($pid); + if(!$profile) { + $ip->skip_missing_media = true; + $ip->save(); + continue; + } + $idk = ImportService::getId($ip->user_id, $ip->creation_year, $ip->creation_month, $ip->creation_day); + $exists = ImportPost::whereUserId($id)->where('filename', $ip->filename)->first(); + if($exists) { + $cYear = str_pad($exists->creation_year, 2, 0, STR_PAD_LEFT); + $cMonth = str_pad($exists->creation_month, 2, 0, STR_PAD_LEFT); + $cDay = str_pad($exists->creation_day, 2, 0, STR_PAD_LEFT); + if( $cYear == $idk['year'] && + $cMonth == $idk['month'] && + $cDay == $idk['day'] + ) { + $ip->skip_missing_media = true; + $ip->save(); + continue; + } + } if(Storage::exists('imports/' . $id . '/' . $ip->filename) === false) { ImportService::clearAttempts($profile->id); diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php index 0fb20f630..7b1f632ed 100644 --- a/app/Console/Kernel.php +++ b/app/Console/Kernel.php @@ -39,7 +39,8 @@ class Kernel extends ConsoleKernel if(config('import.instagram.enabled')) { $schedule->command('app:transform-imports')->everyFourMinutes(); - $schedule->command('app:import-upload-garbage-collection')->everyFiveMinutes(); + $schedule->command('app:import-upload-garbage-collection')->hourlyAt(51); + $schedule->command('app:import-remove-deleted-accounts')->hourlyAt(37); } }