Ejemplo n.º 1
0
Archivo: test.c Proyecto: emillon/gmpc
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;
}
Ejemplo n.º 2
0
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;
}
Ejemplo n.º 3
0
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;
}
Ejemplo n.º 4
0
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;
}
Ejemplo n.º 5
0
Archivo: song.c Proyecto: 0x27/mrw-code
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;
}
Ejemplo n.º 6
0
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;
}
Ejemplo n.º 7
0
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;
}