1
0
forked from blue/mlc
mlc/src/main.cpp

62 lines
1.9 KiB
C++
Raw Normal View History

2023-07-15 19:44:29 +00:00
#include <iostream>
2023-10-07 22:36:20 +00:00
#include <fstream>
2023-07-16 00:15:31 +00:00
#include <string>
2023-07-21 21:32:24 +00:00
#include <chrono>
2023-10-07 22:36:20 +00:00
#include <memory>
2023-07-21 21:32:24 +00:00
#include <unistd.h>
2023-07-16 00:15:31 +00:00
#include "FLAC/stream_decoder.h"
#include <lame/lame.h>
#include "help.h"
2023-07-21 21:32:24 +00:00
#include "collection.h"
#include "taskmanager.h"
#include "settings.h"
2023-07-15 19:44:29 +00:00
int main(int argc, char **argv) {
2023-10-07 22:36:20 +00:00
std::shared_ptr<Settings> settings = std::make_shared<Settings>(argc, argv);
2023-10-07 22:36:20 +00:00
switch (settings->getAction()) {
case Settings::help:
printHelp();
return 0;
2023-10-07 22:36:20 +00:00
case Settings::config:
std::cout << settings->defaultConfig() << std::endl;
return 0;
case Settings::convert:
std::cout << "Converting..." << std::endl;
break;
default:
std::cout << "Error in action" << std::endl;
return -1;
2023-07-16 00:15:31 +00:00
}
2023-10-07 22:36:20 +00:00
if (!settings->readConfigFile() && settings->isConfigDefault()) {
std::string defaultConfigPath = settings->getConfigPath();
std::ofstream file(defaultConfigPath, std::ios::out | std::ios::trunc);
if (file.is_open()) {
std::cout << "Writing default config to " << defaultConfigPath << std::endl;
file << settings->defaultConfig();
} else {
std::cout << "Couldn't open " << defaultConfigPath << " to write default config" << std::endl;
}
}
TaskManager taskManager(settings);
2023-07-21 21:32:24 +00:00
taskManager.start();
std::chrono::time_point start = std::chrono::system_clock::now();
2023-10-07 22:36:20 +00:00
Collection collection(settings->getInput(), &taskManager);
collection.convert(settings->getOutput());
2023-07-21 21:32:24 +00:00
taskManager.printProgress();
taskManager.wait();
std::chrono::time_point end = std::chrono::system_clock::now();
std::chrono::duration<double> seconds = end - start;
2023-07-23 12:04:26 +00:00
std::cout << std::endl << "Encoding is done, it took " << seconds.count() << " seconds in total, enjoy!" << std::endl;
2023-07-21 21:32:24 +00:00
taskManager.stop();
2023-07-16 00:15:31 +00:00
2023-07-15 19:44:29 +00:00
return 0;
}