vKa...again with new lib, but deactivate ssl check? idk if better, but

laos no page found check
This commit is contained in:
Your Name 2022-03-31 18:52:36 +02:00
parent aa1d8d502a
commit 5ae309f86f
8 changed files with 69 additions and 20 deletions

View File

@ -5,8 +5,8 @@ CONFIG += -static -libstdc++ -static-libgcc #-static
unix: LIBS += -lcurl

#Windows
#win32: LIBS += -L$${_PRO_FILE_PWD_}\..\lib\ -lcurl # 7.82.0
win32: LIBS += -L$${_PRO_FILE_PWD_}\..\alt\ -lcurl # 7.64.1
win32: LIBS += -L$${_PRO_FILE_PWD_}\..\lib\ -lcurl # 7.82.0
#win32: LIBS += -L$${_PRO_FILE_PWD_}\..\alt\ -lcurl # 7.64.1


CONFIG += c++17 console

View File

@ -72,14 +72,12 @@ int AccountManager::writeDefault(std::string path)
STO,
ANICLOUD,
STOIP,
SERIENSTREAMSX,
SERIENCAM,
SERIENSTREAMTO
};

if( pageInUse.url == pagesALL[STO].url
|| pageInUse.url == pagesALL[STOIP].url
|| pageInUse.url == pagesALL[SERIENSTREAMSX].url
|| pageInUse.url == pagesALL[SERIENCAM].url
|| pageInUse.url == pagesALL[SERIENSTREAMTO].url)
{

View File

@ -1,5 +1,7 @@
#include "programManager.h"



int main(int argc, char *argv[])
{
ProgramManager mainProgram;

View File

@ -112,6 +112,14 @@ Reply PageManager::getServerRequest(std::string protocol, std::string Url, bool

//curl_easy_setopt(curl, CURLOPT_FAILONERROR, true); // html errors to errorcode res
//curl_easy_setopt(curl, CURLOPT_NOPROGRESS, false); // Progressausgabe aktivieren

#ifdef noSLLCheck
// TODO: SET IT BACK
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0);
#endif


curl_easy_setopt(curl, CURLOPT_URL, Url.c_str()); //Url für Curl
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L); //follows redirection
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback); // Funktion zum Speichern des outputs in einem string
@ -204,6 +212,13 @@ int PageManager::downLoadToFile(std::string filePath, std::string url)
return 2;
}

#ifdef noSLLCheck
// TODO: SET IT BACK
curl_easy_setopt(curl_handle, CURLOPT_SSL_VERIFYPEER, 0);
curl_easy_setopt(curl_handle, CURLOPT_SSL_VERIFYHOST, 0);
#endif


/* set URL to get here */
curl_easy_setopt(curl_handle, CURLOPT_URL, url.c_str());

@ -301,7 +316,7 @@ Reply PageManager::getUrlAfterRedirect( std::string p,std::string Url, std::stri
return getServerRequest(p , Url, true, "", false, true, cookieFilePath);
}

