diff options
| author | lvw <lvw@e10066b5-e1e2-0310-b819-94efdf66514b> | 2004-10-09 08:03:08 +0000 |
|---|---|---|
| committer | lvw <lvw@e10066b5-e1e2-0310-b819-94efdf66514b> | 2004-10-09 08:03:08 +0000 |
| commit | 029b5b014e4b10182fe5a5fd82c2735aedc020d3 (patch) | |
| tree | 0e36e66d064598884426c3c5aa332598e78752ef /muggle-plugin | |
| parent | f365422da26d22d56c99d2fcb537e614bcb260e1 (diff) | |
| download | vdr-plugin-muggle-029b5b014e4b10182fe5a5fd82c2735aedc020d3.tar.gz vdr-plugin-muggle-029b5b014e4b10182fe5a5fd82c2735aedc020d3.tar.bz2 | |
Import now avoids duplicate tracks
git-svn-id: https://vdr-muggle.svn.sourceforge.net/svnroot/vdr-muggle/trunk@213 e10066b5-e1e2-0310-b819-94efdf66514b
Diffstat (limited to 'muggle-plugin')
| -rw-r--r-- | muggle-plugin/Makefile | 3 | ||||
| -rw-r--r-- | muggle-plugin/muggle.c | 8 | ||||
| -rwxr-xr-x | muggle-plugin/mugglei.c | 47 |
3 files changed, 31 insertions, 27 deletions
diff --git a/muggle-plugin/Makefile b/muggle-plugin/Makefile index 14de5fd..94df06f 100644 --- a/muggle-plugin/Makefile +++ b/muggle-plugin/Makefile @@ -54,6 +54,7 @@ MIFLAGS += -I/usr/include/taglib -lmysqlclient OBJS = $(PLUGIN).o i18n.o vdr_menu.o mg_database.o mg_content_interface.o gd_content_interface.o mg_tools.o mg_media.o mg_filters.o mg_playlist.o vdr_decoder_mp3.o vdr_stream.o vdr_decoder.o vdr_player.o vdr_setup.o vdr_decoder_ogg.o LIBS = -lmad -lmysqlclient -lvorbisfile -lvorbis +MILIBS = -lmysqlclient -ltag ### Targets: @@ -78,7 +79,7 @@ libvdr-$(PLUGIN).so: $(OBJS) @cp $@ $(LIBDIR)/$@.$(VDRVERSION) mugglei: mg_tools.o mugglei.o - $(CXX) $(CXXFLAGS) $^ $(LIBS) -ltag -o $@ + $(CXX) $(CXXFLAGS) $^ $(MILIBS) -o $@ dist: clean @-rm -rf $(TMPDIR)/$(ARCHIVE) diff --git a/muggle-plugin/muggle.c b/muggle-plugin/muggle.c index 849e3eb..2adebbb 100644 --- a/muggle-plugin/muggle.c +++ b/muggle-plugin/muggle.c @@ -22,7 +22,15 @@ #include <getopt.h> #include <config.h> +<<<<<<< .mine +<<<<<<< .mine +static const char *VERSION = "0.0.3"; +======= +static const char *VERSION = "0.0.4"; +======= static const char *VERSION = "0.0.5"; +>>>>>>> .r202 +>>>>>>> .r177 static const char *DESCRIPTION = "Media juggle plugin for VDR"; static const char *MAINMENUENTRY = "Muggle"; diff --git a/muggle-plugin/mugglei.c b/muggle-plugin/mugglei.c index 2215d77..d92fdcf 100755 --- a/muggle-plugin/mugglei.c +++ b/muggle-plugin/mugglei.c @@ -21,7 +21,7 @@ MYSQL *db; -std::string host, user, pass, dbname, sock; +std::string host, user, pass, dbname, sck; bool import_assorted; int init_database() @@ -35,10 +35,10 @@ int init_database() } // check for use of sockets - if( sock != "" ) + if( sck != "" ) { if( mysql_real_connect( db, NULL, user.c_str(), pass.c_str(), dbname.c_str(), - 0, sock.c_str(), 0 ) == NULL ) + 0, sck.c_str(), 0 ) == NULL ) { std::cout << "mysql_real_connect using sockets failed." << std::endl; @@ -95,21 +95,31 @@ TagLib::String escape_string( MYSQL *db, TagLib::String s ) char *buf = strdup( s.toCString() ); char *escbuf = (char *) malloc( 2*strlen( buf ) + 1 ); - mysql_real_escape_string( db, escbuf, buf, strlen( buf ) ); + mysql_real_escape_string( db, escbuf, s.toCString(), s.size() ); + TagLib::String r = TagLib::String( escbuf ); - return TagLib::String( escbuf ); + free( escbuf ); + free( buf); + + return r; } long find_file_in_database( MYSQL *db, std::string filename ) { + long uid = -1; + TagLib::String file = TagLib::String( filename.c_str() ); file = escape_string( db, file ); MYSQL_RES *result = mgSqlReadQuery( db, "SELECT id FROM tracks WHERE mp3file=\"%s\"", file.toCString() ); - MYSQL_ROW row = mysql_fetch_row( result ); + if( mysql_num_rows(result) ) + { + MYSQL_ROW row = mysql_fetch_row( result ); + uid = atol( row[0] ); + } // obtain ID and return - return atol( row[0] ); + return uid; } TagLib::String find_genre_id( TagLib::String genre ) @@ -279,7 +289,7 @@ void update_tags( long uid, std::string filename ) } -void evaluate_file( MYSQL *db, std::string filename ) +void evaluate_file( std::string filename ) { if( 0 == init_database() ) { @@ -305,13 +315,11 @@ void evaluate_file( MYSQL *db, std::string filename ) } */ - std::cout << "Updating " << filename << std::endl; update_db( uid, filename ); } else { // not in db yet: import file - std::cout << "Creating " << filename << std::endl; update_db( -1, filename ); } } @@ -344,7 +352,7 @@ int main( int argc, char *argv[] ) dbname = "GiantDisc"; user = ""; pass = ""; - sock = ""; + sck = ""; import_assorted = false; // parse command line options @@ -387,7 +395,7 @@ int main( int argc, char *argv[] ) } break; case 's': { - sock = optarg; + sck = optarg; } break; } } @@ -398,20 +406,7 @@ int main( int argc, char *argv[] ) gettimeofday( &tv, &tz ); srandom( tv.tv_usec ); - /* - int res = init_database(); - - if( !res ) - { - update_db( 0, filename ); - } - else - { - std::cout << "Database initialization failed. Exiting.\n" << std::endl; - } - */ - - evaluate_file( db, filename ); + evaluate_file( filename ); return 0; } |
