summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlvw <lvw@e10066b5-e1e2-0310-b819-94efdf66514b>2004-10-09 08:03:08 +0000
committerlvw <lvw@e10066b5-e1e2-0310-b819-94efdf66514b>2004-10-09 08:03:08 +0000
commit6cce75232cf142808e21352381e31fe688d2396c (patch)
treeeda7af17395dec8df528be98b3668f48f8db6f28
parent0793421773dd5740ddf81300b29b42cdb2350382 (diff)
downloadvdr-plugin-muggle-6cce75232cf142808e21352381e31fe688d2396c.tar.gz
vdr-plugin-muggle-6cce75232cf142808e21352381e31fe688d2396c.tar.bz2
Import now avoids duplicate tracks
git-svn-id: https://vdr-muggle.svn.sourceforge.net/svnroot/vdr-muggle/trunk/muggle-plugin@213 e10066b5-e1e2-0310-b819-94efdf66514b
-rw-r--r--Makefile3
-rw-r--r--muggle.c8
-rwxr-xr-xmugglei.c47
3 files changed, 31 insertions, 27 deletions
diff --git a/Makefile b/Makefile
index 14de5fd..94df06f 100644
--- a/Makefile
+++ b/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.c b/muggle.c
index 849e3eb..2adebbb 100644
--- a/muggle.c
+++ b/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/mugglei.c b/mugglei.c
index 2215d77..d92fdcf 100755
--- a/mugglei.c
+++ b/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;
}