diff --git a/Command/ImportYouTubeExternalPlayerCommand.php b/Command/ImportYouTubeExternalPlayerCommand.php new file mode 100644 index 0000000..84592d1 --- /dev/null +++ b/Command/ImportYouTubeExternalPlayerCommand.php @@ -0,0 +1,82 @@ +documentManager = $documentManager; + parent::__construct(); + } + + protected function configure(): void + { + $this + ->setName('pumukit:youtube:import:externalplayer') + ->setDescription('Add external player to multimedia objects to show Youtube videos') + ->setHelp( + <<<'EOT' + +Add external player to multimedia objects to show Youtube videos + +Usage: php bin/console pumukit:youtube:import:externalplayer + +EOT + ) + ; + } + + protected function execute(InputInterface $input, OutputInterface $output): int + { + $multimediaObjects = $this->obtainMultimediaObjects(); + + $progressBar = new ProgressBar($output, count($multimediaObjects)); + $progressBar->start(); + + $count = 0; + foreach ($multimediaObjects as $multimediaObject) { + $progressBar->advance(); + ++$count; + + $this->updateMultimediaObject($multimediaObject); + + if (0 == $count % 50) { + $this->documentManager->flush(); + } + } + + $progressBar->finish(); + + $this->documentManager->flush(); + $this->documentManager->clear(); + + return 0; + } + + private function obtainMultimediaObjects() + { + return $this->documentManager->getRepository(MultimediaObject::class)->findBy([ + 'properties.youtube_import_id' => ['$exists' => true], + 'properties.externalplayer' => ['$exists' => false], + ]); + } + + private function updateMultimediaObject(MultimediaObject $multimediaObject): void + { + $externalPlayer = 'https://www.youtube.com/embed/'.$multimediaObject->getProperty('youtube_import_id'); + $multimediaObject->setProperty('externalplayer', $externalPlayer); + $multimediaObject->setType(MultimediaObject::TYPE_EXTERNAL); + } +}