AfonsoCMSousa/vcomp#1 feat: Checked if files are valid Video files
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
#include "file_types.hpp"
|
||||
|
||||
bool isVideoFile(std::string filename, fileType &type) {
|
||||
size_t dotPos = filename.find_last_of('.');
|
||||
if (dotPos == std::string::npos) {
|
||||
type = unknown;
|
||||
return false;
|
||||
}
|
||||
|
||||
std::string ext = filename.substr(dotPos + 1);
|
||||
if (ext == "mp4") {
|
||||
type = mp4;
|
||||
} else if (ext == "avi") {
|
||||
type = avi;
|
||||
} else if (ext == "mkv") {
|
||||
type = mkv;
|
||||
} else if (ext == "mov") {
|
||||
type = mov;
|
||||
} else if (ext == "flv") {
|
||||
type = flv;
|
||||
} else if (ext == "webm") {
|
||||
type = webm;
|
||||
} else {
|
||||
type = unknown;
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@@ -1,17 +1,71 @@
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
|
||||
#include "print.hpp"
|
||||
#include "file_types.hpp"
|
||||
|
||||
using namespace std;
|
||||
|
||||
bool verbose = false;
|
||||
file input_file;
|
||||
file output_file;
|
||||
Logger logger;
|
||||
|
||||
int main(int argc, char* argv[])
|
||||
{
|
||||
if (argc < 2) {
|
||||
logger.err("No arguments provided.\n");
|
||||
logger.err("Usage: %s [args...]\n", argv[0]);
|
||||
int main(int argc, char *argv[]) {
|
||||
if (argc < 2) {
|
||||
logger.println("No arguments provided.");
|
||||
logger.println("Usage: \t%s [args...]", argv[0]);
|
||||
logger.println("\t-i <file>\tSpecify input file");
|
||||
logger.println("\t-o <file>\tSpecify output file");
|
||||
logger.println("\t-v \t\tEnable verbose mode");
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
for (int i = 1; i < argc; ++i) {
|
||||
string arg = argv[i];
|
||||
if (arg == "-i" && i + 1 < argc) {
|
||||
input_file.setFilename(argv[++i]);
|
||||
if (verbose)
|
||||
logger.log("Input file set to: %s\n", argv[i]);
|
||||
} else if (arg == "-o" && i + 1 < argc) {
|
||||
output_file.setFilename(argv[++i]);
|
||||
if (verbose)
|
||||
logger.log("Output file set to: %s\n", argv[i]);
|
||||
} else if (arg == "-v") {
|
||||
verbose = true;
|
||||
logger.log("Verbose mode enabled.\n");
|
||||
} else {
|
||||
logger.err("Unknown argument: %s \"%s\"\n", argv[i], (i + 1 < argc) ? argv[i + 1] : "");
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
// INFO: Check if input files are video
|
||||
if (input_file.getType() == unknown) {
|
||||
logger.err("Input file type is unknown or unsupported: %s\n", input_file.getFilename().c_str());
|
||||
return 1;
|
||||
} else {
|
||||
if (verbose)
|
||||
logger.log("Input file type recognized: %s\n", input_file.getFilename().c_str());
|
||||
}
|
||||
|
||||
if (output_file.getType() == unknown) {
|
||||
logger.err("Output file type is unknown or unsupported: %s\n", output_file.getFilename().c_str());
|
||||
return 1;
|
||||
} else {
|
||||
if (verbose)
|
||||
logger.log("Output file type recognized: %s\n", output_file.getFilename().c_str());
|
||||
}
|
||||
|
||||
if(!(input_file == output_file)) {
|
||||
logger.err("Input and output files have to be the same: %s != %s\n", input_file.getFilename().c_str(), output_file.getFilename().c_str());
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (verbose) {
|
||||
logger.log("Processing from %s to %s\n", input_file.getFilename().c_str(), output_file.getFilename().c_str());
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -3,18 +3,49 @@
|
||||
|
||||
void Logger::log(const char* format, ...)
|
||||
{
|
||||
printf("[Log]:\t");
|
||||
va_list args;
|
||||
va_start(args, format);
|
||||
vprintf(format, args);
|
||||
fprintf(stdout,"[LOG]: ");
|
||||
vfprintf(stdout,format, args);
|
||||
va_end(args);
|
||||
fflush(stdout);
|
||||
}
|
||||
|
||||
void Logger::err(const char* format, ...)
|
||||
{
|
||||
printf("[Error]:\t");
|
||||
va_list args;
|
||||
va_start(args, format);
|
||||
fprintf(stderr, "[ERROR]: ");
|
||||
vfprintf(stderr, format, args);
|
||||
va_end(args);
|
||||
fflush(stderr);
|
||||
}
|
||||
|
||||
void Logger::warn(const char* format, ...)
|
||||
{
|
||||
va_list args;
|
||||
va_start(args, format);
|
||||
fprintf(stderr, "[WARN]: ");
|
||||
vfprintf(stderr, format, args);
|
||||
va_end(args);
|
||||
fflush(stderr);
|
||||
}
|
||||
|
||||
void Logger::print(const char* format, ...)
|
||||
{
|
||||
va_list args;
|
||||
va_start(args, format);
|
||||
vfprintf(stdout, format, args);
|
||||
va_end(args);
|
||||
fflush(stdout);
|
||||
}
|
||||
|
||||
void Logger::println(const char* format, ...)
|
||||
{
|
||||
va_list args;
|
||||
va_start(args, format);
|
||||
vfprintf(stdout, format, args);
|
||||
fprintf(stdout, "\n");
|
||||
va_end(args);
|
||||
fflush(stdout);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user