new feature: custom command execution on song change

This commit is contained in:
Andrzej Rybczak
2009-05-21 23:05:53 +02:00
parent 3d9c242f4d
commit 7eb74a6da2
4 changed files with 15 additions and 0 deletions

View File

@@ -110,6 +110,13 @@
# #
##### various settings ##### ##### various settings #####
# #
##
## Note: Custom command that will be executed each time song changes.
## It uses the same syntax as song format (for now playing song).
## Useful for notifications etc.
##
#execute_on_song_change = ""
#
#playlist_show_remaining_time = "no" #playlist_show_remaining_time = "no"
# #
#playlist_display_mode = "classic" (classic/columns) #playlist_display_mode = "classic" (classic/columns)

View File

@@ -533,6 +533,11 @@ void ReadConfiguration(ncmpcpp_config &conf)
if (!v.empty()) if (!v.empty())
conf.system_encoding = v + "//TRANSLIT"; conf.system_encoding = v + "//TRANSLIT";
} }
else if (cl.find("execute_on_song_change") != string::npos)
{
if (!v.empty())
conf.execute_on_song_change = v;
}
else if (cl.find("browser_playlist_prefix") != string::npos) else if (cl.find("browser_playlist_prefix") != string::npos)
{ {
if (!v.empty()) if (!v.empty())

View File

@@ -119,6 +119,7 @@ struct ncmpcpp_config
std::string tag_editor_album_format; std::string tag_editor_album_format;
std::string external_editor; std::string external_editor;
std::string system_encoding; std::string system_encoding;
std::string execute_on_song_change;
std::string pattern; std::string pattern;

View File

@@ -343,6 +343,8 @@ void NcmpcppStatusChanged(Connection *Mpd, StatusChanges changed, void *)
if (myPlaylist->isPlaying()) if (myPlaylist->isPlaying())
{ {
np = Mpd->GetCurrentSong(); np = Mpd->GetCurrentSong();
if (!Config.execute_on_song_change.empty())
system(np.toString(Config.execute_on_song_change).c_str());
if (Mpd->GetState() > psStop) if (Mpd->GetState() > psStop)
WindowTitle(utf_to_locale_cpy(np.toString(Config.song_window_title_format))); WindowTitle(utf_to_locale_cpy(np.toString(Config.song_window_title_format)));
if (Config.autocenter_mode && !myPlaylist->Main()->isFiltered()) if (Config.autocenter_mode && !myPlaylist->Main()->isFiltered())