v3.9.0: fix error with -C: print all files without -d; new: multiply '-o' options; defaultfile: standart -o file in the log file

This commit is contained in:
Markus 2020-02-22 15:26:24 +01:00
parent a38491d587
commit 9aa2653618
6 changed files with 61 additions and 50 deletions

View File

@ -23,7 +23,8 @@ int Logger::logCommandLine(std::string logText)
{
std::time_t now = std::time(nullptr);
struct tm *tm_now = localtime(&now);
std::string date(std::to_string(tm_now->tm_mday) + "." + std::to_string(tm_now->tm_mon +1) + "."
std::string date((tm_now->tm_mday < 10 ? "0" : "") + std::to_string(tm_now->tm_mday) + "." +
(tm_now->tm_mon +1 < 10 ? "0" : "" ) + std::to_string(tm_now->tm_mon +1) + "."
+ std::to_string(1900 + tm_now->tm_year) + " - " + std::to_string(tm_now->tm_hour) + ":" + std::to_string(tm_now->tm_min));
return writetoFile(date + ": \"" + logText + "\"");
}

View File

@ -446,18 +446,21 @@ int PageManager::compareVersions(std::string Version1, std::string Version2)

}

int PageManager::writeToFile(std::string path, std::string text)
int PageManager::writeToFile(std::vector<std::string> paths, std::string text)
{
if(path == "")
if(paths.size() == 0)
return 0;
std::ofstream of;
for(auto path : paths) {
of.open(path, std::ios::out | std::ios::app);
if(!of.is_open()) {
perror(" => Error: Konnte Output Datei nicht öffnen");
perror((" => Error: Konnte Output: '" + path + "' Datei nicht öffnen").c_str());
return -1;
}
of << text << std::endl;
of.close();
}

return 0;
}


View File

@ -48,7 +48,7 @@ public:

int compareVersions(std::string Version1, std::string Version2);

int writeToFile(std::string path, std::string text);
int writeToFile(std::vector<std::string> paths, std::string text);

const std::string UrlPraefix = "https://s.to/serie/stream/";
std::string sock5Proxy;

View File

@ -185,7 +185,13 @@ int loadDefaulOptions(Settings &settings)

ofs << "# -> Einstellung gleicht dem Parameter -o [Pfad], --output-file," << std::endl;
ofs << "# falls dieser in der ausgeführeten Unterfunktion vorhanden ist:" << std::endl;
ofs << "#OutputFile=/tmp/a" << std::endl << std::endl;
ofs << "# Hier auch mehrere Pfade Möglich..:" << std::endl;
ofs << "#OutputFile=/tmp/a" << std::endl;
ofs << "#OutputFile=/tmp/b" << std::endl;
ofs << "# -> Log-to-LogFile: Speichere Ausgabe im LogFile - LogFile u.a. beim" << std::endl;
ofs << "# JD2-Renamer Skript nötig. Auch anderer Pfad möglich." << std::endl;
ofs << "OutputFile=" << settings.logFilePath<< std::endl << std::endl;


ofs << "#" << std::endl << "# -> Einstellungen für default Modus:" << std::endl << "#" << std::endl << std::endl;

