Skip to content

Commit

Permalink
#2 feat: Add ConfigSingleton method to retrieve minimum duration
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
swiftraccoon committed Nov 14, 2023
1 parent d1daf3b commit d96e104
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 53 deletions.
2 changes: 2 additions & 0 deletions include/ConfigSingleton.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ class ConfigSingleton
int getMaxRequestsPerMinute() const;
int getErrorWindowSeconds() const;
int getRateLimitWindowSeconds() const;
int getMinDurationSeconds() const;

private:
ConfigSingleton() = default;
Expand All @@ -48,6 +49,7 @@ class ConfigSingleton
int maxRequestsPerMinute;
int errorWindowSeconds;
int rateLimitWindowSeconds;
int minDurationSeconds;
};

#endif // CONFIG_SINGLETON_H
4 changes: 4 additions & 0 deletions sample-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
66 changes: 14 additions & 52 deletions src/ConfigSingleton.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,58 +23,20 @@ void ConfigSingleton::initialize(const YAML::Node &config)
maxRequestsPerMinute = config["MAX_REQUESTS_PER_MINUTE"].as<int>();
errorWindowSeconds = config["ERROR_WINDOW_SECONDS"].as<int>();
rateLimitWindowSeconds = config["RATE_LIMIT_WINDOW_SECONDS"].as<int>();
}

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<int>();
}

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; }
Expand Down
5 changes: 4 additions & 1 deletion src/fileProcessor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down

0 comments on commit d96e104

Please sign in to comment.