Functions: use new progress, refreshSelect instead of refreshSingle
This commit is contained in:
parent
9c551e8b55
commit
6c859efdf5
251
functions.cpp
251
functions.cpp
@ -55,6 +55,7 @@ std::wstring utf8_to_wstring( const std::string &utf8 ) {
|
|||||||
|
|
||||||
#endif // _WIN32
|
#endif // _WIN32
|
||||||
|
|
||||||
|
// encode url so it's valid even with UTF-8 characters
|
||||||
string encodeUrl( const string &url ) {
|
string encodeUrl( const string &url ) {
|
||||||
// stolen from here -
|
// stolen from here -
|
||||||
// https://stackoverflow.com/questions/154536/encode-decode-urls-in-c
|
// https://stackoverflow.com/questions/154536/encode-decode-urls-in-c
|
||||||
@ -439,7 +440,8 @@ void addToDB( string &show, const string &path, const string &language,
|
|||||||
prepareDB();
|
prepareDB();
|
||||||
#else
|
#else
|
||||||
void addToDB( string &show, const string &path, const string &language,
|
void addToDB( string &show, const string &path, const string &language,
|
||||||
const string &id, const string &pattern, bool linux, bool dvd ) {
|
const string &id, const string &pattern, bool linux, bool dvd,
|
||||||
|
void *progress_ptr ) {
|
||||||
if ( !FSLib::exists( getDBName() ) )
|
if ( !FSLib::exists( getDBName() ) )
|
||||||
prepareDB( pattern );
|
prepareDB( pattern );
|
||||||
#endif
|
#endif
|
||||||
@ -460,8 +462,8 @@ void addToDB( string &show, const string &path, const string &language,
|
|||||||
TEXT( "INSERT OR IGNORE INTO SHOWS ( TVID, SHOW, PATH, LANGUAGE, DVD ) "
|
TEXT( "INSERT OR IGNORE INTO SHOWS ( TVID, SHOW, PATH, LANGUAGE, DVD ) "
|
||||||
"VALUES ( '" ) +
|
"VALUES ( '" ) +
|
||||||
sanitize( id ) + TEXT( "', '" ) + sanitize( show ) + TEXT( "', '" ) +
|
sanitize( id ) + TEXT( "', '" ) + sanitize( show ) + TEXT( "', '" ) +
|
||||||
sanitize( absolute ) + TEXT( "', '" ) + sanitize( language ) + TEXT( "', " ) +
|
sanitize( absolute ) + TEXT( "', '" ) + sanitize( language ) +
|
||||||
( dvd ? TEXT( "1" ) : TEXT( "0" ) ) + TEXT( " );" ) );
|
TEXT( "', " ) + ( dvd ? TEXT( "1" ) : TEXT( "0" ) ) + TEXT( " );" ) );
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
string show_id = std::to_wstring( db.lastRowID() );
|
string show_id = std::to_wstring( db.lastRowID() );
|
||||||
#else
|
#else
|
||||||
@ -478,20 +480,20 @@ void addToDB( string &show, const string &path, const string &language,
|
|||||||
iterateFS( seasons, absolute );
|
iterateFS( seasons, absolute );
|
||||||
auto size = seasons.size();
|
auto size = seasons.size();
|
||||||
size_t i = 0;
|
size_t i = 0;
|
||||||
cout << "Renaming" << std::endl;
|
|
||||||
#ifdef _WIN32
|
|
||||||
cout << std::endl;
|
|
||||||
#endif
|
|
||||||
#ifndef GUI
|
#ifndef GUI
|
||||||
ProgressBar::print( 0 );
|
ProgressBar p;
|
||||||
|
#else
|
||||||
|
ProgressBar p( progress_ptr );
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
p.print( TEXT( "Renaming" ) );
|
||||||
|
p.print( 0 );
|
||||||
for ( auto &x : seasons ) {
|
for ( auto &x : seasons ) {
|
||||||
singleSeason( absolute, show, x.first, id, language, pattern, linux,
|
singleSeason( absolute, show, x.first, id, language, pattern, linux,
|
||||||
true, &x.second, false, dvd );
|
true, &x.second, false, dvd );
|
||||||
i++;
|
i++;
|
||||||
#ifndef GUI
|
p.print( ( i * 100 ) / size );
|
||||||
ProgressBar::print( ( i * 100 ) / size );
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
#ifndef GUI
|
#ifndef GUI
|
||||||
cout << std::endl;
|
cout << std::endl;
|
||||||
@ -499,13 +501,8 @@ void addToDB( string &show, const string &path, const string &language,
|
|||||||
size = seasons.size();
|
size = seasons.size();
|
||||||
i = 0;
|
i = 0;
|
||||||
|
|
||||||
cout << "Adding to database" << std::endl;
|
p.print( TEXT( "Adding to database" ) );
|
||||||
#ifdef _WIN32
|
p.print( 0 );
|
||||||
cout << std::endl;
|
|
||||||
#endif
|
|
||||||
#ifndef GUI
|
|
||||||
ProgressBar::print( 0 );
|
|
||||||
#endif
|
|
||||||
for ( auto &season : seasons ) {
|
for ( auto &season : seasons ) {
|
||||||
for ( auto &episode : season.second ) {
|
for ( auto &episode : season.second ) {
|
||||||
db.exec( TEXT( "INSERT OR IGNORE INTO EPISODES ( SHOWID, PATH ) "
|
db.exec( TEXT( "INSERT OR IGNORE INTO EPISODES ( SHOWID, PATH ) "
|
||||||
@ -514,9 +511,7 @@ void addToDB( string &show, const string &path, const string &language,
|
|||||||
TEXT( "' );" ) );
|
TEXT( "' );" ) );
|
||||||
}
|
}
|
||||||
i++;
|
i++;
|
||||||
#ifndef GUI
|
p.print( ( i * 100 ) / size );
|
||||||
ProgressBar::print( ( i * 100 ) / size );
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
#ifndef GUI
|
#ifndef GUI
|
||||||
cout << std::endl;
|
cout << std::endl;
|
||||||
@ -554,7 +549,13 @@ void cleanUpLine() {
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef GUI
|
||||||
void refreshDB( bool linux ) {
|
void refreshDB( bool linux ) {
|
||||||
|
#else
|
||||||
|
void refreshDB( bool linux, void *progress_ptr ) {
|
||||||
|
#endif
|
||||||
|
if ( !FSLib::exists( getDBName() ) )
|
||||||
|
return;
|
||||||
std::vector< std::unordered_map< string, string > > shows;
|
std::vector< std::unordered_map< string, string > > shows;
|
||||||
SQLite::Database db{};
|
SQLite::Database db{};
|
||||||
try {
|
try {
|
||||||
@ -574,26 +575,23 @@ void refreshDB( bool linux ) {
|
|||||||
db.exec( TEXT( "SELECT PATH FROM SHOWS WHERE TVID == 'pattern';" ),
|
db.exec( TEXT( "SELECT PATH FROM SHOWS WHERE TVID == 'pattern';" ),
|
||||||
pattern );
|
pattern );
|
||||||
|
|
||||||
cout << "Refreshing database" << std::endl << std::endl << std::endl;
|
#ifndef GUI
|
||||||
#ifdef _WIN32
|
ProgressBar p;
|
||||||
cout << std::endl;
|
p.print( TEXT( "Refreshing database" ) );
|
||||||
#endif
|
cout << std::endl << std::endl;
|
||||||
|
#else // GUI
|
||||||
|
ProgressBar p( progress_ptr );
|
||||||
|
#endif // GUI
|
||||||
|
|
||||||
for ( auto &show : shows ) {
|
for ( auto &show : shows ) {
|
||||||
if ( FSLib::exists( show[TEXT( "PATH" )] ) ) {
|
if ( FSLib::exists( show[TEXT( "PATH" )] ) ) {
|
||||||
cleanUpLine();
|
cleanUpLine();
|
||||||
cout << "Refreshing " << show[TEXT( "SHOW" )] << std::endl;
|
p.print( TEXT( "Refreshing " ) + show[TEXT( "SHOW" )] );
|
||||||
#ifdef _WIN32
|
p.print( 0 );
|
||||||
cout << std::endl;
|
|
||||||
#endif
|
|
||||||
#ifndef GUI
|
|
||||||
ProgressBar::print( 0 );
|
|
||||||
#endif
|
|
||||||
std::map< int, std::map< int, string > > seasons;
|
std::map< int, std::map< int, string > > seasons;
|
||||||
// get all season number from this directory and subdirectories
|
// get all season number from this directory and subdirectories
|
||||||
iterateFS( seasons, show[TEXT( "PATH" )] );
|
iterateFS( seasons, show[TEXT( "PATH" )] );
|
||||||
#ifndef GUI
|
|
||||||
auto size = seasons.size();
|
auto size = seasons.size();
|
||||||
#endif
|
|
||||||
size_t i{};
|
size_t i{};
|
||||||
for ( auto &x : seasons ) {
|
for ( auto &x : seasons ) {
|
||||||
singleSeason( show[TEXT( "PATH" )], show[TEXT( "SHOW" )],
|
singleSeason( show[TEXT( "PATH" )], show[TEXT( "SHOW" )],
|
||||||
@ -602,27 +600,48 @@ void refreshDB( bool linux ) {
|
|||||||
&x.second, false,
|
&x.second, false,
|
||||||
show[TEXT( "DVD" )] == TEXT( "1" ) );
|
show[TEXT( "DVD" )] == TEXT( "1" ) );
|
||||||
i++;
|
i++;
|
||||||
#ifndef GUI
|
p.print( ( i * 100 ) / size );
|
||||||
ProgressBar::print( ( i * 100 ) / size );
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
p.print( 100 );
|
||||||
#ifndef GUI
|
#ifndef GUI
|
||||||
ProgressBar::print( 100 );
|
|
||||||
cout << std::endl;
|
cout << std::endl;
|
||||||
|
cleanUpLine();
|
||||||
#endif
|
#endif
|
||||||
|
p.print( TEXT( "Updating " ) + show[TEXT( "SHOW" )] +
|
||||||
|
TEXT( " in database" ) );
|
||||||
|
p.print( 0 );
|
||||||
|
i = 0;
|
||||||
|
size_t j{};
|
||||||
|
size_t addition = 100 / seasons.size();
|
||||||
for ( auto &season : seasons ) {
|
for ( auto &season : seasons ) {
|
||||||
|
j = 0;
|
||||||
|
size_t smalladdition = addition / season.second.size();
|
||||||
for ( auto &episode : season.second ) {
|
for ( auto &episode : season.second ) {
|
||||||
db.exec( TEXT( "INSERT INTO EPISODES ( SHOWID, PATH ) "
|
db.exec( TEXT( "INSERT INTO EPISODES ( SHOWID, PATH ) "
|
||||||
"VALUES ( " ) +
|
"VALUES ( " ) +
|
||||||
show[TEXT( "ID" )] + TEXT( ", '" ) +
|
show[TEXT( "ID" )] + TEXT( ", '" ) +
|
||||||
sanitize( episode.second ) + TEXT( "' );" ) );
|
sanitize( episode.second ) + TEXT( "' );" ) );
|
||||||
|
j++;
|
||||||
|
p.print( i * addition + j * smalladdition );
|
||||||
}
|
}
|
||||||
|
i++;
|
||||||
|
p.print( i * addition );
|
||||||
}
|
}
|
||||||
|
p.print( 100 );
|
||||||
|
#ifndef GUI
|
||||||
|
cout << std::endl;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef GUI
|
||||||
void updateDB( bool linux ) {
|
void updateDB( bool linux ) {
|
||||||
|
#else
|
||||||
|
void updateDB( bool linux, void *progress_ptr ) {
|
||||||
|
#endif
|
||||||
|
if ( !FSLib::exists( getDBName() ) )
|
||||||
|
return;
|
||||||
std::vector< std::unordered_map< string, string > > shows;
|
std::vector< std::unordered_map< string, string > > shows;
|
||||||
SQLite::Database db{};
|
SQLite::Database db{};
|
||||||
try {
|
try {
|
||||||
@ -640,19 +659,22 @@ void updateDB( bool linux ) {
|
|||||||
db.exec( TEXT( "SELECT PATH FROM SHOWS WHERE TVID == 'pattern';" ),
|
db.exec( TEXT( "SELECT PATH FROM SHOWS WHERE TVID == 'pattern';" ),
|
||||||
pattern );
|
pattern );
|
||||||
|
|
||||||
cout << "Updating database" << std::endl << std::endl << std::endl;
|
#ifndef GUI
|
||||||
#ifdef _WIN32
|
ProgressBar p;
|
||||||
cout << std::endl;
|
#else // GUI
|
||||||
|
ProgressBar p( progress_ptr );
|
||||||
|
#endif
|
||||||
|
p.print( TEXT( "Updating database" ) );
|
||||||
|
#ifndef GUI
|
||||||
|
cout << std::endl << std::endl;
|
||||||
#endif
|
#endif
|
||||||
for ( auto &show : shows ) {
|
for ( auto &show : shows ) {
|
||||||
if ( !FSLib::exists( show[TEXT( "PATH" )] ) ) {
|
if ( !FSLib::exists( show[TEXT( "PATH" )] ) ) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
cleanUpLine();
|
cleanUpLine();
|
||||||
cout << "Updating " << show[TEXT( "SHOW" )] << std::endl;
|
p.print( TEXT( "Updating " ) + show[TEXT( "SHOW" )] );
|
||||||
#ifdef _WIN32
|
|
||||||
cout << std::endl;
|
|
||||||
#endif
|
|
||||||
std::unordered_set< string > episodes;
|
std::unordered_set< string > episodes;
|
||||||
db.exec( TEXT( "SELECT PATH FROM EPISODES WHERE SHOWID == " ) +
|
db.exec( TEXT( "SELECT PATH FROM EPISODES WHERE SHOWID == " ) +
|
||||||
show[TEXT( "ID" )] + TEXT( ";" ),
|
show[TEXT( "ID" )] + TEXT( ";" ),
|
||||||
@ -668,13 +690,9 @@ void updateDB( bool linux ) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#ifndef GUI
|
p.print( 0 );
|
||||||
ProgressBar::print( 0 );
|
|
||||||
#endif
|
|
||||||
if ( !new_eps.empty() ) {
|
if ( !new_eps.empty() ) {
|
||||||
#ifndef GUI
|
|
||||||
auto size = new_eps.size();
|
auto size = new_eps.size();
|
||||||
#endif
|
|
||||||
size_t i{};
|
size_t i{};
|
||||||
for ( auto &x : new_eps ) {
|
for ( auto &x : new_eps ) {
|
||||||
singleSeason( show[TEXT( "PATH" )], show[TEXT( "SHOW" )],
|
singleSeason( show[TEXT( "PATH" )], show[TEXT( "SHOW" )],
|
||||||
@ -683,9 +701,7 @@ void updateDB( bool linux ) {
|
|||||||
&x.second, false,
|
&x.second, false,
|
||||||
show[TEXT( "DVD" )] == TEXT( "1" ) );
|
show[TEXT( "DVD" )] == TEXT( "1" ) );
|
||||||
i++;
|
i++;
|
||||||
#ifndef GUI
|
p.print( ( i * 100 ) / size );
|
||||||
ProgressBar::print( ( i * 100 ) / size );
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
seasons.clear();
|
seasons.clear();
|
||||||
iterateFS( seasons, show[TEXT( "PATH" )] );
|
iterateFS( seasons, show[TEXT( "PATH" )] );
|
||||||
@ -698,14 +714,16 @@ void updateDB( bool linux ) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
p.print( 100 );
|
||||||
#ifndef GUI
|
#ifndef GUI
|
||||||
ProgressBar::print( 100 );
|
|
||||||
cout << std::endl;
|
cout << std::endl;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void changeDBPattern( const string &pattern ) {
|
void changeDBPattern( const string &pattern ) {
|
||||||
|
if ( !FSLib::exists( getDBName() ) )
|
||||||
|
return;
|
||||||
SQLite::Database db{};
|
SQLite::Database db{};
|
||||||
try {
|
try {
|
||||||
db.open( getDBName(), SQLite::OPEN_READWRITE );
|
db.open( getDBName(), SQLite::OPEN_READWRITE );
|
||||||
@ -718,6 +736,8 @@ void changeDBPattern( const string &pattern ) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void cleanDB() {
|
void cleanDB() {
|
||||||
|
if ( !FSLib::exists( getDBName() ) )
|
||||||
|
return;
|
||||||
std::vector< std::unordered_map< string, string > > shows;
|
std::vector< std::unordered_map< string, string > > shows;
|
||||||
SQLite::Database db{};
|
SQLite::Database db{};
|
||||||
try {
|
try {
|
||||||
@ -754,6 +774,8 @@ void cleanDB() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void removeFromDB( const string &path ) {
|
void removeFromDB( const string &path ) {
|
||||||
|
if ( !FSLib::exists( getDBName() ) )
|
||||||
|
return;
|
||||||
SQLite::Database db{};
|
SQLite::Database db{};
|
||||||
try {
|
try {
|
||||||
db.open( getDBName(), SQLite::OPEN_READWRITE );
|
db.open( getDBName(), SQLite::OPEN_READWRITE );
|
||||||
@ -771,6 +793,8 @@ void removeFromDB( const string &path ) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
std::vector< std::unordered_map< string, string > > dbGetShows() {
|
std::vector< std::unordered_map< string, string > > dbGetShows() {
|
||||||
|
if ( !FSLib::exists( getDBName() ) )
|
||||||
|
return {};
|
||||||
SQLite::Database db{};
|
SQLite::Database db{};
|
||||||
try {
|
try {
|
||||||
db.open( getDBName(), SQLite::OPEN_READWRITE );
|
db.open( getDBName(), SQLite::OPEN_READWRITE );
|
||||||
@ -785,6 +809,8 @@ std::vector< std::unordered_map< string, string > > dbGetShows() {
|
|||||||
|
|
||||||
void changeDB( size_t index, const string &path, const string &language,
|
void changeDB( size_t index, const string &path, const string &language,
|
||||||
const string &id, bool dvd ) {
|
const string &id, bool dvd ) {
|
||||||
|
if ( !FSLib::exists( getDBName() ) )
|
||||||
|
return;
|
||||||
SQLite::Database db{};
|
SQLite::Database db{};
|
||||||
auto absolute = FSLib::canonical( path );
|
auto absolute = FSLib::canonical( path );
|
||||||
try {
|
try {
|
||||||
@ -807,13 +833,22 @@ void changeDB( size_t index, const string &path, const string &language,
|
|||||||
TEXT( " WHERE ID == " ) + show_id + TEXT( ";" ) );
|
TEXT( " WHERE ID == " ) + show_id + TEXT( ";" ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
void refreshSingleDB( const size_t &index, bool linux ) {
|
#ifdef GUI
|
||||||
|
void refreshSelectDB( std::unordered_set< size_t > &indexes, bool linux,
|
||||||
|
void *progress_ptr ) {
|
||||||
|
if ( !FSLib::exists( getDBName() ) )
|
||||||
|
return;
|
||||||
std::vector< std::unordered_map< string, string > > shows;
|
std::vector< std::unordered_map< string, string > > shows;
|
||||||
#ifdef _WIN32
|
string index_list{ '(' };
|
||||||
string show_id = std::to_wstring( index );
|
for ( auto &index : indexes ) {
|
||||||
|
#ifndef WIN32
|
||||||
|
index_list += std::to_string( index );
|
||||||
#else
|
#else
|
||||||
string show_id = std::to_string( index );
|
index_list += std::to_wstring( index );
|
||||||
#endif
|
#endif
|
||||||
|
index_list += ',';
|
||||||
|
}
|
||||||
|
index_list.back() = ')';
|
||||||
SQLite::Database db{};
|
SQLite::Database db{};
|
||||||
try {
|
try {
|
||||||
db.open( getDBName(), SQLite::OPEN_READWRITE );
|
db.open( getDBName(), SQLite::OPEN_READWRITE );
|
||||||
@ -821,61 +856,63 @@ void refreshSingleDB( const size_t &index, bool linux ) {
|
|||||||
cerr << "Can't open database, make sure it exists" << std::endl;
|
cerr << "Can't open database, make sure it exists" << std::endl;
|
||||||
throw e;
|
throw e;
|
||||||
}
|
}
|
||||||
db.exec( TEXT( "DELETE FROM EPISODES WHERE SHOWID == " ) + show_id + TEXT( ";" ) );
|
db.exec( TEXT( "DELETE FROM EPISODES WHERE SHOWID IN " ) + index_list +
|
||||||
db.exec(
|
TEXT( ";" ) );
|
||||||
TEXT( "SELECT TVID, SHOW, PATH, LANGUAGE, DVD FROM SHOWS WHERE ID == " ) +
|
db.exec( TEXT( "SELECT ID, TVID, SHOW, PATH, LANGUAGE, DVD FROM SHOWS "
|
||||||
show_id + TEXT( ";" ),
|
"WHERE ID IN " ) +
|
||||||
shows );
|
index_list + TEXT( ";" ),
|
||||||
|
shows );
|
||||||
std::unordered_map< string, string > &show = shows[0];
|
|
||||||
|
|
||||||
string pattern{};
|
string pattern{};
|
||||||
db.exec( TEXT( "SELECT PATH FROM SHOWS WHERE TVID == 'pattern';" ),
|
db.exec( TEXT( "SELECT PATH FROM SHOWS WHERE TVID == 'pattern';" ),
|
||||||
pattern );
|
pattern );
|
||||||
|
|
||||||
cout << "Refreshing " << show[TEXT( "SHOW" )] << std::endl
|
ProgressBar p( progress_ptr );
|
||||||
<< std::endl
|
|
||||||
<< std::endl;
|
for ( auto &show : shows ) {
|
||||||
#ifdef _WIN32
|
p.print( TEXT( "Refreshing " ) + show[TEXT( "SHOW" )] );
|
||||||
cout << std::endl;
|
if ( FSLib::exists( show[TEXT( "PATH" )] ) ) {
|
||||||
#endif
|
p.print( 0 );
|
||||||
if ( FSLib::exists( show[TEXT( "PATH" )] ) ) {
|
std::map< int, std::map< int, string > > seasons;
|
||||||
#ifdef _WIN32
|
// get all season number from this directory and subdirectories
|
||||||
cout << std::endl;
|
iterateFS( seasons, show[TEXT( "PATH" )] );
|
||||||
#endif
|
auto size = seasons.size();
|
||||||
#ifndef GUI
|
size_t i{};
|
||||||
ProgressBar::print( 0 );
|
for ( auto &x : seasons ) {
|
||||||
#endif
|
singleSeason( show[TEXT( "PATH" )], show[TEXT( "SHOW" )],
|
||||||
std::map< int, std::map< int, string > > seasons;
|
x.first, show[TEXT( "TVID" )],
|
||||||
// get all season number from this directory and subdirectories
|
show[TEXT( "LANGUAGE" )], pattern, linux, true,
|
||||||
iterateFS( seasons, show[TEXT( "PATH" )] );
|
&x.second, false,
|
||||||
#ifndef GUI
|
show[TEXT( "DVD" )] == TEXT( "1" ) );
|
||||||
auto size = seasons.size();
|
i++;
|
||||||
#endif
|
p.print( ( i * 100 ) / size );
|
||||||
size_t i{};
|
}
|
||||||
for ( auto &x : seasons ) {
|
p.print( 100 );
|
||||||
singleSeason( show[TEXT( "PATH" )], show[TEXT( "SHOW" )], x.first,
|
for ( auto &season : seasons ) {
|
||||||
show[TEXT( "TVID" )], show[TEXT( "LANGUAGE" )],
|
for ( auto &episode : season.second ) {
|
||||||
pattern, linux, true, &x.second, false,
|
db.exec( TEXT( "INSERT INTO EPISODES ( SHOWID, PATH ) "
|
||||||
show[TEXT( "DVD" )] == TEXT( "1" ) );
|
"VALUES ( " ) +
|
||||||
i++;
|
show[TEXT( "ID" )] + TEXT( ", '" ) +
|
||||||
#ifndef GUI
|
sanitize( episode.second ) + TEXT( "' );" ) );
|
||||||
ProgressBar::print( ( i * 100 ) / size );
|
}
|
||||||
#endif
|
|
||||||
}
|
|
||||||
#ifndef GUI
|
|
||||||
ProgressBar::print( 100 );
|
|
||||||
cout << std::endl;
|
|
||||||
#endif
|
|
||||||
seasons.clear();
|
|
||||||
iterateFS( seasons, show[TEXT( "PATH" )] );
|
|
||||||
for ( auto &season : seasons ) {
|
|
||||||
for ( auto &episode : season.second ) {
|
|
||||||
db.exec( TEXT( "INSERT INTO EPISODES ( SHOWID, PATH ) "
|
|
||||||
"VALUES ( " ) +
|
|
||||||
show_id + TEXT( ", '" ) + sanitize( episode.second ) +
|
|
||||||
TEXT( "' );" ) );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
string getDBPattern() {
|
||||||
|
if ( !FSLib::exists( getDBName() ) )
|
||||||
|
return TEXT( "" );
|
||||||
|
SQLite::Database db{};
|
||||||
|
try {
|
||||||
|
db.open( getDBName(), SQLite::OPEN_READONLY );
|
||||||
|
} catch ( std::exception &e ) {
|
||||||
|
cerr << "Can't open database, make sure it exists" << std::endl;
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
string pattern{};
|
||||||
|
db.exec( TEXT( "SELECT PATH FROM SHOWS WHERE TVID == 'pattern';" ),
|
||||||
|
pattern );
|
||||||
|
return pattern;
|
||||||
|
}
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
#include <set>
|
#include <set>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <unordered_map>
|
#include <unordered_map>
|
||||||
|
#include <unordered_set>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
#include "network.hpp"
|
#include "network.hpp"
|
||||||
@ -30,7 +31,8 @@ using char_t = char;
|
|||||||
void printHelp();
|
void printHelp();
|
||||||
|
|
||||||
bool searchSeason( const char_t *const path, size_t &season_pos );
|
bool searchSeason( const char_t *const path, size_t &season_pos );
|
||||||
bool searchSeason( const char_t *const path, size_t &season_pos, size_t &ep_pos );
|
bool searchSeason( const char_t *const path, size_t &season_pos,
|
||||||
|
size_t &ep_pos );
|
||||||
|
|
||||||
void parseSeasonNumbers( std::set< int > &seasons_num, const char_t *argument );
|
void parseSeasonNumbers( std::set< int > &seasons_num, const char_t *argument );
|
||||||
|
|
||||||
@ -45,17 +47,29 @@ void addToDB( string &show, const string &path, const string &language,
|
|||||||
bool linux, bool dvd );
|
bool linux, bool dvd );
|
||||||
#else
|
#else
|
||||||
void addToDB( string &show, const string &path, const string &language,
|
void addToDB( string &show, const string &path, const string &language,
|
||||||
const string &id, const string &pattern, bool linux, bool dvd );
|
const string &id, const string &pattern, bool linux, bool dvd,
|
||||||
|
void *progress_ptr );
|
||||||
std::vector< std::unordered_map< std::string, std::string > > dbGetShows();
|
std::vector< std::unordered_map< std::string, std::string > > dbGetShows();
|
||||||
#endif
|
#endif
|
||||||
void removeFromDB( const string &path );
|
void removeFromDB( const string &path );
|
||||||
void changeDBPattern( const string &pattern );
|
void changeDBPattern( const string &pattern );
|
||||||
|
#ifndef GUI
|
||||||
void refreshDB( bool linux );
|
void refreshDB( bool linux );
|
||||||
|
#else
|
||||||
|
void refreshDB( bool linux, void *progress_ptr );
|
||||||
|
#endif
|
||||||
|
#ifndef GUI
|
||||||
void updateDB( bool linux );
|
void updateDB( bool linux );
|
||||||
|
#else
|
||||||
|
void updateDB( bool linux, void *progress_ptr );
|
||||||
|
#endif
|
||||||
void cleanDB();
|
void cleanDB();
|
||||||
void changeDB( size_t index, const string &path, const string &language,
|
void changeDB( size_t index, const string &path, const string &language,
|
||||||
const string &id, bool dvd );
|
const string &id, bool dvd );
|
||||||
void refreshSingleDB( const size_t &index, bool linux );
|
#ifdef GUI
|
||||||
|
void refreshSelectDB( std::unordered_set< size_t > &indexes, bool linux,
|
||||||
|
void *progress_ptr );
|
||||||
|
#endif
|
||||||
|
|
||||||
void iterateFS( std::map< int, std::map< int, string > > &seasons,
|
void iterateFS( std::map< int, std::map< int, string > > &seasons,
|
||||||
const string &path );
|
const string &path );
|
||||||
@ -63,5 +77,6 @@ void iterateFS( std::map< int, std::map< int, string > > &seasons,
|
|||||||
string compilePattern( const string &pattern, int season, int episode,
|
string compilePattern( const string &pattern, int season, int episode,
|
||||||
const string &filename, const string &episodeName,
|
const string &filename, const string &episodeName,
|
||||||
const string &showName );
|
const string &showName );
|
||||||
|
string getDBPattern();
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user