terrarium-web/src/Motion/SnapshotRepository.php
2020-03-21 18:39:12 +01:00

56 lines
1.4 KiB
PHP

<?php
namespace App\Motion;
use Symfony\Component\Filesystem\Filesystem;
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
use Symfony\Component\Finder\Finder;
use App\Motion\Snapshot;
/**
* class SnapshotRepository.
*
* @author Simon Vieille <simon@deblan.fr>
*/
class SnapshotRepository
{
protected Finder $finder;
protected ParameterBagInterface $parameters;
public function __construct(ParameterBagInterface $parameters)
{
$this->finder = new Finder();
$this->parameters = $parameters;
}
public function find(): array
{
$objects = [];
$files = $this->finder
->files()
->in($this->parameters->get('motion_snapshots_directory'))
->name('/.*\.mp4$/s')
->sortByModifiedTime();
foreach ($files as $file) {
$date = basename($file->getPath());
$time = str_replace(['.mp4', '-'], ['', ':'], $file->getBasename());
$movie = $file->getPath().'/'.$file->getBasename();
$thumbnail = str_replace('.mp4', '.jpg', $movie);
$snapshot = new Snapshot();
$snapshot
->setDate(new \DateTime($date.' '.$time))
->setMovie($movie)
->setThumbnail($thumbnail);
$objects[] = $snapshot;
}
return $objects;
}
}