Banshee Müzik Çalarından Çalan Parça Bilgilerini Alma
Pidgin için bir eklenti yazmaya çalışıyorum. Banshee müzik çalıcısında çalan parçanın durum mesajında görünmesini sağlayacağım. Bir eklenti sayesinde bunun nasıl yapılacağı hakkında bir fikir edimdim. Aslında aynısını kopyalayıp bazı bilgileri deiştirip de bunu yapabilirim ancak c++ ile ilgili bir şeyler öğrenebilmek için kendim yazmam gerekiyor ![]()
Şimdilik konsolda, çalan parça bilgilerini veren bir ufak uygulama geliştirdim:
#include <stdlib .h> #include <string .h> #include <glib .h> #include <dbus /dbus-glib> int main() { DBusGConnection *bus; DBusGProxy *proxy; GError *error = NULL; int status = 0; gchar *artist = 0; gchar *album = 0; gchar *track = 0; g_type_init(); dbus_g_type_specialized_init(); bus = dbus_g_bus_get(DBUS_BUS_SESSION,&error); if (error){ g_log(G_LOG_DOMAIN,G_LOG_LEVEL_ERROR, "%s: Error : %s",G_STRLOC,error->message); return false; } proxy = dbus_g_proxy_new_for_name(bus, "org.gnome.Banshee", "/org/gnome/Banshee/Player", "org.gnome.Banshee.Core"); if (!dbus_g_proxy_call(proxy,"GetPlayingStatus",&error, G_TYPE_INVALID, G_TYPE_INT, &status, G_TYPE_INVALID)) { g_log(G_LOG_DOMAIN,G_LOG_LEVEL_ERROR, "%s : Failed : %s", G_STRLOC,error->message); return false; } if (status==1){ if (!dbus_g_proxy_call(proxy,"GetPlayingArtist",&error, G_TYPE_INVALID, G_TYPE_STRING, &artist, G_TYPE_INVALID)) { g_log(G_LOG_DOMAIN,G_LOG_LEVEL_ERROR, "%s : Failed : %s", G_STRLOC,error->message); return false; } if (!dbus_g_proxy_call(proxy,"GetPlayingAlbum",&error, G_TYPE_INVALID, G_TYPE_STRING, &album, G_TYPE_INVALID)) { g_log(G_LOG_DOMAIN,G_LOG_LEVEL_ERROR, "%s : Failed : %s", G_STRLOC,error->message); return false; } if (!dbus_g_proxy_call(proxy,"GetPlayingTitle",&error, G_TYPE_INVALID, G_TYPE_STRING, &track, G_TYPE_INVALID)) { g_log(G_LOG_DOMAIN,G_LOG_LEVEL_ERROR, "%s : Failed : %s", G_STRLOC,error->message); return false; } } g_message(artist); g_message(album); g_message(track); return false; } </dbus></glib></string></stdlib>
Yukarıdaki kodları isim.cpp şeklinde kaydedip aşağıdaki şekilde derleyebilirsiniz.
[omer@localhost programlama]$ g++ isim.cpp -o isim `pkg-config --libs --cflags gtk+-2.0 dbus-glib-1` [omer@localhost programlama]$ ./isim