3#include <openssl/evp.h>
4#include <openssl/err.h>
11 thread.addTimeSliceClient(
this);
18 thread.signalThreadShouldExit();
25 thread.removeTimeSliceClient(
this);
27 bool threadExitedSafely =
thread.stopThread(2000);
28 if (!threadExitedSafely)
62 std::set<String> fileNames;
63 for (DirectoryEntry entry : RangedDirectoryIterator(directory,
true,
"*.kaf;*.wav;*.KAF;*.WAV"))
65 auto file = entry.getFile();
66 auto name = file.getFileNameWithoutExtension();
67 auto catID = name.upToFirstOccurrenceOf(
"_",
false,
false);
68 catID = (catID ==
"AMBROOM") ?
"AMBRoom" : catID;
69 catID = (catID ==
"AMBUrb") ?
"AMBUrbn" : catID;
75 if (!fileNames.count(name))
77 fileNames.insert(name);
86 String dirModificationDate =
m_directory.getLastModificationTime().toString(
true,
true);
88 String lastRecordedModificationDate;
95 if (ggmlDataFile.existsAsFile() ==
false)
101 if (textEmbeddingsStatusFile.exists() ==
false)
103 textEmbeddingsStatusFile.create();
119 DynamicObject::Ptr ttfStatus(
new DynamicObject());
124 FileOutputStream stream(textEmbeddingsStatusFile);
125 if (stream.openedOk())
127 stream.setPosition(0);
129 JSON::writeToStream(stream, ttfStatus.get());
134 DBG(
"ttf embeddings update aborted");
135 textEmbeddingsStatusFile.deleteFile();
141 auto ttfStatusJSON = JSON::parse(textEmbeddingsStatusFile);
154 !
thread.threadShouldExit())
177 DynamicObject::Ptr ttfStatus(
new DynamicObject());
182 FileOutputStream stream(textEmbeddingsStatusFile);
183 if (stream.openedOk())
185 stream.setPosition(0);
187 JSON::writeToStream(stream, ttfStatus.get());
197 jassert(folder.isDirectory());
199 for (
const auto& entry : juce::RangedDirectoryIterator(folder,
true))
201 totalSize += entry.getFileSize();
211 if (file.existsAsFile())
213 auto json = JSON::parse(file);
215 for (
int i = 0; i < result.size(); ++i)
217 if (
thread.threadShouldExit())
236 if (file.existsAsFile())
238 Array<int> indicesToRemove;
239 auto json = JSON::parse(file);
242 Array<String> onlyFileNamesArrayFromFileSystem;
245 onlyFileNamesArrayFromFileSystem.add(f.getFileName());
248 auto embeddingsArray = *result.getArray();
250 for (
int i = 0; i < embeddingsArray.size(); ++i)
253 File(embeddingsArray[i].getProperty(
fileNameIdentifier, 0).toString()).getFullPathName();
254 auto fileName = File(fileFullPath).getFileName();
257 if (onlyFileNamesArrayFromFileSystem.contains(fileName) ==
false)
259 indicesToRemove.add(i);
264 if (indicesToRemove.size() > 0)
267 std::sort(indicesToRemove.begin(), indicesToRemove.end(), std::greater<int>());
269 for (
auto& i : indicesToRemove)
271 embeddingsArray.remove(i);
275 DynamicObject::Ptr updatedJson(json.getDynamicObject());
280 FileOutputStream jsonOutStream(file);
281 jsonOutStream.setPosition(0);
282 jsonOutStream.truncate();
283 JSON::writeToStream(jsonOutStream, updatedJson.get());
300 if (file.existsAsFile())
302 auto json = JSON::parse(file);
304 for (
int i = 0; i < result.size(); ++i)
306 if (
thread.threadShouldExit())
327 if (
thread.threadShouldExit())
333 String filenameToCheck = file.getFileName();
static File getPluginDirectory()
Definition AssetManager.cpp:392
bool handleContentUpdate()
handles content update and triggers ttp embeddings calculation accordingly
Definition FactoryAssetsWatcher.cpp:34
int64 m_dirSize
Definition FactoryAssetsWatcher.h:42
FactoryAssetsWatcher(const File &dirToWatch)
Definition FactoryAssetsWatcher.cpp:9
TextToAssetsShared m_textToAssetsSharedInstance
Definition FactoryAssetsWatcher.h:50
Array< File > m_filesArray
Definition FactoryAssetsWatcher.h:53
File m_directory
Definition FactoryAssetsWatcher.h:47
String m_dirModificationDate
Definition FactoryAssetsWatcher.h:39
AssetsStatus m_assetsStatus
Definition FactoryAssetsWatcher.h:64
TimeSliceThread thread
Definition FactoryAssetsWatcher.h:33
Array< File > m_filesToProcess
Definition FactoryAssetsWatcher.h:59
~FactoryAssetsWatcher() override
Definition FactoryAssetsWatcher.cpp:15
bool removeFileFromEmbeddings(const File &file)
removes file(s) from embeddigs
Definition FactoryAssetsWatcher.cpp:234
StringArray m_filesWithEmbeddings
Definition FactoryAssetsWatcher.h:56
bool addFileToEmbeddings(const File &file)
adds file(s) to embeddigs
Definition FactoryAssetsWatcher.cpp:206
int64 getTotalFolderSize(const juce::File &folder)
caclulates the folder size recursivelly
Definition FactoryAssetsWatcher.cpp:195
int useTimeSlice() override
timeslice thread checks for modufication dir date and handles it accordingly
Definition FactoryAssetsWatcher.cpp:84
void checkAddFileInEmbeddings()
check if there is available embeddings if not add it to an array that will be processed by TTP module
Definition FactoryAssetsWatcher.cpp:323
void getAllFiles(const File &directory, Array< File > &fileArray)
gets all files under a directory recursivelly
Definition FactoryAssetsWatcher.cpp:60
bool initEmbeddings(const File &file)
inits embeddigs
Definition FactoryAssetsWatcher.cpp:295
SharedResourcePointer< TextToAssets > textToAssets
Definition TextToAssets.h:396
String StringsIntoPath(Args... args)
Joins multiple string arguments into a path string.
Definition helpers.h:25
Definition AirAbsorptionFilter.cpp:2
static const Identifier fileNameIdentifier
Definition TextToAssets.h:13
constexpr char ttfStatusDateProperty[]
Definition TextToAssets.h:8
static const String fileEmbeddingsIdentifier
Definition FactoryAssetsWatcher.h:6
constexpr char ttfEmbeddingsFileName[]
Definition TextToAssets.h:6
@ kAssetsRemoved
Definition TextToAssets.h:30
@ kAssetsAdded
Definition TextToAssets.h:31
@ kAssetsInit
Definition TextToAssets.h:33
@ kAssetsNoChange
Definition TextToAssets.h:32
constexpr char modelFileName[]
Definition SentenceTransformer.h:7
constexpr char ttfStatusFileName[]
Definition TextToAssets.h:7
constexpr char ttfStatusSizeProperty[]
Definition TextToAssets.h:9