From f3f125b5624387156088105d7ac4560f90e3a9b7 Mon Sep 17 00:00:00 2001 From: Markus Date: Thu, 31 Oct 2019 13:15:54 +0100 Subject: [PATCH] v3.5.0: bei info Subfunction: Parameter um Folgenausgabe zu verhind(Namen ausgabe --- parameterManager.cpp | 11 +++- parameterManager.h | 5 +- programManager.cpp | 145 +++++++++++++++++++++++-------------------- 3 files changed, 89 insertions(+), 72 deletions(-) diff --git a/parameterManager.cpp b/parameterManager.cpp index 0fcfa61..7197892 100644 --- a/parameterManager.cpp +++ b/parameterManager.cpp @@ -875,12 +875,13 @@ int unterOption_info(Settings *settings, int argc, char **argv) {"help", no_argument, nullptr, 'h'}, {"colorless", no_argument, nullptr, 'c'}, {"debug-mode", no_argument, nullptr, 'd'}, + {"skip-episoden-names", no_argument, nullptr, 's'}, {nullptr, no_argument, nullptr, 0} }; - while( ( c = getopt_long (argc, argv, "p:hcd", long_opts, nullptr) ) != -1 ) { + while( ( c = getopt_long (argc, argv, "p:hcds", long_opts, nullptr) ) != -1 ) { switch(c) { case 'p': if(optarg && setS5ProxytoSettings(*settings, optarg) != 0) @@ -899,6 +900,11 @@ int unterOption_info(Settings *settings, int argc, char **argv) if(settings->debugMode) std::cout << "Debug Modus: true" << std::endl; break; + case 's': + settings->skipEpisodenNameOutput = true; + if(settings->debugMode) + std::cout << "skipEpisodenNameOutput: true" << std::endl; + break; default: std::cout << "Aufruf: " << settings->programName << " info [OPTION]... [NAME]..." << std::endl; std::cout << "\"" << settings->programName << " info --help\" liefert weitere Informationen." << std::endl; @@ -939,6 +945,9 @@ void unterOption_info_help(std::string programName) << " -d, --debug-mode" << std::endl << " Mit dieser Option kann man den Debug-Modus einschalten." << std::endl << " Dabei werden vielmehr Infos ausgegeben." << std::endl << std::endl + << " -s, --skip-episoden-names" << std::endl + << " Mit dieser Option kann man die Ausgabe der Namen der" << std::endl + << " einzelnen Folgen ausschalten." << std::endl << std::endl << " -h, --help" << std::endl << " Mit dieser Option wird dieses Helpmenue ausgegeben." << std::endl; } diff --git a/parameterManager.h b/parameterManager.h index 6939677..eb9f47b 100644 --- a/parameterManager.h +++ b/parameterManager.h @@ -63,7 +63,7 @@ struct Settings { proxy_ip = "127.0.0.1", languages = "GerDub,GerSub,Eng,", genaueHoster = "", - version = "3.4.6", + version = "3.5.0", defaultFileVersion="1.6", outputFilePath = "", default_checkPath = "", @@ -74,7 +74,8 @@ struct Settings { debugMode = false, search_IgnoreUpperLower = true, search_wantUpdate = false, - askForEveryDir = true; + askForEveryDir = true, + skipEpisodenNameOutput = false; int startEpisode = 1, stopEpisode = 0, startSeason = 1, diff --git a/programManager.cpp b/programManager.cpp index ee0c8b9..e47f155 100644 --- a/programManager.cpp +++ b/programManager.cpp @@ -738,90 +738,97 @@ int ProgramManager::infoModus(Settings *settings) return 32; } - int gesammtFolge = 0; std::string green = ((settings->colorless) ? "" : "\033[92m"), lila = ((settings->colorless) ? "" : "\033[95m"), Lightyellow = ((settings->colorless) ? "" : "\033[93m"), Darkyellow = ((settings->colorless) ? "" : "\033[33m"), blue = ((settings->colorless) ? "" : "\033[96m"), white = "\033[0m"; - //speicher (zahl -1), ab da wo /staffel-x nicht mehr vorkommt - int maxStaffel = pageManager.counterContains(tmp_reply.html, "/staffel-%i"); - //Um namen der Folge für jede Staffel zu bekommen - for (int staffel = 1; staffel <= maxStaffel; ++staffel) { - Reply tmpReply = pageManager.getServerRequest(pageManager.UrlPraefix + nameInUrl + "/staffel-" + std::to_string(staffel)); - if(tmpReply.html == "-1") { - if(settings->debugMode) - std::cerr << ">>> Debug In " << __FUNCTION__ << ": getServerRequest function failed: at season page." << std::endl; - return 40; - } - std::cout << std::endl - << green << "Die Staffel " << staffel << " hat " << pageManager.counterContains(tmpReply.html, "/episode-%i") << " Folge(n)." << white << std::endl - << std::endl; + if( ! settings->skipEpisodenNameOutput) { - std::string html = tmpReply.html; - size_t pos = 0; - if( (pos = html.find(" Error: Konnte Position von '")) == std::string::npos) { - std::cout << " => Error: Konnte Position von '' nicht finden." << std::endl; - return 42; - } else - html.erase(pos, std::string::npos); + //Für FolgenNummer ingesmammt + int gesammtFolge = 0; + //speicher (zahl -1), ab da wo /staffel-x nicht mehr vorkommt + int maxStaffel = pageManager.counterContains(tmp_reply.html, "/staffel-%i"); - html = pageManager.replace(html, "\n", ""); - html = pageManager.replace(html, "", "\n"); - - std::stringstream folgenListe(html); - std::string line; - - while (std::getline(folgenListe, line).good()) { - std::string titel; - gesammtFolge = gesammtFolge + 1; - - if( (pos = line.find("\"> Folge")) == std::string::npos) { - std::cout << " => Error: Konnte Position von '\"> Folge' nicht finden." << std::endl; - return 43; - } else - line.erase(0, pos + 9); - if( (pos = line.find(" ")) == std::string::npos) { - std::cout << " => Error: Konnte Position von ' ' nicht finden." << std::endl; - return 44; + //Um namen der Folge für jede Staffel zu bekommen + for (int staffel = 1; staffel <= maxStaffel; ++staffel) { + Reply tmpReply = pageManager.getServerRequest(pageManager.UrlPraefix + nameInUrl + "/staffel-" + std::to_string(staffel)); + if(tmpReply.html == "-1") { + if(settings->debugMode) + std::cerr << ">>> Debug In " << __FUNCTION__ << ": getServerRequest function failed: at season page." << std::endl; + return 40; } - std::cout << lila << "Ep. " << blue << ( (gesammtFolge < 100) ? ( (gesammtFolge < 10) ? "00" : "0" ) : "" ) << gesammtFolge << lila - << " ( " << blue << "S" << ( (staffel < 10) ? "0" : "" ) << staffel - << "E" << ( ( atoi( line.substr(0, pos).c_str() ) < 10) ? "0" : "" ) << line.substr(0, pos) << lila << " ):" << white <")) == std::string::npos) { - std::cout << " => Error: Konnte Position von '' nicht finden." << std::endl; - return 43; - } else - line.erase(0, pos + 8); - if( (pos = line.find("")) == std::string::npos) { - std::cout << " => Error: Konnte Position von '' nicht finden." << std::endl; - return 44; - } - titel = line.substr(0, pos); - if(titel != "") - std::cout << lila << " > Titel 1: " << Lightyellow << titel << white << std::endl; + std::cout << std::endl + << green << "Die Staffel " << staffel << " hat " << pageManager.counterContains(tmpReply.html, "/episode-%i") << " Folge(n)." << white << std::endl + << std::endl; - if( (pos = line.find("")) == std::string::npos) { - std::cout << " => Error: Konnte Position von '' nicht finden." << std::endl; - return 43; + std::string html = tmpReply.html; + size_t pos = 0; + if( (pos = html.find(" Error: Konnte Position von '")) == std::string::npos) { - std::cout << " => Error: Konnte Position von '' nicht finden." << std::endl; - return 44; + html.erase(0, pos); + if( (pos = html.find("")) == std::string::npos) { + std::cout << " => Error: Konnte Position von '' nicht finden." << std::endl; + return 42; + } else + html.erase(pos, std::string::npos); + + html = pageManager.replace(html, "\n", ""); + html = pageManager.replace(html, "", "\n"); + + std::stringstream folgenListe(html); + std::string line; + + while (std::getline(folgenListe, line).good()) { + std::string titel; + gesammtFolge = gesammtFolge + 1; + + if( (pos = line.find("\"> Folge")) == std::string::npos) { + std::cout << " => Error: Konnte Position von '\"> Folge' nicht finden." << std::endl; + return 43; + } else + line.erase(0, pos + 9); + if( (pos = line.find(" ")) == std::string::npos) { + std::cout << " => Error: Konnte Position von ' ' nicht finden." << std::endl; + return 44; + } + std::cout << lila << "Ep. " << blue << ( (gesammtFolge < 100) ? ( (gesammtFolge < 10) ? "00" : "0" ) : "" ) << gesammtFolge << lila + << " ( " << blue << "S" << ( (staffel < 10) ? "0" : "" ) << staffel + << "E" << ( ( atoi( line.substr(0, pos).c_str() ) < 10) ? "0" : "" ) << line.substr(0, pos) << lila << " ):" << white <")) == std::string::npos) { + std::cout << " => Error: Konnte Position von '' nicht finden." << std::endl; + return 43; + } else + line.erase(0, pos + 8); + if( (pos = line.find("")) == std::string::npos) { + std::cout << " => Error: Konnte Position von '' nicht finden." << std::endl; + return 44; + } + titel = line.substr(0, pos); + if(titel != "") + std::cout << lila << " > Titel 1: " << Lightyellow << titel << white << std::endl; + + if( (pos = line.find("")) == std::string::npos) { + std::cout << " => Error: Konnte Position von '' nicht finden." << std::endl; + return 43; + } else + line.erase(0, pos + 6); + if( (pos = line.find("")) == std::string::npos) { + std::cout << " => Error: Konnte Position von '' nicht finden." << std::endl; + return 44; + } + titel = line.substr(0, pos); + if(titel != "") + std::cout << lila << " > Titel 2: " << Darkyellow << titel << white << std::endl; } - titel = line.substr(0, pos); - if(titel != "") - std::cout << lila << " > Titel 2: " << Darkyellow << titel << white << std::endl; + } }