5 #include "libmpdclient.h"
10 struct information *current_info = &info;
12 mpd_newConnection(current_info->mpd.host,
13 current_info->mpd.port, 10);
14 if (current_info->conn->error) {
15 //fprintf(stderr, "%s\n", current_info->conn->errorStr);
16 mpd_closeConnection(current_info->conn);
21 mpd_InfoEntity *entity;
22 mpd_sendCommandListOkBegin(current_info->conn);
23 mpd_sendStatusCommand(current_info->conn);
24 mpd_sendCurrentSongCommand(current_info->conn);
25 mpd_sendCommandListEnd(current_info->conn);
26 if ((status = mpd_getStatus(current_info->conn)) == NULL) {
27 //fprintf(stderr, "%s\n", current_info->conn->errorStr);
28 mpd_closeConnection(current_info->conn);
31 current_info->mpd.volume = status->volume;
33 //printf("error: %s\n", status->error);
35 if(status->state == MPD_STATUS_STATE_PLAY)
37 current_info->mpd.status = "Playing";
39 if(status->state == MPD_STATUS_STATE_STOP)
41 current_info->mpd.status = "Stopped";
43 if(status->state == MPD_STATUS_STATE_PAUSE)
45 current_info->mpd.status = "Paused";
47 if(status->state == MPD_STATUS_STATE_UNKNOWN)
49 current_info->mpd.status = "Unknown";
51 if(status->state == MPD_STATUS_STATE_PLAY ||
52 status->state == MPD_STATUS_STATE_PAUSE) {
53 current_info->mpd.bitrate = status->bitRate;
54 current_info->mpd.progress = (float)status->elapsedTime/status->totalTime;
58 if (current_info->conn->error) {
59 //fprintf(stderr, "%s\n", current_info->conn->errorStr);
60 mpd_closeConnection(current_info->conn);
64 mpd_nextListOkCommand(current_info->conn);
66 while ((entity = mpd_getNextInfoEntity(current_info->conn))) {
67 mpd_Song * song = entity->info.song;
68 if (entity->type != MPD_INFO_ENTITY_TYPE_SONG) {
69 mpd_freeInfoEntity(entity);
73 if(current_info->mpd.artist == NULL)
74 current_info->mpd.artist = malloc(TEXT_BUFFER_SIZE);
75 if(current_info->mpd.album == NULL)
76 current_info->mpd.album = malloc(TEXT_BUFFER_SIZE);
77 if(current_info->mpd.title == NULL)
78 current_info->mpd.title = malloc(TEXT_BUFFER_SIZE);
80 strcpy(current_info->mpd.artist, song->artist);
83 strcpy(current_info->mpd.artist, "Unknown");
86 strcpy(current_info->mpd.album, song->album);
89 strcpy(current_info->mpd.album, "Unknown");
92 strcpy(current_info->mpd.title, song->title);
95 strcpy(current_info->mpd.title, "Unknown");
98 mpd_freeInfoEntity(entity);
101 if (entity != NULL) {
102 mpd_freeInfoEntity(entity);
105 if (current_info->conn->error) {
106 //fprintf(stderr, "%s\n", current_info->conn->errorStr);
107 mpd_closeConnection(current_info->conn);
111 mpd_finishCommand(current_info->conn);
112 if (current_info->conn->error) {
113 //fprintf(stderr, "%s\n", current_info->conn->errorStr);
114 mpd_closeConnection(current_info->conn);
117 mpd_freeStatus(status);
118 mpd_closeConnection(current_info->conn);