checkNameRply PageManager::checkName(std::vector<PAGE> pages, std::string Name, bool useFirstPage)
checkNameRply PageManager::checkName(std::vector<PAGE> &pages, std::string Name, bool useFirstPage)
{
if(pages.size() < 1) {
std::cout << " => Error Keine Internet Seiten vorhanden." << std::endl;
@ -317,9 +332,9 @@ checkNameRply PageManager::checkName(std::vector<PAGE> pages, std::string Name,
PAGE Page;

//für jede Seite
for ( const auto &p : pages ) {
for ( unsigned i = 0; i < pages.size(); i++ ) {

std::string html = getServerRequest(p.protocol, p.url + p.UrlDir + name).html;
std::string html = getServerRequest(pages.at(i).protocol, pages.at(i).url + pages.at(i).UrlDir + name).html;
if(html.find("Die gewünschte Serie wurde nicht gefunden oder ist im Moment deaktiviert.") != std::string::npos) {
continue;

@ -328,14 +343,17 @@ checkNameRply PageManager::checkName(std::vector<PAGE> pages, std::string Name,
continue;

} else if (html == "-1" || html == "") {
std::cout << "\33[2K\r" <<" => WARNUNG: Das laden der Seite : '" << p.url << "' ist fehlgeschlagen" << std::endl;
std::cout << "\33[2K\r" <<" => WARNUNG: Das laden der Seite : '" << pages.at(i).url << "' ist fehlgeschlagen" << std::endl;

pages.erase(pages.begin() + i);
i--;
continue;

}
else {
count ++;
pagesonExist += p.url + " ";
Page = p;
pagesonExist += pages.at(i).url + " ";
Page = pages.at(i);

if(useFirstPage) {
if(debugMode)
@ -352,8 +370,14 @@ checkNameRply PageManager::checkName(std::vector<PAGE> pages, std::string Name,
} else if ( count > 1) {
std::cout << "\33[2K\r => Die Serie existiert auf mehreren Seiten " << name << ": '" << pagesonExist << "'" << std::endl;
std::cout << "\33[2K\r Benutze die Option -f --use-first, um automatisch die 1. Seite zu verwenden!" << std::endl;
return checkNameRply("", PAGE(), checkNameRply::NOTHING_FOUND); //MULTIPLE OPTIONS FOUND!!!! same option -> führe suche funktion aus
} else {
return checkNameRply("", PAGE(), checkNameRply::MULTIPLE_OPTIONS); //MULTIPLE OPTIONS FOUND!!!! same option -> führe suche funktion aus

} else if( count == 0 && pages.size() == 0) {
//keine suche wenn es keine funktionierende seite gibt
return checkNameRply("", PAGE(), checkNameRply::NO_WORKING_PAGE);

} // führe suche aus...
else {
std::cout << "\33[2K\r => Die gewünschte Serie wurde nicht gefunden oder ist im Moment deaktiviert: '" << Name << "'" << std::endl;
return checkNameRply("", PAGE(), checkNameRply::NOTHING_FOUND);
}

View File

@ -8,6 +8,10 @@
#ifdef _WIN32
#include "./../include/curl/curl.h"
#include <windows.h>

//----------------------?????????????????
#define noSLLCheck

#else
#include "curl/curl.h"
#endif
@ -29,7 +33,7 @@ struct Reply {
struct checkNameRply {
std::string name;
PAGE pageInUse;
enum STATUS { SUCCESS, FAILED, NOTHING_FOUND } status;
enum STATUS { SUCCESS, FAILED, NOTHING_FOUND, MULTIPLE_OPTIONS, NO_WORKING_PAGE } status;

checkNameRply(const std::string &name, const PAGE &p, const checkNameRply::STATUS &s )
: name(name), pageInUse(p), status(s) {}
@ -52,7 +56,7 @@ public:

int login(PAGE page, Account account, std::string cookieFilePath);
Reply getUrlAfterRedirect(std::string p, std::string Url, std::string cookieFilePath);
checkNameRply checkName(std::vector<PAGE> pages, std::string Name, bool useFirstPage);
checkNameRply checkName(std::vector<PAGE> &pages, std::string Name, bool useFirstPage);
std::string getLinks(std::string HTML);
std::string chooseHosterLink(std::string HosterList, std::string Hoster_with_Highst_Priority_at_First, std::string languages_with_highst_priority_at_first, bool withWarnMsg);
std::string getLinkAfterHosterBasedOperation(std::string url);

View File

@ -217,7 +217,7 @@ int loadDefaulOptions(Settings &settings)
ofs << "# (anicloud.ion/serienstream.sx) - Der Priorität nach angeben!" << std::endl;
ofs << "# Kombinierbar mit -f - Verwende erste Seite" << std::endl;
ofs << "# Unterstützte Seiten:" << std::endl;
ofs << "# s.to, 190.115.18.20, anicloud.io, serienstream.to, serienstream.sx, serien.cam" << std::endl;
ofs << "# s.to, 190.115.18.20, anicloud.io, serienstream.to, serien.cam, all" << std::endl;
ofs << "Internetseiten=anicloud.io,serienstream.sx" << std::endl << std::endl;

ofs << "# -> Standart Wert für Parameter: -f, --use-first:" << std::endl;
@ -1837,6 +1837,11 @@ int setUpInternetPages(Settings &settings, std::string optarg)
while(std::getline(ss, value, ',')) {
if(value == "")
continue;
else if(value == "all") {
for( const auto & internetSeite : settings.pagesALL )
settings.pagesInUse.push_back(internetSeite);
break;
}
bool found = false;
for( const auto & internetSeite : settings.pagesALL ) {
if( value == internetSeite.url ) {

View File

@ -73,10 +73,10 @@ struct Settings {
_stoIP = PAGE( "", "190.115.18.20", "Normale_Serien", "/serien-alphabet", "/serie/stream/"),
serienstreamto = PAGE("https://", "serienstream.to", "Normale_Serien", "/serien-alphabet", "/serie/stream/"),
seriencam = PAGE("https://", "serien.cam", "Normale_Serien", "/serien-alphabet", "/serie/stream/"),
_serienstreamsx = PAGE( "https://", "serienstream.sx", "Normale_Serien", "/serien-alphabet", "/serie/stream/"),
// _serienstreamsx = PAGE( "https://", "serienstream.sx", "Normale_Serien", "/serien-alphabet", "/serie/stream/"),

_anicio = PAGE( "https://" , "anicloud.io", "Animes", "/animes-alphabet", "/anime/stream/");
const PAGE pagesALL[6] = { _sto, _anicio, _stoIP, _serienstreamsx, seriencam, serienstreamto };
const PAGE pagesALL[5] = { _sto, _anicio, _stoIP, /*_serienstreamsx,*/ seriencam, serienstreamto };

std::vector<PAGE> pagesInUse; // Priority sorted
bool useFirstPage = false;

View File

@ -364,13 +364,19 @@ int ProgramManager::sucheNach_1_Serien(Settings *settings, PageManager &pageMana
auto ret = pageManager.checkName( pages /*settings->pages dann glaub
ich immer fehler, wenn serie auf 2 seiten excistiert*/,
finds, settings->useFirstPage);
if(ret.status == ret.FAILED)
if(ret.status == ret.FAILED || ret.status == ret.MULTIPLE_OPTIONS)
return 23;
else if( ret.status == ret.NOTHING_FOUND ) {
std::cout << " => Error: Konnte die von der Suche vorgeschlagene Serie nicht finden." << std::endl;
if(settings->debugMode)
std::cerr << ">>> Debug In " << __FUNCTION__ << ": Extracted Name from searchModus is invalid." << std::endl;
return 47;
} else if( ret.status == ret.NO_WORKING_PAGE ) {
std::cout << " => Error: Keine Funktionierende Internetseite!" << std::endl;
if(settings->debugMode)
std::cerr << ">>> Debug In " << __FUNCTION__ << ": Keine Funktionierende Internetseite!" << std::endl;
return 0;

} else {
//speichere neuen Namen in übergebenen ref var
newNameAndPage.name = ret.name;
@ -569,7 +575,7 @@ int ProgramManager::defaultModus(Settings *settings)

if(retVal.status == retVal.FAILED)
return 67;
else if(retVal.status == retVal.NOTHING_FOUND) {
else if(retVal.status == retVal.NOTHING_FOUND || retVal.status == retVal.MULTIPLE_OPTIONS) {
//Wenn nicht, dann fühe noch eine Suche nach ähnlichen durch && Wenn nur 1ne dacnn frag ob es diese ist.
int res = 0;
if( ( res = sucheNach_1_Serien(settings, pageManager, retVal) ) != 0) {
@ -577,6 +583,11 @@ int ProgramManager::defaultModus(Settings *settings)
std::cerr << ">>> Debug In " << __FUNCTION__ << ": sucheNach_1_Serien failed or found more options." << std::endl;
return (res == -10101) ? 0 : 202;
}
} else if( retVal.status == retVal.NO_WORKING_PAGE ) {
std::cout << " => Error: Keine Funktionierende Internetseite!" << std::endl;
if(settings->debugMode)
std::cerr << ">>> Debug In " << __FUNCTION__ << ": Keine Funktionierende Internetseite!" << std::endl;
return 0;
}

std::string nameInUrl = retVal.name;
@ -1041,7 +1052,7 @@ int ProgramManager::infoModus(Settings *settings)
auto retV = pageManager.checkName(settings->pagesInUse, settings->name, settings->useFirstPage);
if(retV.status == retV.FAILED)
return 145;
else if(retV.status == retV.NOTHING_FOUND) {
else if(retV.status == retV.NOTHING_FOUND || retV.status == retV.MULTIPLE_OPTIONS ) {
//Wenn nicht, dann fühe noch eine Suche nach ähnlichen durch.
int res = 0;
if( ( res = sucheNach_1_Serien(settings, pageManager, retV) ) != 0) {
@ -1049,6 +1060,11 @@ int ProgramManager::infoModus(Settings *settings)
std::cerr << ">>> Debug In " << __FUNCTION__ << ": sucheNach_1_Serien function failed." << std::endl;
return (res == -10101) ? 0 : 28;
}
} else if( retV.status == retV.NO_WORKING_PAGE ) {
std::cout << " => Error: Keine Funktionierende Internetseite!" << std::endl;
if(settings->debugMode)
std::cerr << ">>> Debug In " << __FUNCTION__ << ": Keine Funktionierende Internetseite!" << std::endl;
return 0;
}
std::string nameInUrl = retV.name;
PAGE page = retV.pageInUse;