void get_current_song_length_frames(gint argc, gchar **argv) { gint playpos = audacious_remote_get_playlist_pos(dbus_proxy); gint frames = audacious_remote_get_playlist_time(dbus_proxy, playpos); audtool_report("%d", frames); }
void get_current_song_length(gint argc, gchar **argv) { gint playpos = audacious_remote_get_playlist_pos(dbus_proxy); gint frames = audacious_remote_get_playlist_time(dbus_proxy, playpos); gint length = frames / 1000; audtool_report("%d:%.2d", length / 60, length % 60); }
void playqueue_display(gint argc, gchar **argv) { gint i, ii, position, frames, length, total; gchar *songname; gchar *fmt = NULL, *p; gint column; i = audacious_remote_get_playqueue_length(dbus_proxy); audtool_report("%d queued tracks.", i); total = 0; for (ii = 0; ii < i; ii++) { position = audacious_remote_get_playqueue_list_position(dbus_proxy, ii); songname = audacious_remote_get_playlist_title(dbus_proxy, position); frames = audacious_remote_get_playlist_time(dbus_proxy, position); length = frames / 1000; total += length; /* adjust width for multi byte characters */ column = 60; if(songname) { p = songname; while(*p){ gint stride; stride = g_utf8_next_char(p) - p; if(g_unichar_iswide(g_utf8_get_char(p)) || g_unichar_iswide_cjk(g_utf8_get_char(p)) ){ column += (stride - 2); } else { column += (stride - 1); } p = g_utf8_next_char(p); } } fmt = g_strdup_printf("%%4d | %%4d | %%-%ds | %%d:%%.2d", column); audtool_report(fmt, ii + 1, position + 1, songname, length / 60, length % 60); g_free(fmt); } audtool_report("Total length: %d:%.2d", total / 60, total % 60); }