where('type', 'video') ->where('source_type', 'upload'); if (! $this->option('force')) { $query->whereNull('thumbnail_path'); } $videos = $query->get(); if ($videos->isEmpty()) { $this->info('Keine Videos zum Verarbeiten gefunden.'); return self::SUCCESS; } $this->info(sprintf('%d Video(s) werden verarbeitet...', $videos->count())); $generated = 0; $failed = 0; foreach ($videos as $video) { $thumbnailPath = $service->generateVideoThumbnail($video); if ($thumbnailPath !== null) { $video->update(['thumbnail_path' => $thumbnailPath]); $this->line(" {$video->getDisplayName()}"); $generated++; } else { $this->warn(" ✗ {$video->getDisplayName()} (Poster konnte nicht erzeugt werden)"); $failed++; } } $this->newLine(); $this->info(sprintf('Fertig: %d erzeugt, %d fehlgeschlagen.', $generated, $failed)); return self::SUCCESS; } }