Hack:ralbum
From Music Player Daemon Community Wiki
Simple C program that clears the current playlist, queues a random album and plays it. libmpd is required to compile, make sure you tell gcc to use it with -lmpd.
- Source
#include <stdio.h>
#include <stdlib.h>
#include <libmpd/libmpd.h>
#include <string.h>
void playAlbum(MpdObj *mo, char* album);
int main(int argc, char **argv)
{
int flag, i, random, count = 0;
MpdObj *mo;
MpdData *data = NULL;
mo = mpd_new_default();
if(mpd_connect(mo))
{
mpd_free(mo);
printf("Failed to connect\n");
return 1;
}
MpdData *albums = NULL;
srand(time(NULL));
random = (int)(rand() % mpd_stats_get_total_albums(mo) );
albums = mpd_database_get_albums(mo, NULL);
for(i = 0; i < random; i++)
{
albums = mpd_data_get_next(albums);
}
playAlbum(mo, albums->tag);
mpd_free(mo);
exit(0);
}
void playAlbum(MpdObj *mo, char* album)
{
mpd_playlist_clear(mo);
MpdData *data = mpd_database_find(mo, MPD_TABLE_ALBUM, album, TRUE);
while (data != NULL)
{
if(data->type == MPD_DATA_TYPE_SONG)
{
mpd_playlist_queue_add(mo,data->song->file);
}
data = mpd_data_get_next(data);
}
mpd_playlist_queue_commit(mo);
mpd_player_play(mo);
}
