-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathApplication.php
More file actions
66 lines (55 loc) · 2.45 KB
/
Copy pathApplication.php
File metadata and controls
66 lines (55 loc) · 2.45 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<?php
/**
* Nextcloud - Replicate
*
*
* @author Julien Veyssier <julien-nc@posteo.net>
* @copyright Julien Veyssier 2022
*/
namespace OCA\Replicate\AppInfo;
use OCA\Replicate\SpeechToText\STTProvider;
use OCA\Replicate\TextProcessing\FreePromptProvider;
use OCA\Replicate\TextToImage\TextToImageProvider;
use OCP\AppFramework\App;
use OCP\AppFramework\Bootstrap\IBootContext;
use OCP\AppFramework\Bootstrap\IBootstrap;
use OCP\AppFramework\Bootstrap\IRegistrationContext;
use OCP\IAppConfig;
class Application extends App implements IBootstrap {
public const APP_ID = 'integration_replicate';
public const DEFAULT_IMAGE_GEN_NAME = 'stability-ai/stable-diffusion';
public const DEFAULT_IMAGE_GEN_VERSION = 'ac732df83cea7fff18b8472768c88ad041fa750ff7682a21affe81863cbe77e4';
public const WHISPER_VERSION = 'cdd97b257f93cb89dede1c7584e3f3dfc969571b357dbcee08e793740bedd854';
public const DEFAULT_LLM_NAME = 'mistralai/mistral-7b-instruct-v0.1';
public const DEFAULT_LLM_VERSION = '83b6a56e7c828e667f21fd596c338fd4f0039b46bcfa18d973e8e70e455fda70';
private IAppConfig $appConfig;
public function __construct(array $urlParams = []) {
parent::__construct(self::APP_ID, $urlParams);
$container = $this->getContainer();
$this->appConfig = $container->get(IAppConfig::class);
}
public function register(IRegistrationContext $context): void {
$apiKey = $this->appConfig->getValueString(self::APP_ID, 'api_key');
if ($apiKey !== '') {
$context->registerSpeechToTextProvider(STTProvider::class);
$context->registerTextToImageProvider(TextToImageProvider::class);
$context->registerTextProcessingProvider(FreePromptProvider::class);
$context->registerTaskProcessingProvider(\OCA\Replicate\TaskProcessing\TextToImageProvider::class);
$context->registerTaskProcessingProvider(\OCA\Replicate\TaskProcessing\SpeechToTextProvider::class);
}
}
public function boot(IBootContext $context): void {
// Load PHP Exif Library for adding image metadata
\spl_autoload_register(function ($class) {
if (\substr_compare($class, 'OCA\OpenAi\Vendor\lsolesen\\pel\\', 0, 13) === 0) {
$classname = \str_replace('OCA\\OpenAi\\Vendor\\lsolesen\\pel\\', '', $class);
$load = \realpath(__DIR__ . '/../../vendor/fileeye/pel/src/' . $classname . '.php');
if ($load !== \false) {
include_once \realpath($load);
}
}
});
// Load getID3 library for adding audio metadata
require_once(__DIR__ . '/../../vendor/james-heinrich/getid3/getid3/getid3.php');
}
}