ISpeechToTextProvider#transcribeFile: Pass \OCP\Files\File instead of path

Signed-off-by: Marcel Klehr <mklehr@gmx.net>
This commit is contained in:
Marcel Klehr 2023-04-12 16:52:11 +02:00
parent 1833d932ef
commit ef7ce88cee
3 changed files with 23 additions and 6 deletions

View File

@ -31,6 +31,9 @@ namespace OC\SpeechToText;
use InvalidArgumentException;
use OC\AppFramework\Bootstrap\Coordinator;
use OCP\BackgroundJob\IJobList;
use OCP\Files\File;
use OCP\Files\IRootFolder;
use OCP\Files\NotFoundException;
use OCP\IServerContainer;
use OCP\PreConditionNotMetException;
use OCP\SpeechToText\ISpeechToTextManager;
@ -49,6 +52,7 @@ class SpeechToTextManager implements ISpeechToTextManager {
private Coordinator $coordinator,
private LoggerInterface $logger,
private IJobList $jobList,
private IRootFolder $rootFolder,
) {
}
@ -90,6 +94,14 @@ class SpeechToTextManager implements ISpeechToTextManager {
if (!$this->hasProviders()) {
throw new PreConditionNotMetException('No SpeechToText providers have been registered');
}
try {
$node = $this->rootFolder->get($path);
} catch (NotFoundException $e) {
throw new InvalidArgumentException('File does not exist: ' . $path);
}
if (!($node instanceof File)) {
throw new InvalidArgumentException('Path does not resolve to a file');
}
$this->jobList->add(TranscriptionJob::class, [ 'path' => $path, 'context' => $context]);
}
@ -99,10 +111,14 @@ class SpeechToTextManager implements ISpeechToTextManager {
throw new PreConditionNotMetException('No SpeechToText providers have been registered');
}
if (!file_exists($path)) {
throw new InvalidArgumentException('File does not exist');
try {
$node = $this->rootFolder->get($path);
if (!($node instanceof File)) {
throw new InvalidArgumentException('Path does not resolve to a file');
}
return $provider->transcribeFile($node);
} catch (NotFoundException $e) {
throw new InvalidArgumentException('File does not exist: ' . $path);
}
return $provider->transcribeFile($path);
}
}

View File

@ -43,7 +43,7 @@ interface ISpeechToTextManager {
* Will schedule a transcription process in the background. The result will become available
* with the \OCP\SpeechToText\Events\TranscriptionFinishedEvent
* You should add context information to the context array to re-identify the transcription result as
* as belonging to your transcription request.
* belonging to your transcription request.
*
* @since 27.0.0
* @throws PreConditionNotMetException If no provider was registered but this method was still called

View File

@ -26,6 +26,7 @@ declare(strict_types=1);
namespace OCP\SpeechToText;
use OCP\Files\File;
use RuntimeException;
/**
@ -41,5 +42,5 @@ interface ISpeechToTextProvider {
* @since 27.0.0
* @throws RuntimeException If the text could not be transcribed
*/
public function transcribeFile(string $path): string;
public function transcribeFile(File $file): string;
}