int cmd_replaygain(int argc, char **argv, struct mpd_connection *connection) { /* libmpdclient 2.0 doesn't support these commands yet, we have to roll our own with mpd_send_command() */ if (mpd_connection_cmp_server_version(connection, 0, 16, 0) < 0) fprintf(stderr, "warning: MPD 0.16 required for this command\n"); if (argc == 0) { struct mpd_pair *pair; mpd_send_command(connection, "replay_gain_status", NULL); while ((pair = mpd_recv_pair(connection)) != NULL) { printf("%s: %s\n", pair->name, pair->value); mpd_return_pair(connection, pair); } my_finishCommand(connection); } else { mpd_send_command(connection, "replay_gain_mode", argv[0], NULL); my_finishCommand(connection); } return 0; }
bool mpd_send_send_message(struct mpd_connection *connection, const char *channel, const char *text) { return mpd_send_command(connection, "sendmessage", channel, text, NULL); }
bool mpd_search_commit(struct mpd_connection *connection) { bool success; assert(connection != NULL); if (mpd_error_is_defined(&connection->error)) { mpd_search_cancel(connection); return false; } if (connection->request == NULL) { mpd_error_code(&connection->error, MPD_ERROR_STATE); mpd_error_message(&connection->error, "no search in progress"); return false; } success = mpd_send_command(connection, connection->request, NULL); free(connection->request); connection->request = NULL; return success; }
std::string Connection::GetReplayGainMode() { prechecksNoCommandsList(); mpd_send_command(m_connection.get(), "replay_gain_status", NULL); std::string result; if (mpd_pair *pair = mpd_recv_pair_named(m_connection.get(), "replay_gain_mode")) { result = pair->value; mpd_return_pair(m_connection.get(), pair); } mpd_response_finish(m_connection.get()); checkErrors(); return result; }
int cmd_replaygain(int argc, char **argv, struct mpd_connection *connection) { /* libmpdclient 2.0 doesn't support these commands yet, we have to roll our own with mpd_send_command() */ if (argc == 0) { mpd_send_command(connection, "replay_gain_status", NULL); struct mpd_pair *pair; while ((pair = mpd_recv_pair(connection)) != NULL) { printf("%s: %s\n", pair->name, pair->value); mpd_return_pair(connection, pair); } my_finishCommand(connection); } else { mpd_send_command(connection, "replay_gain_mode", argv[0], NULL); my_finishCommand(connection); } return 0; }
StringIterator Connection::GetSupportedExtensions() { prechecksNoCommandsList(); mpd_send_command(m_connection.get(), "decoders", NULL); checkErrors(); return StringIterator(m_connection.get(), [](StringIterator::State &state) { auto src = mpd_recv_pair_named(state.connection(), "suffix"); if (src != nullptr) { state.setObject(src->value); mpd_return_pair(state.connection(), src); return true; } else return false; }); }
bool path_prepare(struct mpd_connection *conn) { if (initialized) return true; initialized = true; if (mpd_connection_cmp_server_version(conn, 0, 17, 0) < 0) /* the "config" command was added in MPD 0.17.1 */ return true; if (!mpd_send_command(conn, "config", NULL)) return false; struct mpd_pair *pair = mpd_recv_pair_named(conn, "music_directory"); if (pair != NULL) { music_directory = strdup(pair->value); mpd_return_pair(conn, pair); } return mpd_response_finish(conn) || mpd_connection_clear_error(conn); }
void Connection::SetReplayGainMode(ReplayGainMode mode) { prechecksNoCommandsList(); const char *rg_mode; switch (mode) { case rgmOff: rg_mode = "off"; break; case rgmTrack: rg_mode = "track"; break; case rgmAlbum: rg_mode = "album"; break; default: rg_mode = ""; break; } mpd_send_command(m_connection.get(), "replay_gain_mode", rg_mode, NULL); mpd_response_finish(m_connection.get()); checkErrors(); }
bool mpd_command_list_end(struct mpd_connection *connection) { bool success; assert(connection != NULL); if (!connection->sending_command_list) { mpd_error_code(&connection->error, MPD_ERROR_STATE); mpd_error_message(&connection->error, "not in command list mode"); return false; } connection->sending_command_list = false; success = mpd_send_command(connection, "command_list_end", NULL); connection->sending_command_list = true; if (!success) return false; assert(connection->receiving); return true; }
bool mpd_send_list_queue_meta(struct mpd_connection *connection) { return mpd_send_command(connection, "playlistinfo", NULL); }
bool mpd_send_clear(struct mpd_connection *connection) { return mpd_send_command(connection, "clear", NULL); }
bool mpd_send_list_all(struct mpd_connection *connection, const char *dir) { return mpd_send_command(connection, "listall", dir, NULL); }
void MpdWidget::psMpdHB() { timerMpd->stop(); QString dataSender, dataVol, dataTitle; struct mpd_connection *conn; struct mpd_status * status; struct mpd_song *song; // const struct mpd_audio_format *audio_format; conn = mpd_connection_new(NULL, 0, 30000); if (mpd_connection_get_error(conn) != MPD_ERROR_SUCCESS) { timerMpd->start(); return; } if (aktPlay) { aktPlay = false; mpd_send_command(conn, "play", NULL); timerMpd->start(); return; } if (aktStop) { aktStop = false; mpd_send_command(conn, "stop", NULL); timerMpd->start(); return; } mpd_command_list_begin(conn, true); mpd_send_status(conn); mpd_send_current_song(conn); mpd_command_list_end(conn); // Status status = mpd_recv_status(conn); if (status == NULL) { timerMpd->start(); return ; } // Volume dataVol.number(mpd_status_get_volume(status)); if (labelVol->text().compare(dataVol) != 0) labelVol->setText(dataVol); if (mpd_status_get_error(status) != NULL) new QListWidgetItem(QString("status error: %1"). arg(mpd_status_get_error(status))); mpd_status_free(status); // Status mpd_response_next(conn); // Song song = mpd_recv_song(conn); if (song == NULL) { handle_error(conn); timerMpd->start(); return ; } // Title dataTitle = mpd_song_get_uri(song); if (labelTitle->text().compare(dataTitle) != 0) labelTitle->setText(dataTitle); unsigned int i = 0; QString value; while ((value = mpd_song_get_tag(song, MPD_TAG_TITLE, i++)) != NULL) { if (i > 0) dataSender.append(" "); dataSender.append(value); } if (labelSender->text().compare(dataSender) != 0) { labelSender->setText(dataSender); qDebug() << "refresh"; } mpd_song_free(song); // Song mpd_connection_free(conn); timerMpd->start(); }
bool mpd_send_list_url_schemes(struct mpd_connection *connection) { return mpd_send_command(connection, "urlhandlers", NULL); }
bool mpd_send_play(struct mpd_connection *connection) { return mpd_send_command(connection, "play", NULL); }
bool mpd_send_unsubscribe(struct mpd_connection *connection, const char *channel) { return mpd_send_command(connection, "unsubscribe", channel, NULL); }
bool mpd_send_channels(struct mpd_connection *connection) { return mpd_send_command(connection, "channels", NULL); }
bool mpd_send_rescan(struct mpd_connection *connection, const char *path) { return mpd_send_command(connection, "rescan", path, NULL); }
bool mpd_send_update(struct mpd_connection *connection, const char *path) { return mpd_send_command(connection, "update", path, NULL); }
bool mpd_send_list_meta(struct mpd_connection *connection, const char *dir) { return mpd_send_command(connection, "lsinfo", dir, NULL); }
bool mpd_send_current_song(struct mpd_connection *connection) { return mpd_send_command(connection, "currentsong", NULL); }
bool mpd_send_read_messages(struct mpd_connection *connection) { return mpd_send_command(connection, "readmessages", NULL); }
bool mpd_send_disallowed_commands(struct mpd_connection *connection) { return mpd_send_command(connection, "notcommands", NULL); }
bool mpd_send_stats(struct mpd_connection *connection) { return mpd_send_command(connection, "stats", NULL); }
bool mpd_send_list_tag_types(struct mpd_connection *connection) { return mpd_send_command(connection, "tagtypes", NULL); }
bool mpd_send_previous(struct mpd_connection *connection) { return mpd_send_command(connection, "previous", NULL); }
bool mpd_send_shuffle(struct mpd_connection *connection) { return mpd_send_command(connection, "shuffle", NULL); }
bool mpd_send_password(struct mpd_connection *connection, const char *password) { return mpd_send_command(connection, "password", password, NULL); }
bool mpd_send_add_id(struct mpd_connection *connection, const char *file) { return mpd_send_command(connection, "addid", file, NULL); }
bool mpd_send_next(struct mpd_connection *connection) { return mpd_send_command(connection, "next", NULL); }