summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2026-02-03 00:26:29 +0100
committerCarl Hetherington <cth@carlh.net>2026-02-16 01:20:39 +0100
commitedf67efd4662f63c62a1cb524761cc44831c7020 (patch)
tree5b833127daca63af302e015b49ceab4ed1461997 /src
parent0e057a0fc38586ea55746173ca11446eef6d5865 (diff)
Support current playlist in the web interface.
Diffstat (limited to 'src')
-rw-r--r--src/lib/http_server.cc7
-rw-r--r--src/lib/http_server.h6
-rw-r--r--src/wx/player_frame.cc6
3 files changed, 19 insertions, 0 deletions
diff --git a/src/lib/http_server.cc b/src/lib/http_server.cc
index 43b4cbb84..83ad2551c 100644
--- a/src/lib/http_server.cc
+++ b/src/lib/http_server.cc
@@ -134,6 +134,13 @@ HTTPServer::get_request(string const& url)
json.push_back(spl.second.as_json());
}
return Response(200, json.dump(), Response::Type::JSON);
+ } else if (url == "/api/v1/current-playlist") {
+ nlohmann::json json;
+ boost::mutex::scoped_lock lm(_mutex);
+ for (auto entry: _current_playlist) {
+ json.push_back(entry);
+ }
+ return Response(200, json.dump(), Response::Type::JSON);
} else if (boost::algorithm::starts_with(url, "/api/v1/content/")) {
vector<string> parts;
boost::algorithm::split(parts, url, boost::is_any_of("/"));
diff --git a/src/lib/http_server.h b/src/lib/http_server.h
index 7ca5fa534..42307b124 100644
--- a/src/lib/http_server.h
+++ b/src/lib/http_server.h
@@ -82,6 +82,11 @@ public:
_dcp_name = name;
}
+ void set_current_playlist(std::vector<std::string> playlist) {
+ boost::mutex::scoped_lock lm(_mutex);
+ _current_playlist = playlist;
+ }
+
private:
void handle(std::shared_ptr<Socket> socket) override;
Response request(std::vector<std::string> const& request, std::string const& body);
@@ -93,5 +98,6 @@ private:
bool _playing = false;
dcpomatic::DCPTime _position;
std::string _dcp_name;
+ std::vector<std::string> _current_playlist;
};
diff --git a/src/wx/player_frame.cc b/src/wx/player_frame.cc
index 5097c5e00..565e50ad7 100644
--- a/src/wx/player_frame.cc
+++ b/src/wx/player_frame.cc
@@ -563,6 +563,12 @@ PlayerFrame::idle()
_http_server->set_dcp_name("");
}
_http_server->set_position(_viewer.position());
+ vector<string> names;
+ for (auto const& entry: _playlist) {
+ ShowPlaylistEntry e(entry.first, {});
+ names.push_back(e.name());
+ }
+ _http_server->set_current_playlist(names);
_last_http_server_update = now;
}
}