@ -319,9 +325,9 @@ int loadDefaulOptions(Settings &settings)
std::cout << " > Defaults: search-AchteAufGroßUndKleinschreibung: " << settings.search_IgnoreUpperLower << std::endl;

} else if (what == "OutputFile") {
settings.outputFilePath = data;
settings.outputFilePaths.push_back(data);
if(settings.debugMode)
std::cout << " > Defaults: OutputFile: " << settings.outputFilePath << std::endl;
std::cout << " > Defaults: OutputFile: " << settings.outputFilePaths.back() << std::endl;

} else if (what == "search_UpdateWarnungNachTagen") {
if(!isNumber(data)) {
@ -333,11 +339,8 @@ int loadDefaulOptions(Settings &settings)
if(settings.debugMode)
std::cout << " > Defaults: search_UpdateWarnungNachTagen: " << settings.updateWarningDays << std::endl;

} else if (what == "") {

} else if (what == "") {

} else if (what == "") {
} else if (what == "test") {
//test

} else {
std::cout << " => Warnung: Unbekannte Default-Option: '" << what << "'." << std::endl;
@ -437,9 +440,9 @@ int unterOption_default(Settings *settings, int argc, char ** argv)
break;
case 'o':
if(optarg)
settings->outputFilePath = optarg;
settings->outputFilePaths.push_back(optarg);
if(settings->debugMode)
std::cout << "Pfad zu Output-Datei: " << settings->outputFilePath << std::endl;
std::cout << "Pfad zu Output-Datei: " << settings->outputFilePaths.back() << std::endl;
break;

case 'e':
@ -703,9 +706,9 @@ int unterOption_url(Settings *settings, int argc, char **argv)
break;
case 'o':
if(optarg)
settings->outputFilePath = optarg;
settings->outputFilePaths.push_back(optarg);
if(settings->debugMode)
std::cout << "Pfad zu Output-Datei: " << settings->outputFilePath << std::endl;
std::cout << "Pfad zu Output-Datei: " << settings->outputFilePaths.back() << std::endl;
break;
case 'c':
settings->colorless = true;
@ -920,9 +923,9 @@ int unterOption_info(Settings *settings, int argc, char **argv)
break;
case 'o':
if(optarg)
settings->outputFilePath = optarg;
settings->outputFilePaths.push_back(optarg);
if(settings->debugMode)
std::cout << "Pfad zu Output-Datei: " << settings->outputFilePath << std::endl;
std::cout << "Pfad zu Output-Datei: " << settings->outputFilePaths.back() << std::endl;
break;
case 'h':
unterOption_info_help(settings->programName);
@ -1497,6 +1500,8 @@ int unterOption_printLogFile(Settings *settings, int argc, char **argv)
return 34;
}

// Main-Program:......

if(printMode)
std::cout << Logger(settings->logFilePath).getLogText() << std::endl;
if(ClearMode)

View File

@ -84,12 +84,13 @@ struct Settings {
proxy_ip = "127.0.0.1",
languages = "GerDub,GerSub,Eng,",
genaueHoster = "",
version = "3.8.0",
defaultFileVersion="1.7",
outputFilePath = "",
version = "3.9.0",
defaultFileVersion="1.8",
default_checkPath = "",
default_Searchmuster = "S%Staffel%E%Folge%";

std::vector<std::string> outputFilePaths;

Modus modus = Modus::EXIT;
bool colorless = false,
debugMode = false,

View File

@ -83,7 +83,7 @@ void * threadFunction(void * data) {
//Wenn gar keine Links vorhanden sind:
if(allLinks == "") {
myThreadData->returnValue = " => " + red + "KEINEN Hoster für die Folge " + folgenID + " gefunden." + clearColor;
if(myThreadData->pageManager->writeToFile(myThreadData->settings->outputFilePath, std::string("KEINEN Hoster für die Folge ") + folgenID + std::string(" gefunden.")) != 0) {
if(myThreadData->pageManager->writeToFile(myThreadData->settings->outputFilePaths, std::string("KEINEN Hoster für die Folge ") + folgenID + std::string(" gefunden.")) != 0) {
if(myThreadData->settings->debugMode)
std::cerr << " => Debug: In Thread: "<< myThreadData->id << ": writeToFile Function failed." << std::endl;
return myThreadData->setState(14);
@ -95,7 +95,7 @@ void * threadFunction(void * data) {
+ myThreadData->pageManager->replace(
myThreadData->pageManager->replace( myThreadData->pageManager->replace( allLinks, "data-lang-key=\"1\"", "language=\"GerDub\"" ),
"data-lang-key=\"2\"", "language=\"Eng\"" ), "data-lang-key=\"3\"", "language=\"GerSub\"");
if(myThreadData->pageManager->writeToFile(myThreadData->settings->outputFilePath,
if(myThreadData->pageManager->writeToFile(myThreadData->settings->outputFilePaths,
std::string("Keinen PASSENDEN Hoster für die Folge ") + folgenID + std::string(" gefunden.")) != 0) {
if(myThreadData->settings->debugMode)
std::cerr << " => Debug: In Thread: "<< myThreadData->id << ": writeToFile Function failed." << std::endl;
@ -129,8 +129,8 @@ void * threadFunction(void * data) {
// get NO-Redirect Link after getUrlAfterRedirect Function
} else {
myThreadData->returnValue = " => " + folgenID + ( (folgenID == "") ? "" : ": " ) + green + newUrl + clearColor;
if(myThreadData->settings->outputFilePath != "") {
if(myThreadData->pageManager->writeToFile(myThreadData->settings->outputFilePath,folgenID + ( (folgenID == "") ? "" : ": " ) + newUrl) != 0) {
if(myThreadData->settings->outputFilePaths.size() != 0) {
if(myThreadData->pageManager->writeToFile(myThreadData->settings->outputFilePaths,folgenID + ( (folgenID == "") ? "" : ": " ) + newUrl) != 0) {
if(myThreadData->settings->debugMode)
std::cerr << " => Debug: In Thread: "<< myThreadData->id << ": writeToFile Function failed." << std::endl;
return myThreadData->setState(18);
@ -143,8 +143,8 @@ void * threadFunction(void * data) {
}

myThreadData->returnValue = " => " + folgenID + ( (folgenID == "") ? "" : ": " ) + red + "https://s.to" + Link + clearColor;
if(myThreadData->settings->outputFilePath != "")
if(myThreadData->pageManager->writeToFile(myThreadData->settings->outputFilePath, folgenID + ( (folgenID == "") ? "" : ": " ) + Link) != 0) {
if(myThreadData->settings->outputFilePaths.size() != 0)
if(myThreadData->pageManager->writeToFile(myThreadData->settings->outputFilePaths, folgenID + ( (folgenID == "") ? "" : ": " ) + Link) != 0) {
if(myThreadData->settings->debugMode)
std::cerr << " => Debug: In Thread: "<< myThreadData->id << ": writeToFile Function failed." << std::endl;
return myThreadData->setState(19);
@ -413,8 +413,8 @@ int ProgramManager::defaultModus(Settings *settings)
}

//Write Name to File if -o is set und kein TXT-FILE angegeben wird
if(settings->outputFilePath != "" && !fileExists( settings->default_checkPath ))
if(pageManager.writeToFile(settings->outputFilePath, "Name: " + settings->name) != 0) {
if(settings->outputFilePaths.size() != 0 && !fileExists( settings->default_checkPath ))
if(pageManager.writeToFile(settings->outputFilePaths, "Name: " + settings->name) != 0) {
if(settings->debugMode)
std::cerr << ">>> Debug In " << __FUNCTION__ << ": writeToFile Function fails when write Name." << std::endl;
return 31;
@ -759,7 +759,7 @@ int ProgramManager::infoModus(Settings *settings)
}

//write Name to file
if(pageManager.writeToFile(settings->outputFilePath, "\n\nSerie: " + settings->name + " (" + nameInUrl + ")") != 0)
if(pageManager.writeToFile(settings->outputFilePaths, "\n\nSerie: " + settings->name + " (" + nameInUrl + ")") != 0)
{
if(settings->debugMode)
std::cerr << ">>> Debug In " << __FUNCTION__ << ": writeToFile f() failed." << std::endl;
@ -803,7 +803,7 @@ int ProgramManager::infoModus(Settings *settings)
std::cout << std::endl
<< green << "Die Staffel " << staffel << " hat " << folgen << " Folge" << ((folgen > 1) ? "n" : "") << "." << white << std::endl
<< std::endl;
if(pageManager.writeToFile(settings->outputFilePath, "\nDie Staffel " + std::to_string(staffel)
if(pageManager.writeToFile(settings->outputFilePaths, "\nDie Staffel " + std::to_string(staffel)
+ " hat " + std::to_string(folgen) + " Folge" + ((folgen > 1) ? "n" : "") + ".\n") != 0)
{
if(settings->debugMode)
@ -848,7 +848,7 @@ int ProgramManager::infoModus(Settings *settings)
<< " ( " << blue << "S" << ( (staffel < 10) ? "0" : "" ) << staffel
<< "E" << ( ( atoi( line.substr(0, pos).c_str() ) < 10) ? "0" : "" ) << line.substr(0, pos) << lila << " ):" << white <<std::endl;

if(pageManager.writeToFile(settings->outputFilePath, "Ep. " + std::string( (gesammtFolge < 100) ? ( (gesammtFolge < 10) ? "00" : "0" ) : "" )
if(pageManager.writeToFile(settings->outputFilePaths, "Ep. " + std::string( (gesammtFolge < 100) ? ( (gesammtFolge < 10) ? "00" : "0" ) : "" )
+ std::to_string(gesammtFolge) + " ( S" + ( (staffel < 10) ? "0" : "" ) + std::to_string(staffel) + "E"
+ ( ( atoi( line.substr(0, pos).c_str() ) < 10) ? "0" : "" ) + line.substr(0, pos) + " ):" ) != 0) {
if(settings->debugMode)
@ -868,7 +868,7 @@ int ProgramManager::infoModus(Settings *settings)
titel = line.substr(0, pos);
if(titel != "") {
std::cout << lila << " > Titel 1: " << Lightyellow << titel << white << std::endl;
if(pageManager.writeToFile(settings->outputFilePath, " > Titel 1: " + titel) != 0) {
if(pageManager.writeToFile(settings->outputFilePaths, " > Titel 1: " + titel) != 0) {
if(settings->debugMode)
std::cerr << ">>> Debug In " << __FUNCTION__ << ": writeToFile f() failed." << std::endl;
return 110;
@ -887,7 +887,7 @@ int ProgramManager::infoModus(Settings *settings)
titel = line.substr(0, pos);
if(titel != "") {
std::cout << lila << " > Titel 2: " << Darkyellow << titel << white << std::endl;
if(pageManager.writeToFile(settings->outputFilePath, " > Titel 2: " + titel) != 0) {
if(pageManager.writeToFile(settings->outputFilePaths, " > Titel 2: " + titel) != 0) {
if(settings->debugMode)
std::cerr << ">>> Debug In " << __FUNCTION__ << ": writeToFile f() failed." << std::endl;
return 120;
@ -1004,7 +1004,7 @@ int ProgramManager::infoModus(Settings *settings)
for( const auto &e : genres)
all_genres += e + " ";

if(pageManager.writeToFile(settings->outputFilePath, "\nProduktion von " + startStopDates[0] + " bis " + startStopDates[1] + "\n"
if(pageManager.writeToFile(settings->outputFilePaths, "\nProduktion von " + startStopDates[0] + " bis " + startStopDates[1] + "\n"
"FSK: " + fsk + "\n" + "Cover Bild: " + coverLink + "\n" + "Genre(s): " + all_genres + "\n"
"\nBeschreibung: " + description + "\n") != 0)
{
@ -1462,6 +1462,7 @@ int ProgramManager::listDir(std::string &list,std::string path, int maxDepth, bo
listDir(list, (path + dp->d_name + ((path.find("/") == std::string::npos) ? "\\" : "/") ), maxDepth, debugMode);
} else {
list.append( std::string(dp->d_name) + "\n" );
if(debugMode)
std::cout << " > " << dp->d_name << std::endl;
}
}
@ -1481,7 +1482,7 @@ int ProgramManager::convertLink(std::string redirectLink, AccountManager * accou
if(redirectLink == "" && settings->modus == Modus::DEFAULT_MODUS) {
if(allLinks == "") {
std::cout << " => " << red << "KEINEN Hoster für die Folge " << folgenID << " gefunden." << ((settings->colorless) ? "" : "\033[0m") << std::endl;
if(pageManager.writeToFile(settings->outputFilePath, std::string("KEINEN Hoster für die Folge ") + folgenID + std::string(" gefunden.")) != 0) {
if(pageManager.writeToFile(settings->outputFilePaths, std::string("KEINEN Hoster für die Folge ") + folgenID + std::string(" gefunden.")) != 0) {
if(settings->debugMode)
std::cerr << ">>> Debug In " << __FUNCTION__ << ": writeToFile f() failed." << std::endl;
return 130;
@ -1491,7 +1492,7 @@ int ProgramManager::convertLink(std::string redirectLink, AccountManager * accou
<< "Alle Links:" << std::endl
<< pageManager.replace( pageManager.replace( pageManager.replace( allLinks, "data-lang-key=\"1\"", "language=\"GerDub\"" ),
"data-lang-key=\"2\"", "language=\"Eng\"" ), "data-lang-key=\"3\"", "language=\"GerSub\"") << std::endl;
if(pageManager.writeToFile(settings->outputFilePath, std::string("Keinen PASSENDEN Hoster für die Folge ") + folgenID + std::string(" gefunden.")) != 0) {
if(pageManager.writeToFile(settings->outputFilePaths, std::string("Keinen PASSENDEN Hoster für die Folge ") + folgenID + std::string(" gefunden.")) != 0) {
if(settings->debugMode)
std::cerr << ">>> Debug In " << __FUNCTION__ << ": writeToFile f() failed." << std::endl;
return 138;
@ -1524,8 +1525,8 @@ int ProgramManager::convertLink(std::string redirectLink, AccountManager * accou
} else if (newUrl == "https://s.to/") {
std::cout << " => " << red << folgenID << ( (folgenID == "") ? "" : ": " ) << "Ungültige Url: 'https://s.to" << redirectLink << "'"
<< ((settings->colorless) ? "" : "\033[0m") << std::endl;
if(settings->outputFilePath != "")
if(pageManager.writeToFile(settings->outputFilePath, folgenID + ( (folgenID == "") ? "" : ": " ) + "Ungültige Url: https://s.to" + redirectLink) != 0) {
if(settings->outputFilePaths.size() != 0)
if(pageManager.writeToFile(settings->outputFilePaths, folgenID + ( (folgenID == "") ? "" : ": " ) + "Ungültige Url: https://s.to" + redirectLink) != 0) {
if(settings->debugMode)
std::cerr << ">>> Debug In " << __FUNCTION__ << ": writeToFile f() failed." << std::endl;
return 108;
@ -1534,8 +1535,8 @@ int ProgramManager::convertLink(std::string redirectLink, AccountManager * accou
//sonst war die umwandlung erfolgreich
} else {
std::cout << " => " << folgenID << ( (folgenID == "") ? "" : ": " ) << green << newUrl << ((settings->colorless) ? "" : "\033[0m") << std::endl;
if(settings->outputFilePath != "")
if(pageManager.writeToFile(settings->outputFilePath,folgenID + ( (folgenID == "") ? "" : ": " ) + newUrl) != 0) {
if(settings->outputFilePaths.size() != 0)
if(pageManager.writeToFile(settings->outputFilePaths,folgenID + ( (folgenID == "") ? "" : ": " ) + newUrl) != 0) {
if(settings->debugMode)
std::cerr << ">>> Debug In " << __FUNCTION__ << ": writeToFile f() failed." << std::endl;
return 108;
@ -1546,8 +1547,8 @@ int ProgramManager::convertLink(std::string redirectLink, AccountManager * accou

//nach 3temn Versuch gib error aus:
std::cout << " => " << folgenID << ( (folgenID == "") ? "" : ": " ) << red << "https://s.to" << redirectLink << ((settings->colorless) ? "" : "\033[0m") << std::endl;
if(settings->outputFilePath != "") {
if(pageManager.writeToFile(settings->outputFilePath, folgenID + ( (folgenID == "") ? "" : ": " ) + redirectLink) != 0) {
if(settings->outputFilePaths.size() != 0) {
if(pageManager.writeToFile(settings->outputFilePaths, folgenID + ( (folgenID == "") ? "" : ": " ) + redirectLink) != 0) {
if(settings->debugMode)
std::cerr << ">>> Debug In " << __FUNCTION__ << ": writeToFile f() failed." << std::endl;
return 114;