From 9c123b946f044472ac237797a451328db9b13bd3 Mon Sep 17 00:00:00 2001 From: eller <23046078+ellermister@users.noreply.github.com> Date: Thu, 5 Sep 2024 08:12:51 +0000 Subject: [PATCH] =?UTF-8?q?=F0=9F=A7=AD=20Optimze=20download=20video=20job?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Jobs/DownloadVideoJob.php | 2 ++ app/Jobs/UpdateFavListJob.php | 9 +++++++++ routes/console.php | 4 +--- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/app/Jobs/DownloadVideoJob.php b/app/Jobs/DownloadVideoJob.php index b0e1a56..444ce06 100644 --- a/app/Jobs/DownloadVideoJob.php +++ b/app/Jobs/DownloadVideoJob.php @@ -72,6 +72,8 @@ public function updateVideoStatus() $savePath = sprintf('%s/%s.mp4', $videoPath, $this->vInfo['id']); if (is_file($savePath)) { redis()->hSet('video_downloaded', $this->vInfo['id'], 1); + }else{ + redis()->hDel('video_downloaded', $this->vInfo['id']); } } } diff --git a/app/Jobs/UpdateFavListJob.php b/app/Jobs/UpdateFavListJob.php index 73d580c..1d9206e 100644 --- a/app/Jobs/UpdateFavListJob.php +++ b/app/Jobs/UpdateFavListJob.php @@ -2,9 +2,11 @@ namespace App\Jobs; +use App\Console\Commands\DownloadVideo; use Arr; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Queue\Queueable; +use Log; class UpdateFavListJob implements ShouldQueue { @@ -141,6 +143,13 @@ public function pullFavList($id) foreach ($favList as $video) { redis()->set(sprintf('video:%d', $video['id']), json_encode($video, JSON_UNESCAPED_UNICODE)); + + $exist = redis()->hGet('video_downloaded', $video['id']); + if(!$exist && !video_has_invalid($video)){ + Log::info(sprintf('create download video job: %s', $video['title'])); + $job = new DownloadVideoJob($video); + dispatch($job); + } } } diff --git a/routes/console.php b/routes/console.php index 16d8d04..14f4225 100644 --- a/routes/console.php +++ b/routes/console.php @@ -4,6 +4,4 @@ Schedule::call(function () { Artisan::call('app:update-fav'); -})->hourly()->onSuccess(function () { - Artisan::call('app:download-video'); -}); +})->everyFiveMinutes(); \ No newline at end of file