diff options
-rw-r--r-- | Plexservice.cpp | 14 | ||||
-rw-r--r-- | hlsPlayer.cpp | 12 | ||||
-rw-r--r-- | hlsPlayer.h | 3 |
3 files changed, 22 insertions, 7 deletions
diff --git a/Plexservice.cpp b/Plexservice.cpp index f6d2db9..fe73391 100644 --- a/Plexservice.cpp +++ b/Plexservice.cpp @@ -164,7 +164,7 @@ Poco::Net::HTTPRequest* Plexservice::CreateRequest(std::string path) pRequest->add("User-Agent", USERAGENT); - pRequest->add("X-Plex-Client-Capabilities", "protocols=shoutcast,http-video;videoDecoders=h264{profile:high&resolution:1080&level:51};audioDecoders=mp3,aac"); + //pRequest->add("X-Plex-Client-Capabilities", "protocols=shoutcast,http-video;videoDecoders=h264{profile:high&resolution:1080&level:51};audioDecoders=mp3,aac"); pRequest->add("X-Plex-Client-Identifier", Config::GetInstance().GetUUID()); pRequest->add("X-Plex-Device", "PC"); pRequest->add("X-Plex-Device-Name", Config::GetInstance().GetHostname()); @@ -188,7 +188,7 @@ MediaContainer* Plexservice::GetMediaContainer(std::string fullUrl) pRequest->add("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17"); - pRequest->add("X-Plex-Client-Capabilities", "protocols=shoutcast,http-video;videoDecoders=h264{profile:high&resolution:1080&level:51};audioDecoders=mp3,aac"); + //pRequest->add("X-Plex-Client-Capabilities", "protocols=shoutcast,http-video;videoDecoders=h264{profile:high&resolution:1080&level:51};audioDecoders=mp3,aac"); pRequest->add("X-Plex-Client-Identifier", Config::GetInstance().GetUUID()); pRequest->add("X-Plex-Device", "PC"); pRequest->add("X-Plex-Device-Name", Config::GetInstance().GetHostname()); @@ -318,11 +318,11 @@ std::string Plexservice::GetUniversalTranscodeUrl(Video* video) params << "&videoQuality=100"; params << "&session=" << encode(Config::GetInstance().GetUUID()); // TODO: generate Random SessionID - params << "&X-Plex-Client-Identifier=" << encode(Config::GetInstance().GetUUID()); - params << "&X-Plex-Product=Plex%20Home%20Theater"; - params << "&X-Plex-Device=PC"; - params << "&X-Plex-Platform=Plex%20Home%20Theater"; - params << "&X-Plex-Model=Linux"; + //params << "&X-Plex-Client-Identifier=" << encode(Config::GetInstance().GetUUID()); + //params << "&X-Plex-Product=Plex%20Home%20Theater"; + //params << "&X-Plex-Device=PC"; + //params << "&X-Plex-Platform=Plex%20Home%20Theater"; + //params << "&X-Plex-Model=Linux"; //params << "&X-Plex-Platform-Version=7"; //params << "&X-Plex-Version=1.2.12"; //params << "&X-Plex-Device-Name=" << "Plex%2FWeb%20(Chrome)"; diff --git a/hlsPlayer.cpp b/hlsPlayer.cpp index 5fa7b0e..6c8d70c 100644 --- a/hlsPlayer.cpp +++ b/hlsPlayer.cpp @@ -66,6 +66,7 @@ void cHlsSegmentLoader::LoadIndexList(void) Poco::URI indexUri(startUri+m_startParser.vPlaylistItems[0].file); Poco::Net::HTTPRequest request(Poco::Net::HTTPRequest::HTTP_GET, indexUri.getPath()); + AddHeader(request); // same server m_pClientSession->sendRequest(request); @@ -90,6 +91,7 @@ void cHlsSegmentLoader::LoadStartList(void) ConnectToServer(); Poco::Net::HTTPRequest request(Poco::Net::HTTPRequest::HTTP_GET, m_startUri.getPathAndQuery()); + AddHeader(request); m_pClientSession->sendRequest(request); Poco::Net::HTTPResponse responseStart; @@ -122,6 +124,7 @@ bool cHlsSegmentLoader::LoadSegment(std::string segmentUri) { std::cout << "Loading Segment: " << segmentUri << "... "; Poco::Net::HTTPRequest segmentRequest(Poco::Net::HTTPRequest::HTTP_GET, segmentUri); + AddHeader(segmentRequest); m_pClientSession->sendRequest(segmentRequest); Poco::Net::HTTPResponse segmentResponse; @@ -158,6 +161,7 @@ int cHlsSegmentLoader::GetSegmentSize(int segmentIndex) return m_indexParser.vPlaylistItems[segmentIndex].size; } Poco::Net::HTTPRequest req(Poco::Net::HTTPRequest::HTTP_HEAD, GetSegmentUri(segmentIndex)); + AddHeader(req); m_pClientSession->sendRequest(req); Poco::Net::HTTPResponse reqResponse; m_pClientSession->receiveResponse(reqResponse); @@ -223,6 +227,14 @@ bool cHlsSegmentLoader::StopLoader(void) return reqResponse.getStatus() == 200; } +void cHlsSegmentLoader::AddHeader(Poco::Net::HTTPRequest& req) +{ + req.add("X-Plex-Client-Identifier", Config::GetInstance().GetUUID()); + req.add("X-Plex-Product", "Plex Home Theater"); + req.add("X-Plex-Device", "PC"); + req.add("X-Plex-Platform", "Plex Home Theater"); + req.add("X-Plex-Model", "Linux"); +} //--- cHlsPlayer diff --git a/hlsPlayer.h b/hlsPlayer.h index 3df9c46..8d8bdb8 100644 --- a/hlsPlayer.h +++ b/hlsPlayer.h @@ -11,9 +11,11 @@ #include <vdr/tools.h> #include <Poco/Net/HTTPClientSession.h> +#include <Poco/Net/HTTPRequest.h> #include <Poco/URI.h> #include "m3u8Parser.h" +#include "Config.h" class cHlsSegmentLoader : public cThread { @@ -46,6 +48,7 @@ private: protected: void Action(void); bool DoLoad(void); + void AddHeader(Poco::Net::HTTPRequest& req); bool StopLoader(void); public: |