From 1bbddc5de9193a7e9616d7fd6e94a04d4c49ea20 Mon Sep 17 00:00:00 2001 From: zvon Date: Fri, 4 Jan 2019 20:19:08 +0100 Subject: [PATCH] Spaces instead of tabs --- Makefile | 5 ++ filesystem.cpp | 24 ++++---- filesystem.hpp | 150 +++++++++++++++++++++++----------------------- functions.cpp | 160 ++++++++++++++++++++++++------------------------- functions.hpp | 8 +-- 5 files changed, 176 insertions(+), 171 deletions(-) diff --git a/Makefile b/Makefile index 7fce707..d5bfcfb 100644 --- a/Makefile +++ b/Makefile @@ -2,8 +2,13 @@ CC ?= clang CXX ?= clang++ CFLAGS ?= -O2 -g -Wall -Wextra -std=c++11 +.PHONY: default default: tv_rename +.PHONY: clean +clean: + rm -f *.o tv_rename + tv_rename: functions.o filesystem.o tv_rename.cpp $(CXX) $(CFLAGS) -o tv_rename tv_rename.cpp functions.o filesystem.o -lcurl diff --git a/filesystem.cpp b/filesystem.cpp index bc6ff04..6832be0 100644 --- a/filesystem.cpp +++ b/filesystem.cpp @@ -4,26 +4,26 @@ #include bool FSLib::exists(const std::string &path) { - struct stat path_stat; - return stat( path.c_str(), &path_stat ) == 0; + struct stat path_stat; + return stat( path.c_str(), &path_stat ) == 0; } bool FSLib::isDirectory(const std::string &path) { - struct stat path_stat; - stat( path.c_str(), &path_stat ); - return S_ISDIR(path_stat.st_mode); + struct stat path_stat; + stat( path.c_str(), &path_stat ); + return S_ISDIR(path_stat.st_mode); } std::string FSLib::canonical(const std::string &path) { - char *canonical_path = static_cast(malloc(PATH_MAX)); - if( realpath(path.c_str(), canonical_path) == nullptr ) - return ""; - std::string canonical_string{canonical_path}; - free(canonical_path); - return canonical_string; + char *canonical_path = static_cast(malloc(PATH_MAX)); + if( realpath(path.c_str(), canonical_path) == nullptr ) + return ""; + std::string canonical_string{canonical_path}; + free(canonical_path); + return canonical_string; } bool FSLib::rename(const std::string &file_a, const std::string &file_b) { - return ::rename( file_a.c_str(), file_b.c_str() ) == 0; + return ::rename( file_a.c_str(), file_b.c_str() ) == 0; } diff --git a/filesystem.hpp b/filesystem.hpp index b6d9746..6f5d62c 100644 --- a/filesystem.hpp +++ b/filesystem.hpp @@ -6,101 +6,101 @@ #include namespace FSLib{ - bool exists(const std::string &path); - bool isDirectory(const std::string &path); - std::string canonical(const std::string &path); - bool rename(const std::string &file_a, const std::string &file_b); + bool exists(const std::string &path); + bool isDirectory(const std::string &path); + std::string canonical(const std::string &path); + bool rename(const std::string &file_a, const std::string &file_b); - class Directory { - public: - Directory(const std::string &path_) : dir_path(path_) {} - Directory() = delete; - Directory(const Directory &d) = default; - Directory(Directory &&d) = default; + class Directory { + public: + Directory(const std::string &path_) : dir_path(path_) {} + Directory() = delete; + Directory(const Directory &d) = default; + Directory(Directory &&d) = default; - class Iterator { - public: - Iterator( const Directory &d_ ) : d(opendir(d_.path())) { - current_entry = readdir(d); - } + class Iterator { + public: + Iterator( const Directory &d_ ) : d(opendir(d_.path())) { + current_entry = readdir(d); + } - Iterator( const Directory &d_, const struct dirent *current_entry_) : d(opendir(d_.path())), current_entry(current_entry_) {} + Iterator( const Directory &d_, const struct dirent *current_entry_) : d(opendir(d_.path())), current_entry(current_entry_) {} - Iterator() = delete; + Iterator() = delete; - Iterator(const Iterator &i) = default; + Iterator(const Iterator &i) = default; - Iterator(Iterator &&i) = default; + Iterator(Iterator &&i) = default; - ~Iterator() { - closedir(d); - } + ~Iterator() { + closedir(d); + } - std::string operator*() { - return current_entry->d_name; - } + std::string operator*() { + return current_entry->d_name; + } - Iterator &operator++() { - if( current_entry == nullptr ) - return *this; - current_entry = readdir(d); - if( current_entry != nullptr && (!strcmp(current_entry->d_name, ".") || !strcmp(current_entry->d_name, "..")) ) - operator++(); - return *this; - } + Iterator &operator++() { + if( current_entry == nullptr ) + return *this; + current_entry = readdir(d); + if( current_entry != nullptr && (!strcmp(current_entry->d_name, ".") || !strcmp(current_entry->d_name, "..")) ) + operator++(); + return *this; + } - Iterator operator++(int) { - Iterator ret(*this); - operator++(); - return ret; - } + Iterator operator++(int) { + Iterator ret(*this); + operator++(); + return ret; + } - bool operator==(const Iterator &i_other) { - return i_other.current_entry == current_entry; - } + bool operator==(const Iterator &i_other) { + return i_other.current_entry == current_entry; + } - bool operator!=(const Iterator &i_other) { - return i_other.current_entry != current_entry; - } + bool operator!=(const Iterator &i_other) { + return i_other.current_entry != current_entry; + } - private: - DIR *d; - const struct dirent *current_entry; - }; + private: + DIR *d; + const struct dirent *current_entry; + }; - using iterator = Iterator; - using const_iterator = Iterator; + using iterator = Iterator; + using const_iterator = Iterator; - iterator begin() { - return Iterator(dir_path); - } - - const_iterator begin() const { - return Iterator(dir_path); - } + iterator begin() { + return Iterator(dir_path); + } - const_iterator cbegin() const { - return begin(); - } + const_iterator begin() const { + return Iterator(dir_path); + } - iterator end() { - return Iterator(dir_path, nullptr); - } + const_iterator cbegin() const { + return begin(); + } - const_iterator end() const { - return Iterator(dir_path, nullptr); - } + iterator end() { + return Iterator(dir_path, nullptr); + } - const_iterator cend() const { - return end(); - } + const_iterator end() const { + return Iterator(dir_path, nullptr); + } - const char *path() const { - return dir_path.c_str(); - } - private: - std::string dir_path; - }; + const_iterator cend() const { + return end(); + } + + const char *path() const { + return dir_path.c_str(); + } + private: + std::string dir_path; + }; } //end FSLib #endif diff --git a/functions.cpp b/functions.cpp index f86a8a2..40f1b80 100644 --- a/functions.cpp +++ b/functions.cpp @@ -6,109 +6,109 @@ #include size_t writeCallback( void *contents, size_t size, size_t nmemb, void *target ) { - *static_cast(target) += std::string(static_cast(contents), size*nmemb); - return size * nmemb; + *static_cast(target) += std::string(static_cast(contents), size*nmemb); + return size * nmemb; } Curl::Curl() { - curl_global_init(CURL_GLOBAL_ALL); - curl_handle = curl_easy_init(); - curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, writeCallback); - curl_easy_setopt(curl_handle, CURLOPT_USERAGENT, "libcurl-agent/1.0"); + curl_global_init(CURL_GLOBAL_ALL); + curl_handle = curl_easy_init(); + curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, writeCallback); + curl_easy_setopt(curl_handle, CURLOPT_USERAGENT, "libcurl-agent/1.0"); } Curl::~Curl() { - curl_easy_cleanup(curl_handle); - curl_global_cleanup(); + curl_easy_cleanup(curl_handle); + curl_global_cleanup(); } std::string Curl::execute(const std::string &url) { - std::string source; - source.resize(100000); - curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, static_cast(&source)); - curl_easy_setopt(curl_handle, CURLOPT_URL, url.c_str()); - auto res = curl_easy_perform(curl_handle); - if(res != CURLE_OK) { - std::cerr << "curl_easy_perform() failed: " << curl_easy_strerror(res) << std::endl; - return ""; - } - return source; + std::string source; + source.resize(100000); + curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, static_cast(&source)); + curl_easy_setopt(curl_handle, CURLOPT_URL, url.c_str()); + auto res = curl_easy_perform(curl_handle); + if(res != CURLE_OK) { + std::cerr << "curl_easy_perform() failed: " << curl_easy_strerror(res) << std::endl; + return ""; + } + return source; } void findSeason(std::set &files, int season, const std::string &path) { - std::smatch match; - auto episode = std::regex("[sS][0]{0,2000}" + std::to_string(season) + "[eE][0-9]{1,2000}"); - for( const auto& p: FSLib::Directory(path) ) { - if(FSLib::isDirectory(path + "/" + p)) { - findSeason(files, season, path + "/" + p); - continue; - } + std::smatch match; + auto episode = std::regex("[sS][0]{0,2000}" + std::to_string(season) + "[eE][0-9]{1,2000}"); + for( const auto& p: FSLib::Directory(path) ) { + if(FSLib::isDirectory(path + "/" + p)) { + findSeason(files, season, path + "/" + p); + continue; + } - if( std::regex_search(p, episode) ) { - files.insert(path + "/" + p); - } - } + if( std::regex_search(p, episode) ) { + files.insert(path + "/" + p); + } + } } void iterateFS(std::set &seasons, const std::string &path) { - std::smatch match; - auto episode = std::regex("[sS][0-9]{1,2000}[eE][0-9]{1,2000}"); - for( const auto& p: FSLib::Directory(path) ) { - if(FSLib::isDirectory(path + "/" + p)) { - iterateFS(seasons, path + "/" + p); - continue; - } + std::smatch match; + auto episode = std::regex("[sS][0-9]{1,2000}[eE][0-9]{1,2000}"); + for( const auto& p: FSLib::Directory(path) ) { + if(FSLib::isDirectory(path + "/" + p)) { + iterateFS(seasons, path + "/" + p); + continue; + } - if( std::regex_search(p, match, episode) ) { - std::string a = match[0]; - a = std::regex_replace(a, std::regex("[eE][0-9]{1,2000}"), ""); - a = a.substr(1); - seasons.insert(std::stoi(a)); - } - } + if( std::regex_search(p, match, episode) ) { + std::string a = match[0]; + a = std::regex_replace(a, std::regex("[eE][0-9]{1,2000}"), ""); + a = a.substr(1); + seasons.insert(std::stoi(a)); + } + } } std::string getDefUrl( const std::string &show, const std::string &language, Curl &c ) { - auto search = std::regex_replace(show, std::regex(" "), "+"); - auto source_code = c.execute("https://www.thetvdb.com/search?q=" + search + "&l=" + language); - auto series = std::regex(""); - int pos = 1; - std::vector urls; - for( std::sregex_iterator it(source_code.begin(), source_code.end(), series); it != std::sregex_iterator(); ++it) { - auto input = (*it).str(); - auto text = std::regex_replace(input, std::regex(".*series.*?>"), ""); - text = text.substr(0, text.size() - 9); - std::cout << pos << ". " << text << std::endl; - pos++; - urls.push_back(std::regex_replace(input, std::regex("\">.*"), "").substr(13)); - } - std::cout << "Which TV Show is the right one? "; - std::cin >> pos; - std::cin.clear(); - std::cin.ignore(1, '\n'); + auto search = std::regex_replace(show, std::regex(" "), "+"); + auto source_code = c.execute("https://www.thetvdb.com/search?q=" + search + "&l=" + language); + auto series = std::regex(""); + int pos = 1; + std::vector urls; + for( std::sregex_iterator it(source_code.begin(), source_code.end(), series); it != std::sregex_iterator(); ++it) { + auto input = (*it).str(); + auto text = std::regex_replace(input, std::regex(".*series.*?>"), ""); + text = text.substr(0, text.size() - 9); + std::cout << pos << ". " << text << std::endl; + pos++; + urls.push_back(std::regex_replace(input, std::regex("\">.*"), "").substr(13)); + } + std::cout << "Which TV Show is the right one? "; + std::cin >> pos; + std::cin.clear(); + std::cin.ignore(1, '\n'); return "https://www.thetvdb.com" + urls[pos-1]; } void printHelp() { - std::cout << "usage: tv_rename [--help] [--show show name] [--season season number]" << std::endl; - std::cout << " [--correct-path] [--show-path show path] [--trust]" << std::endl; - std::cout << " [--linux] [--lang language] [--print-langs]" << std::endl; - std::cout << std::endl << "Rename TV episodes" << std::endl << std::endl << "optional arguments:" << std::endl; - std::cout << " -h, --help\t\tshow this help message and exit" << std::endl; - std::cout << " --show show name, -s show name" << std::endl; - std::cout << "\t\t\tTV show from which you want episode names (needs to be" << std::endl; - std::cout << "\t\t\tin quotation marks if it has more than one word)" << std::endl; - std::cout << " --season season number, -n season number" << std::endl; - std::cout << "\t\t\tSeason number/s (if multiple seasons, put them in" << std::endl; - std::cout << "\t\t\tquotation marks and seperate by one space)" << std::endl; - std::cout << "\t\t\tor 'all' for all seasons in selected subdirectory" << std::endl; - std::cout << " --correct-path, -c\tThis is the correct path, stop asking me!" << std::endl; - std::cout << " --show-path show path, -sp show path" << std::endl; - std::cout << "\t\t\tPath of the directory with episodes" << std::endl; - std::cout << " --trust, -t\t\tDon't ask whether the names are correct" << std::endl; - std::cout << " --linux, -x\t\tDon't replace characters characters that are illegal in Windows" << std::endl; - std::cout << " --lang language, -l language" << std::endl; - std::cout << "\t\t\tSelect which language the episode names shoud be in" << std::endl; - std::cout << " --print-langs, -p\tPring available language" << std::endl; + std::cout << "usage: tv_rename [--help] [--show show name] [--season season number]" << std::endl; + std::cout << " [--correct-path] [--show-path show path] [--trust]" << std::endl; + std::cout << " [--linux] [--lang language] [--print-langs]" << std::endl; + std::cout << std::endl << "Rename TV episodes" << std::endl << std::endl << "optional arguments:" << std::endl; + std::cout << " -h, --help\t\tshow this help message and exit" << std::endl; + std::cout << " --show show name, -s show name" << std::endl; + std::cout << "\t\t\tTV show from which you want episode names (needs to be" << std::endl; + std::cout << "\t\t\tin quotation marks if it has more than one word)" << std::endl; + std::cout << " --season season number, -n season number" << std::endl; + std::cout << "\t\t\tSeason number/s (if multiple seasons, put them in" << std::endl; + std::cout << "\t\t\tquotation marks and seperate by one space)" << std::endl; + std::cout << "\t\t\tor 'all' for all seasons in selected subdirectory" << std::endl; + std::cout << " --correct-path, -c\tThis is the correct path, stop asking me!" << std::endl; + std::cout << " --show-path show path, -p show path" << std::endl; + std::cout << "\t\t\tPath of the directory with episodes" << std::endl; + std::cout << " --trust, -t\t\tDon't ask whether the names are correct" << std::endl; + std::cout << " --linux, -x\t\tDon't replace characters characters that are illegal in Windows" << std::endl; + std::cout << " --lang language, -l language" << std::endl; + std::cout << "\t\t\tSelect which language the episode names shoud be in" << std::endl; + std::cout << " --print-langs\t\tPring available language" << std::endl; } diff --git a/functions.hpp b/functions.hpp index b8fafa7..38bad19 100644 --- a/functions.hpp +++ b/functions.hpp @@ -7,11 +7,11 @@ class Curl { public: - Curl(); - ~Curl(); - std::string execute( const std::string &url ); + Curl(); + ~Curl(); + std::string execute( const std::string &url ); private: - CURL *curl_handle; + CURL *curl_handle; }; std::string getDefUrl( const std::string &show, const std::string &language, Curl &c );