Files
nextcloud-recognize/lib/Classifiers/Video/MovinetClassifier.php
Carl Schwan 8d413789d6 chore: Add Sabre types to psalm
So that psalm can detects issues with the DAV related code.

Signed-off-by: Carl Schwan <carlschwan@kde.org>
2025-12-19 10:14:11 +01:00

50 lines
1.7 KiB
PHP

<?php
/*
* Copyright (c) 2021-2022 The Recognize contributors.
* This file is licensed under the Affero General Public License version 3 or later. See the COPYING file.
*/
declare(strict_types=1);
namespace OCA\Recognize\Classifiers\Video;
use OCA\Recognize\Classifiers\Classifier;
use OCA\Recognize\Exception\Exception;
use OCA\Recognize\Service\Logger;
use OCA\Recognize\Service\QueueService;
use OCA\Recognize\Service\TagManager;
use OCP\AppFramework\Services\IAppConfig;
use OCP\Files\IRootFolder;
use OCP\IPreview;
use OCP\ITempManager;
use Override;
final class MovinetClassifier extends Classifier {
public const VIDEO_TIMEOUT = 480; // seconds
public const MODEL_NAME = 'movinet';
private TagManager $tagManager;
public function __construct(Logger $logger, IAppConfig $config, TagManager $tagManager, QueueService $queue, IRootFolder $rootFolder, ITempManager $tempManager, IPreview $previewProvider) {
parent::__construct($logger, $config, $rootFolder, $queue, $tempManager, $previewProvider);
$this->tagManager = $tagManager;
}
#[Override]
public function classify(array $queueFiles): void {
if ($this->config->getAppValueString('tensorflow.purejs', 'false') === 'true') {
throw new Exception('Movinet does not support WASM mode');
} else {
$timeout = self::VIDEO_TIMEOUT;
}
$classifierProcess = $this->classifyFiles(self::MODEL_NAME, $queueFiles, $timeout);
/** @var \OCA\Recognize\Db\QueueFile $queueFile */
/** @var list<string> $results */
foreach ($classifierProcess as $queueFile => $results) {
$this->tagManager->assignTags($queueFile->getFileId(), $results);
$this->config->setAppValueString(self::MODEL_NAME.'.status', 'true');
$this->config->setAppValueString(self::MODEL_NAME.'.lastFile', (string)time());
}
}
}