Skip to content

Commit

Permalink
feat: add command to remove external player from youtube imported videos
Browse files Browse the repository at this point in the history
  • Loading branch information
Yurujai committed Apr 2, 2024
1 parent aa326a5 commit 9e9ea55
Showing 1 changed file with 80 additions and 0 deletions.
80 changes: 80 additions & 0 deletions Command/ImportYouTubeDeleteExternalPlayerCommand.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
<?php

declare(strict_types=1);

namespace Pumukit\YoutubeBundle\Command;

use Doctrine\ODM\MongoDB\DocumentManager;
use Pumukit\SchemaBundle\Document\MultimediaObject;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Helper\ProgressBar;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;

final class ImportYouTubeDeleteExternalPlayerCommand extends Command
{
private $documentManager;

public function __construct(DocumentManager $documentManager)
{
$this->documentManager = $documentManager;
parent::__construct();
}

protected function configure(): void
{
$this
->setName('pumukit:youtube:import:delete:externalplayer')
->setDescription('Delete external player on multimedia objects imported from YouTube')
->setHelp(
<<<'EOT'
Delete external player on multimedia objects imported from YouTube
Usage: php bin/console pumukit:youtube:import:delete: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' => true],
]);
}

private function updateMultimediaObject(MultimediaObject $multimediaObject): void
{
$multimediaObject->removeProperty('externalplayer');
}
}

0 comments on commit 9e9ea55

Please sign in to comment.