option('id')) { $query->where('id', $id); } elseif (!$this->option('all')) { // Varsayılan: eksik resmi olanlar $query->where(function ($q) { $q->whereNull('cover_image')->orWhere('cover_image', '') ->orWhereNull('banner_image')->orWhere('banner_image', ''); }); } $limit = (int) $this->option('limit'); $animes = $query->limit($limit)->get(); if ($animes->isEmpty()) { $this->info('Eksik resim bulunamadı.'); return; } $this->info("İşlenecek: {$animes->count()} anime"); $bar = $this->output->createProgressBar($animes->count()); $bar->start(); $ok = $skip = $fail = 0; foreach ($animes as $anime) { try { $updated = $service->fillImages($anime); $updated ? $ok++ : $skip++; } catch (\Throwable $e) { $fail++; $this->newLine(); $this->warn("#{$anime->id} {$anime->title}: {$e->getMessage()}"); } $bar->advance(); usleep(500_000); // AniList rate limit: 90 req/dakika } $bar->finish(); $this->newLine(2); $this->info("Bitti — güncellendi: {$ok}, değişmedi: {$skip}, hata: {$fail}"); } }