int main (int argc, char **argv) { GMainLoop *l = NULL; g_type_init_with_debug_flags(G_TYPE_DEBUG_MASK); if(!g_thread_supported()) g_thread_init(NULL); l = g_main_loop_new(NULL, TRUE); mpd_Song *song = mpd_newSong(); song->artist = g_strdup("Eric Clapton"); song->album = g_strdup("Unplugged"); discogs_plugin.metadata->get_metadata(song, META_ALBUM_ART, callback, l); discogs_plugin.metadata->get_metadata(song, META_ARTIST_ART, callback, l); mpd_freeSong(song); song = mpd_newSong(); song->artist = g_strdup("Appnottoaf"); song->album = g_strdup("grabba"); discogs_plugin.metadata->get_metadata(song, META_ALBUM_ART, callback, l); discogs_plugin.metadata->get_metadata(song, META_ARTIST_ART, callback, l); mpd_freeSong(song); g_main_loop_run(l); gmpc_easy_async_quit(); g_main_loop_unref(l); xmlCleanupParser(); return EXIT_SUCCESS; }
MpdData * magnatune_db_search_title(const gchar *title) { MpdData *list = NULL; char *query = NULL; sqlite3_stmt *stmt = NULL; const char *tail; int r = 0; query = sqlite3_mprintf("SELECT songs.albumname,duration,number,desc,mp3 from 'songs' " "WHERE songs.desc LIKE '%%%%%q%%%%'",title); r=sqlite3_prepare_v2(magnatune_sqlhandle, query, -1, &stmt, &tail); if(r ==SQLITE_OK) { while((r = sqlite3_step(stmt)) == SQLITE_ROW) { gchar *temp = gmpc_easy_download_uri_escape(sqlite3_column_text(stmt,4)); list = mpd_new_data_struct_append(list); list->type = MPD_DATA_TYPE_SONG; list->song = mpd_newSong(); list->song->album = g_strdup(sqlite3_column_text(stmt,0)); list->song->artist = __magnatune_get_artist_name(list->song->album); list->song->genre = __magnatune_get_genre_name(list->song->album); list->song->title= g_strdup(sqlite3_column_text(stmt,3)); list->song->track = g_strdup(sqlite3_column_text(stmt,2)); list->song->time = sqlite3_column_int(stmt,1); list->song->file = magnatune_get_url(temp); g_free(temp); } } sqlite3_finalize(stmt); sqlite3_free(query); return list; }
mpd_Song * mpd_songDup(mpd_Song * song) { mpd_Song * ret = mpd_newSong(); if(song->file) ret->file = strdup(song->file); if(song->artist) ret->artist = strdup(song->artist); if(song->album) ret->album = strdup(song->album); if(song->title) ret->title = strdup(song->title); if(song->track) ret->track = strdup(song->track); if(song->name) ret->name = strdup(song->name); ret->time = song->time; ret->pos = song->pos; ret->id = song->id; return ret; }
static MpdData *__magnatune_get_data_album(const char *album, gboolean exact) { MpdData *list = NULL; char *query = NULL; sqlite3_stmt *stmt = NULL; const char *tail; int r = 0; GTimer *timer = g_timer_new(); if(exact) { query = sqlite3_mprintf("SELECT songs.albumname,duration,number,desc,mp3 from 'songs' " "WHERE songs.albumname=%Q",album); }else{ query = sqlite3_mprintf("SELECT songs.albumname,duration,number,desc,mp3 from 'songs' " "WHERE songs.albumname LIKE '%%%%%q%%%%'",album); } r=sqlite3_prepare_v2(magnatune_sqlhandle, query, -1, &stmt, &tail); if(r ==SQLITE_OK) { while((r = sqlite3_step(stmt)) == SQLITE_ROW) { gchar *temp = gmpc_easy_download_uri_escape(sqlite3_column_text(stmt,4)); list = mpd_new_data_struct_append(list); list->type = MPD_DATA_TYPE_SONG; list->song = mpd_newSong(); list->song->album = g_strdup(sqlite3_column_text(stmt,0)); list->song->artist = __magnatune_get_artist_name(list->song->album); list->song->genre = __magnatune_get_genre_name(list->song->album); list->song->title= g_strdup(sqlite3_column_text(stmt,3)); list->song->track = g_strdup(sqlite3_column_text(stmt,2)); list->song->time = sqlite3_column_int(stmt,1); list->song->file = magnatune_get_url(temp); g_free(temp); } } else{ g_warning("Sqlite error: %s\n", tail); } sqlite3_finalize(stmt); sqlite3_free(query); g_debug("%f s elapsed getting album songs\n", g_timer_elapsed(timer,NULL)); g_timer_destroy(timer); return list; }
struct mpd_song * mpd_songDup(const struct mpd_song *song) { struct mpd_song *ret = mpd_newSong(); if (song->file) ret->file = str_pool_dup(song->file); if (song->artist) ret->artist = str_pool_dup(song->artist); if (song->album) ret->album = str_pool_dup(song->album); if (song->title) ret->title = str_pool_dup(song->title); if (song->track) ret->track = str_pool_dup(song->track); if (song->name) ret->name = str_pool_dup(song->name); if (song->date) ret->date = str_pool_dup(song->date); if (song->genre) ret->genre = str_pool_dup(song->genre); if (song->composer) ret->composer = str_pool_dup(song->composer); if (song->performer) ret->performer = str_pool_dup(song->performer); if (song->disc) ret->disc = str_pool_dup(song->disc); if (song->comment) ret->comment = str_pool_dup(song->comment); ret->time = song->time; ret->pos = song->pos; ret->id = song->id; return ret; }
mpd_InfoEntity * mpd_getNextInfoEntity(mpd_Connection * connection) { mpd_InfoEntity * entity = NULL; if(connection->doneProcessing || (connection->listOks && connection->doneListOk)) { return NULL; } if(!connection->returnElement) mpd_getNextReturnElement(connection); if(connection->returnElement) { if(strcmp(connection->returnElement->name,"file")==0) { entity = mpd_newInfoEntity(); entity->type = MPD_INFO_ENTITY_TYPE_SONG; entity->info.song = mpd_newSong(); entity->info.song->file = strdup(connection->returnElement->value); } else if(strcmp(connection->returnElement->name, "directory")==0) { entity = mpd_newInfoEntity(); entity->type = MPD_INFO_ENTITY_TYPE_DIRECTORY; entity->info.directory = mpd_newDirectory(); entity->info.directory->path = strdup(connection->returnElement->value); } else if(strcmp(connection->returnElement->name,"playlist")==0) { entity = mpd_newInfoEntity(); entity->type = MPD_INFO_ENTITY_TYPE_PLAYLISTFILE; entity->info.playlistFile = mpd_newPlaylistFile(); entity->info.playlistFile->path = strdup(connection->returnElement->value); } else { connection->error = 1; strcpy(connection->errorStr,"problem parsing song info"); return NULL; } } else return NULL; mpd_getNextReturnElement(connection); while(connection->returnElement) { mpd_ReturnElement * re = connection->returnElement; if(strcmp(re->name,"file")==0) return entity; else if(strcmp(re->name,"directory")==0) return entity; else if(strcmp(re->name,"playlist")==0) return entity; if(entity->type == MPD_INFO_ENTITY_TYPE_SONG && strlen(re->value)) { if(!entity->info.song->artist && strcmp(re->name,"Artist")==0) { entity->info.song->artist = strdup(re->value); } else if(!entity->info.song->album && strcmp(re->name,"Album")==0) { entity->info.song->album = strdup(re->value); } else if(!entity->info.song->title && strcmp(re->name,"Title")==0) { entity->info.song->title = strdup(re->value); } else if(!entity->info.song->track && strcmp(re->name,"Track")==0) { entity->info.song->track = strdup(re->value); } else if(!entity->info.song->name && strcmp(re->name,"Name")==0) { entity->info.song->name = strdup(re->value); } else if(entity->info.song->time==MPD_SONG_NO_TIME && strcmp(re->name,"Time")==0) { entity->info.song->time = atoi(re->value); } else if(entity->info.song->pos==MPD_SONG_NO_NUM && strcmp(re->name,"Pos")==0) { entity->info.song->pos = atoi(re->value); } else if(entity->info.song->id==MPD_SONG_NO_ID && strcmp(re->name,"Id")==0) { entity->info.song->id = atoi(re->value); } } else if(entity->type == MPD_INFO_ENTITY_TYPE_DIRECTORY) { } else if(entity->type == MPD_INFO_ENTITY_TYPE_PLAYLISTFILE) { } mpd_getNextReturnElement(connection); } return entity; }
static gboolean gmpc_mpd_data_treeview_tooltip_query_tooltip_callback (GmpcMpdDataTreeviewTooltip* self, gint x, gint y, gboolean keyboard_tip, GtkTooltip* tooltip) { gboolean result = FALSE; gchar* tag; gint row_type; GtkTreePath* path; GtkTreeIter iter = {0}; GtkTreeModel* _tmp0_ = NULL; GtkTreeModel* _tmp1_; GtkTreeModel* model; gint _tmp2_; gboolean _tmp3_ = FALSE; gint _tmp4_; gint _tmp5_; GtkTreeModel* _tmp6_ = NULL; GtkTreePath* _tmp7_ = NULL; GtkTreeIter _tmp8_ = {0}; gboolean _tmp9_; GtkTreeModel* _tmp10_; GtkTreePath* _tmp11_; mpd_Song* _tmp12_ = NULL; mpd_Song* song; gchar* _tmp18_ = NULL; gchar* new_check; gboolean _tmp19_ = FALSE; GtkImageType _tmp23_; g_return_val_if_fail (self != NULL, FALSE); g_return_val_if_fail (tooltip != NULL, FALSE); tag = NULL; row_type = 0; path = NULL; _tmp0_ = gtk_tree_view_get_model (self->priv->par_widget); _tmp1_ = _g_object_ref0 (_tmp0_); model = _tmp1_; _tmp2_ = cfg_get_single_value_as_int_with_default (config, "GmpcTreeView", "show-tooltip", 1); if (_tmp2_ != 1) { result = FALSE; _g_object_unref0 (model); _gtk_tree_path_free0 (path); _g_free0 (tag); return result; } if (self->mtype != META_ARTIST_ART) { _tmp3_ = self->mtype != META_ALBUM_ART; } else { _tmp3_ = FALSE; } if (_tmp3_) { _g_free0 (self->priv->checksum); self->priv->checksum = NULL; result = FALSE; _g_object_unref0 (model); _gtk_tree_path_free0 (path); _g_free0 (tag); return result; } _tmp9_ = gtk_tree_view_get_tooltip_context (self->priv->par_widget, &_tmp4_, &_tmp5_, keyboard_tip, &_tmp6_, &_tmp7_, &_tmp8_); x = _tmp4_; y = _tmp5_; _g_object_unref0 (model); _tmp10_ = _g_object_ref0 (_tmp6_); model = _tmp10_; _gtk_tree_path_free0 (path); _tmp11_ = _gtk_tree_path_copy0 (_tmp7_); path = _tmp11_; iter = _tmp8_; if (!_tmp9_) { _g_free0 (self->priv->checksum); self->priv->checksum = NULL; result = FALSE; _g_object_unref0 (model); _gtk_tree_path_free0 (path); _g_free0 (tag); return result; } _tmp12_ = mpd_newSong (); song = _tmp12_; gtk_tree_model_get (model, &iter, 26, &row_type, -1); if (row_type == MPD_DATA_TYPE_SONG) { gchar* album; gchar* _tmp13_; gchar* _tmp14_; album = NULL; gtk_tree_model_get (model, &iter, 5, &tag, 6, &album, -1); _tmp13_ = g_strdup (tag); _g_free0 (song->artist); song->artist = _tmp13_; _tmp14_ = g_strdup (album); _g_free0 (song->album); song->album = _tmp14_; _g_free0 (album); } else { if (row_type == MPD_DATA_TYPE_TAG) { if (self->mtype == META_ARTIST_ART) { gchar* _tmp15_; gtk_tree_model_get (model, &iter, 7, &tag, -1); _tmp15_ = g_strdup (tag); _g_free0 (song->artist); song->artist = _tmp15_; } else { if (self->mtype == META_ALBUM_ART) { gchar* _tmp16_; gchar* _tmp17_; gtk_tree_model_get (model, &iter, 7, &tag, -1); _tmp16_ = g_strdup (self->request_artist); _g_free0 (song->artist); song->artist = _tmp16_; _tmp17_ = g_strdup (tag); _g_free0 (song->album); song->album = _tmp17_; } } } } _tmp18_ = mpd_song_checksum (song); new_check = _tmp18_; if (g_strcmp0 (new_check, self->priv->checksum) != 0) { _tmp19_ = self->priv->checksum != NULL; } else { _tmp19_ = FALSE; } if (_tmp19_) { _g_free0 (self->priv->checksum); self->priv->checksum = NULL; result = FALSE; _g_free0 (new_check); _mpd_freeSong0 (song); _g_object_unref0 (model); _gtk_tree_path_free0 (path); _g_free0 (tag); return result; } if (g_strcmp0 (new_check, self->priv->checksum) != 0) { gchar* _tmp20_; MetaData* met; MetaData* _tmp21_ = NULL; MetaDataResult _tmp22_; MetaDataResult _result_; _tmp20_ = g_strdup (new_check); _g_free0 (self->priv->checksum); self->priv->checksum = _tmp20_; met = NULL; _tmp22_ = gmpc_meta_watcher_get_meta_path (gmw, song, self->mtype, &_tmp21_); _meta_data_free0 (met); met = _tmp21_; _result_ = _tmp22_; gmpc_mpd_data_treeview_tooltip_metadata_changed (self, gmw, song, self->mtype, _result_, met); _meta_data_free0 (met); } _tmp23_ = gtk_image_get_storage_type (self->priv->image); if (_tmp23_ == GTK_IMAGE_EMPTY) { result = FALSE; _g_free0 (new_check); _mpd_freeSong0 (song); _g_object_unref0 (model); _gtk_tree_path_free0 (path); _g_free0 (tag); return result; } result = TRUE; _g_free0 (new_check); _mpd_freeSong0 (song); _g_object_unref0 (model); _gtk_tree_path_free0 (path); _g_free0 (tag); return result; }