Verbosity: Added 'verbose' bool
If the 'verbose' bool is true the terminal will be flooded with debug info. Currently the 'verbose' bool is not passed to curl because that is to much info even for me.
This commit is contained in:
parent
315d117a61
commit
d8b3b65216
68
main.cpp
68
main.cpp
|
@ -301,6 +301,7 @@ std::string get_episode_page(const std::string& url, const std::string& auth_coo
|
||||||
curl_easy_setopt(hnd, CURLOPT_HTTP_VERSION, (long)CURL_HTTP_VERSION_2TLS);
|
curl_easy_setopt(hnd, CURLOPT_HTTP_VERSION, (long)CURL_HTTP_VERSION_2TLS);
|
||||||
curl_easy_setopt(hnd, CURLOPT_FTP_SKIP_PASV_IP, 1L);
|
curl_easy_setopt(hnd, CURLOPT_FTP_SKIP_PASV_IP, 1L);
|
||||||
curl_easy_setopt(hnd, CURLOPT_TCP_KEEPALIVE, 1L);
|
curl_easy_setopt(hnd, CURLOPT_TCP_KEEPALIVE, 1L);
|
||||||
|
curl_easy_setopt(hnd, CURLOPT_VERBOSE, verbose);
|
||||||
|
|
||||||
curl_easy_setopt(hnd, CURLOPT_WRITEFUNCTION, WriteCallback);
|
curl_easy_setopt(hnd, CURLOPT_WRITEFUNCTION, WriteCallback);
|
||||||
curl_easy_setopt(hnd, CURLOPT_WRITEDATA, &episode_data);
|
curl_easy_setopt(hnd, CURLOPT_WRITEDATA, &episode_data);
|
||||||
|
@ -332,7 +333,7 @@ std::string get_episode_page(const std::string& url, const std::string& auth_coo
|
||||||
return episode_data;
|
return episode_data;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string get_embedded_page(const std::string& url, const std::string& cookie) {
|
std::string get_embedded_page(const std::string& url, const std::string& cookie, bool verbose = false) {
|
||||||
CURLcode ret;
|
CURLcode ret;
|
||||||
CURL *hnd;
|
CURL *hnd;
|
||||||
struct curl_slist *slist1;
|
struct curl_slist *slist1;
|
||||||
|
@ -363,6 +364,7 @@ std::string get_embedded_page(const std::string& url, const std::string& cookie)
|
||||||
curl_easy_setopt(hnd, CURLOPT_HTTP_VERSION, (long)CURL_HTTP_VERSION_2TLS);
|
curl_easy_setopt(hnd, CURLOPT_HTTP_VERSION, (long)CURL_HTTP_VERSION_2TLS);
|
||||||
curl_easy_setopt(hnd, CURLOPT_FTP_SKIP_PASV_IP, 1L);
|
curl_easy_setopt(hnd, CURLOPT_FTP_SKIP_PASV_IP, 1L);
|
||||||
curl_easy_setopt(hnd, CURLOPT_TCP_KEEPALIVE, 1L);
|
curl_easy_setopt(hnd, CURLOPT_TCP_KEEPALIVE, 1L);
|
||||||
|
curl_easy_setopt(hnd, CURLOPT_VERBOSE, verbose);
|
||||||
|
|
||||||
|
|
||||||
curl_easy_setopt(hnd, CURLOPT_WRITEFUNCTION, WriteCallback);
|
curl_easy_setopt(hnd, CURLOPT_WRITEFUNCTION, WriteCallback);
|
||||||
|
@ -395,7 +397,7 @@ std::string get_embedded_page(const std::string& url, const std::string& cookie)
|
||||||
return embedded_page;
|
return embedded_page;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string get_config_page(const std::string& url) {
|
std::string get_config_page(const std::string& url, bool verbose = false) {
|
||||||
CURLcode ret;
|
CURLcode ret;
|
||||||
CURL *hnd;
|
CURL *hnd;
|
||||||
struct curl_slist *slist1;
|
struct curl_slist *slist1;
|
||||||
|
@ -426,6 +428,7 @@ std::string get_config_page(const std::string& url) {
|
||||||
curl_easy_setopt(hnd, CURLOPT_HTTP_VERSION, (long)CURL_HTTP_VERSION_2TLS);
|
curl_easy_setopt(hnd, CURLOPT_HTTP_VERSION, (long)CURL_HTTP_VERSION_2TLS);
|
||||||
curl_easy_setopt(hnd, CURLOPT_FTP_SKIP_PASV_IP, 1L);
|
curl_easy_setopt(hnd, CURLOPT_FTP_SKIP_PASV_IP, 1L);
|
||||||
curl_easy_setopt(hnd, CURLOPT_TCP_KEEPALIVE, 1L);
|
curl_easy_setopt(hnd, CURLOPT_TCP_KEEPALIVE, 1L);
|
||||||
|
curl_easy_setopt(hnd, CURLOPT_VERBOSE, verbose);
|
||||||
|
|
||||||
curl_easy_setopt(hnd, CURLOPT_WRITEFUNCTION, WriteCallback);
|
curl_easy_setopt(hnd, CURLOPT_WRITEFUNCTION, WriteCallback);
|
||||||
curl_easy_setopt(hnd, CURLOPT_WRITEDATA, &config_page);
|
curl_easy_setopt(hnd, CURLOPT_WRITEDATA, &config_page);
|
||||||
|
@ -495,7 +498,6 @@ int main(int argc, char** argv) {
|
||||||
std::string season;
|
std::string season;
|
||||||
std::string episode;
|
std::string episode;
|
||||||
|
|
||||||
std::string user_auth_token;
|
|
||||||
std::string firefox_profile;
|
std::string firefox_profile;
|
||||||
|
|
||||||
std::string config_url;
|
std::string config_url;
|
||||||
|
@ -517,17 +519,23 @@ int main(int argc, char** argv) {
|
||||||
|
|
||||||
sqlite3 *db;
|
sqlite3 *db;
|
||||||
|
|
||||||
|
if (verbose) {
|
||||||
|
std::cout << "Getting firefox cookies from firefox sqlite db\n";
|
||||||
|
}
|
||||||
|
|
||||||
if (!std::filesystem::is_directory("tmp"))
|
if (!std::filesystem::is_directory("tmp"))
|
||||||
std::filesystem::create_directories("tmp");
|
std::filesystem::create_directories("tmp");
|
||||||
std::filesystem::remove("tmp/firefox_cookies.sqlite");
|
std::filesystem::remove("tmp/firefox_cookies.sqlite");
|
||||||
std::filesystem::copy_file(firefox_profile + "/cookies.sqlite", "tmp/firefox_cookies.sqlite");
|
std::filesystem::copy_file(firefox_profile + "/cookies.sqlite", "tmp/firefox_cookies.sqlite");
|
||||||
|
|
||||||
int rc = sqlite3_open("firefox_cookies.sqlite", &db);
|
int rc = sqlite3_open("tmp/firefox_cookies.sqlite", &db);
|
||||||
if (rc) {
|
if (rc) {
|
||||||
std::cerr << "Can't open database: " << sqlite3_errmsg(db) << '\n';
|
std::cerr << "Can't open database: " << sqlite3_errmsg(db) << '\n';
|
||||||
return -1;
|
return 1;
|
||||||
} else {
|
} else {
|
||||||
std::cerr << "Opened database successfully\n";
|
if (verbose) {
|
||||||
|
std::cout << "Firefox database opened successfully\n";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
char *err_code = nullptr;
|
char *err_code = nullptr;
|
||||||
|
@ -540,9 +548,9 @@ int main(int argc, char** argv) {
|
||||||
fprintf(stderr, "SQL error: %s\n", err_code);
|
fprintf(stderr, "SQL error: %s\n", err_code);
|
||||||
sqlite3_free(err_code);
|
sqlite3_free(err_code);
|
||||||
sqlite3_close(db);
|
sqlite3_close(db);
|
||||||
return -2;
|
return 2;
|
||||||
} else {
|
} else if (verbose) {
|
||||||
fprintf(stdout, "Operation done successfully\n");
|
std::cout << "Got __cf_bm cookie from firefox sqlite db\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
sql = "SELECT value FROM moz_cookies WHERE host LIKE '%dropout.tv%' AND name='_session';";
|
sql = "SELECT value FROM moz_cookies WHERE host LIKE '%dropout.tv%' AND name='_session';";
|
||||||
|
@ -553,9 +561,9 @@ int main(int argc, char** argv) {
|
||||||
fprintf(stderr, "SQL error: %s\n", err_code);
|
fprintf(stderr, "SQL error: %s\n", err_code);
|
||||||
sqlite3_free(err_code);
|
sqlite3_free(err_code);
|
||||||
sqlite3_close(db);
|
sqlite3_close(db);
|
||||||
return -3;
|
return 3;
|
||||||
} else {
|
} else if (verbose) {
|
||||||
fprintf(stdout, "Operation done successfully\n");
|
std::cout << "Got _session cookie from firefox sqlite db\n";
|
||||||
}
|
}
|
||||||
sqlite3_close(db);
|
sqlite3_close(db);
|
||||||
|
|
||||||
|
@ -599,8 +607,10 @@ int main(int argc, char** argv) {
|
||||||
std::string video_data;
|
std::string video_data;
|
||||||
|
|
||||||
if (argc > 1) {
|
if (argc > 1) {
|
||||||
std::cout << argv[1] << std::endl;
|
|
||||||
episode_url = argv[1];
|
episode_url = argv[1];
|
||||||
|
if (verbose) {
|
||||||
|
std::cout << "Got episode video_url: " << episode_url << " from program arguments\n";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
std::cout << "Enter episode url: ";
|
std::cout << "Enter episode url: ";
|
||||||
|
@ -615,15 +625,27 @@ int main(int argc, char** argv) {
|
||||||
|
|
||||||
name = get_episode_name(episode_data);
|
name = get_episode_name(episode_data);
|
||||||
|
|
||||||
|
if (verbose) {
|
||||||
|
std::cout << "Got name: " << name << '\n';
|
||||||
|
}
|
||||||
|
|
||||||
season = get_season_number(episode_data);
|
season = get_season_number(episode_data);
|
||||||
|
|
||||||
|
if (verbose) {
|
||||||
|
std::cout << "Got season: " << season << '\n';
|
||||||
|
}
|
||||||
|
|
||||||
episode = get_episode_number(episode_data);
|
episode = get_episode_number(episode_data);
|
||||||
|
|
||||||
|
if (verbose) {
|
||||||
|
std::cout << "Got episode: " << episode << '\n';
|
||||||
|
}
|
||||||
|
|
||||||
series_name = get_series_name(episode_data);
|
series_name = get_series_name(episode_data);
|
||||||
|
|
||||||
getline(user_auth_file, user_auth_token);
|
if (verbose) {
|
||||||
|
std::cout << "Got series: " << series_name << '\n';
|
||||||
user_auth_token = "auth-user-token=" + user_auth_token;
|
}
|
||||||
|
|
||||||
std::replace(series_name.begin(), series_name.end(), ' ', '_');
|
std::replace(series_name.begin(), series_name.end(), ' ', '_');
|
||||||
|
|
||||||
|
@ -635,12 +657,17 @@ int main(int argc, char** argv) {
|
||||||
|
|
||||||
std::replace(filename.begin(), filename.end(), ',', '_');
|
std::replace(filename.begin(), filename.end(), ',', '_');
|
||||||
|
|
||||||
|
if (verbose) {
|
||||||
|
std::cout << "filename: " << filename << '\n';
|
||||||
|
}
|
||||||
|
|
||||||
embed_url = get_embed_url(episode_data);
|
embed_url = get_embed_url(episode_data);
|
||||||
|
|
||||||
replace_all(embed_url, "&", "&");
|
replace_all(embed_url, "&", "&");
|
||||||
|
|
||||||
std::cout << std::endl << "embed url: " << embed_url << std::endl;
|
if (verbose) {
|
||||||
|
std::cout << "Got embedded video_url: " << embed_url << '\n';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
curl = curl_easy_init();
|
curl = curl_easy_init();
|
||||||
|
@ -648,8 +675,8 @@ int main(int argc, char** argv) {
|
||||||
embedded_data = get_embedded_page(embed_url, auth_cookie);
|
embedded_data = get_embedded_page(embed_url, auth_cookie);
|
||||||
|
|
||||||
if (embedded_data.find("you are not authorized") != std::string::npos) {
|
if (embedded_data.find("you are not authorized") != std::string::npos) {
|
||||||
std::cerr << "ERROR: Could not access video\n";
|
std::cerr << "ERROR: Could not access video. Try refreshing cookies.\n";
|
||||||
return -4;
|
return 6;
|
||||||
}
|
}
|
||||||
|
|
||||||
config_url = get_config_url(embedded_data);
|
config_url = get_config_url(embedded_data);
|
||||||
|
@ -672,6 +699,9 @@ int main(int argc, char** argv) {
|
||||||
if(curl) {
|
if(curl) {
|
||||||
if (!std::filesystem::is_directory(series_name)) {
|
if (!std::filesystem::is_directory(series_name)) {
|
||||||
std::filesystem::create_directories(series_name);
|
std::filesystem::create_directories(series_name);
|
||||||
|
if (verbose) {
|
||||||
|
std::cout << "Creating series directory" << '\n';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::fstream out(filename, std::ios_base::in|std::ios_base::out|std::ios_base::trunc);
|
std::fstream out(filename, std::ios_base::in|std::ios_base::out|std::ios_base::trunc);
|
||||||
|
|
Loading…
Reference in New Issue