| mpdstatus.c - sites - public wiki contents of suckless.org | |
| git clone git://git.suckless.org/sites | |
| Log | |
| Files | |
| Refs | |
| --- | |
| mpdstatus.c (1840B) | |
| --- | |
| 1 #include <stdio.h> | |
| 2 #include <stdlib.h> | |
| 3 #include <string.h> | |
| 4 #include <mpd/client.h> | |
| 5 | |
| 6 /* add to config.mk : | |
| 7 # mpd | |
| 8 + MPDLIB = -lmpdclient | |
| 9 + MPDFLAG = -DMPD | |
| 10 | |
| 11 - LIBS = -L/usr/lib -lc -L${X11LIB} -lX11 | |
| 12 + LIBS = -L/usr/lib -lc -L${X11LIB} -lX11 ${MPDLIB} | |
| 13 | |
| 14 - CPPFLAGS = -DVERSION=\"${VERSION}\" | |
| 15 + CPPFLAGS = ${MPDFLAG} -DVERSION=\"${VERSION}\" | |
| 16 */ | |
| 17 /* simple function to retrieve mpd status */ | |
| 18 char * | |
| 19 getmpdstat() { | |
| 20 struct mpd_song * song = NULL; | |
| 21 const char * title = NULL; | |
| 22 const char * artist = NULL; | |
| 23 char * retstr = NULL; | |
| 24 int elapsed = 0, total = 0; | |
| 25 struct mpd_connection * conn ; | |
| 26 if (!(conn = mpd_connection_new("localhost", 0, 30000)) || | |
| 27 mpd_connection_get_error(conn)){ | |
| 28 return smprintf(""); | |
| 29 } | |
| 30 | |
| 31 mpd_command_list_begin(conn, true); | |
| 32 mpd_send_status(conn); | |
| 33 mpd_send_current_song(conn); | |
| 34 mpd_command_list_end(conn); | |
| 35 | |
| 36 struct mpd_status* theStatus = mpd_recv_status(conn); | |
| 37 if ((theStatus) && (mpd_status_get_state(theStatus) == MPD_STATE… | |
| 38 mpd_response_next(conn); | |
| 39 song = mpd_recv_song(conn); | |
| 40 title = smprintf("%s",mpd_song_get_tag(song, MPD_TAG_TIT… | |
| 41 artist = smprintf("%s",mpd_song_get_tag(song, MPD_TAG_AR… | |
| 42 | |
| 43 elapsed = mpd_status_get_elapsed_time(theStatus); | |
| 44 total = mpd_status_get_total_time(theStatus); | |
| 45 mpd_song_free(song); | |
| 46 retstr = smprintf("%.2d:%.2d/%.2d:%.2d %s - %s", | |
| 47 elapsed/60, elapsed%60, | |
| 48 total/60, total%60, | |
| 49 artist, title); | |
| 50 free((char*)title); | |
| 51 free((char*)artist); | |
| 52 } | |
| 53 else retstr = smprintf(""); | |
| 54 mpd_response_finish(conn); | |
| 55 mpd_connection_free(conn); | |
| 56 return retstr; | |
| 57 } |