From d96e1043bf3ea7b83f14bdade9b2cfc71d00dc38 Mon Sep 17 00:00:00 2001 From: swiftraccoon Date: Mon, 13 Nov 2023 21:40:51 -0500 Subject: [PATCH] #2 feat: Add ConfigSingleton method to retrieve minimum duration Added `getMinDurationSeconds()` method to the `ConfigSingleton` class in `ConfigSingleton.cpp` to retrieve the minimum duration in seconds for processing an MP3 file. The minimum duration is read from the configuration file and is used in the `fileProcessor.cpp` module to validate the duration of the file before processing. If the duration is less than the minimum duration, the file is removed. --- include/ConfigSingleton.h | 2 ++ sample-config.yaml | 4 +++ src/ConfigSingleton.cpp | 66 +++++++++------------------------------ src/fileProcessor.cpp | 5 ++- 4 files changed, 24 insertions(+), 53 deletions(-) diff --git a/include/ConfigSingleton.h b/include/ConfigSingleton.h index f32364f..1d618e8 100644 --- a/include/ConfigSingleton.h +++ b/include/ConfigSingleton.h @@ -27,6 +27,7 @@ class ConfigSingleton int getMaxRequestsPerMinute() const; int getErrorWindowSeconds() const; int getRateLimitWindowSeconds() const; + int getMinDurationSeconds() const; private: ConfigSingleton() = default; @@ -48,6 +49,7 @@ class ConfigSingleton int maxRequestsPerMinute; int errorWindowSeconds; int rateLimitWindowSeconds; + int minDurationSeconds; }; #endif // CONFIG_SINGLETON_H diff --git a/sample-config.yaml b/sample-config.yaml index 85a71d2..cd7da0d 100644 --- a/sample-config.yaml +++ b/sample-config.yaml @@ -11,6 +11,10 @@ LoopWaitSeconds: 60 # OpenAI API Key for transcription OPENAI_API_KEY: "YOUR_API_KEY" +# Minimum duration in seconds for an MP3 file to be processed +# used in fileProcessor.cpp +MIN_DURATION_SECONDS: 9 + # MAX_RETRIES: The maximum number of times the program will attempt to reprocess a file # before giving up if it encounters errors or invalid responses. # used in curlHelper.cpp diff --git a/src/ConfigSingleton.cpp b/src/ConfigSingleton.cpp index e53207b..2fe3df1 100644 --- a/src/ConfigSingleton.cpp +++ b/src/ConfigSingleton.cpp @@ -23,58 +23,20 @@ void ConfigSingleton::initialize(const YAML::Node &config) maxRequestsPerMinute = config["MAX_REQUESTS_PER_MINUTE"].as(); errorWindowSeconds = config["ERROR_WINDOW_SECONDS"].as(); rateLimitWindowSeconds = config["RATE_LIMIT_WINDOW_SECONDS"].as(); -} - -std::string ConfigSingleton::getTensignFile() const -{ - return tensignFile; -} - -std::string ConfigSingleton::getCallsignFile() const -{ - return callsignFile; -} - -std::string ConfigSingleton::getSignalFile() const -{ - return signalFile; -} - -std::string ConfigSingleton::getNCSHP_TensignFile() const -{ - return NCSHP_tensignFile; -} - -std::string ConfigSingleton::getNCSHP_CallsignFile() const -{ - return NCSHP_callsignFile; -} - -std::string ConfigSingleton::getNCSHP_SignalFile() const -{ - return NCSHP_signalFile; -} - -std::string ConfigSingleton::getDatabasePath() const -{ - return databasePath; -} - -std::string ConfigSingleton::getDirectoryToMonitor() const -{ - return directoryToMonitor; -} - -std::string ConfigSingleton::getOpenAIAPIKey() const -{ - return openaiAPIKey; -} - -int ConfigSingleton::getLoopWaitSeconds() const -{ - return loopWaitSeconds; -} - + minDurationSeconds = config["MIN_DURATION_SECONDS"].as(); +} + +std::string ConfigSingleton::getTensignFile() const { return tensignFile; } +std::string ConfigSingleton::getCallsignFile() const { return callsignFile; } +std::string ConfigSingleton::getSignalFile() const { return signalFile; } +std::string ConfigSingleton::getNCSHP_TensignFile() const { return NCSHP_tensignFile; } +std::string ConfigSingleton::getNCSHP_CallsignFile() const { return NCSHP_callsignFile; } +std::string ConfigSingleton::getNCSHP_SignalFile() const { return NCSHP_signalFile; } +std::string ConfigSingleton::getDatabasePath() const { return databasePath; } +std::string ConfigSingleton::getDirectoryToMonitor() const { return directoryToMonitor; } +std::string ConfigSingleton::getOpenAIAPIKey() const { return openaiAPIKey; } +int ConfigSingleton::getLoopWaitSeconds() const { return loopWaitSeconds; } +int ConfigSingleton::getMinDurationSeconds() const { return minDurationSeconds; } int ConfigSingleton::getMaxRetries() const { return maxRetries; } int ConfigSingleton::getMaxRequestsPerMinute() const { return maxRequestsPerMinute; } int ConfigSingleton::getErrorWindowSeconds() const { return errorWindowSeconds; } diff --git a/src/fileProcessor.cpp b/src/fileProcessor.cpp index 1c18d4e..bbc8edd 100644 --- a/src/fileProcessor.cpp +++ b/src/fileProcessor.cpp @@ -140,7 +140,10 @@ float validateDuration(const std::string &file_path, FileData &fileData) std::string durationStr = getMP3Duration(file_path); float duration = std::stof(durationStr); fileData.duration = durationStr; // Set the duration in FileData - if (duration < 9.0) + + float minDuration = ConfigSingleton::getInstance().getMinDurationSeconds(); + + if (duration < minDuration) { std::filesystem::remove(file_path); return 0.0;