diff --git a/src/iptvsimple/utilities/StreamUtils.cpp b/src/iptvsimple/utilities/StreamUtils.cpp index 2b8e59eb..34703b2b 100644 --- a/src/iptvsimple/utilities/StreamUtils.cpp +++ b/src/iptvsimple/utilities/StreamUtils.cpp @@ -513,19 +513,24 @@ std::string StreamUtils::WebStreamExtractor(const std::string& webUrl, { std::string webPattern = currentChannel.GetProperty("web-regex"); std::string webHeaders = currentChannel.GetProperty("web-headers"); - std::string extractedUrl = - WebStreamExtractor::ExtractStreamUrl(webUrl, webPattern, webHeaders, false); - Logger::Log( - LEVEL_DEBUG, "%s - Extracted URL: '%s', webPattern: '%s', webHeaders: '%s', webUrl: '%s'", - __FUNCTION__, extractedUrl.c_str(), webPattern.c_str(), webHeaders.c_str(), webUrl.c_str()); + std::string mediaHeaders; + std::string tempUrl = webUrl; + size_t pos = tempUrl.find('|'); - if (!extractedUrl.empty()) + if (pos != std::string::npos) { - size_t pos = webUrl.find('|'); - if (pos != std::string::npos) - { - extractedUrl += webUrl.substr(pos); - } + mediaHeaders = tempUrl.substr(pos); + tempUrl = tempUrl.substr(0, pos); + } + std::string extractedUrl = + WebStreamExtractor::ExtractStreamUrl(tempUrl, webPattern, webHeaders, false); + Logger::Log(LEVEL_DEBUG, + "%s - Extracted URL: '%s', webPattern: '%s', webHeaders: '%s', webUrl: '%s'", + __FUNCTION__, extractedUrl.c_str(), webPattern.c_str(), webHeaders.c_str(), + tempUrl.c_str()); + if (!extractedUrl.empty() && !mediaHeaders.empty()) + { + extractedUrl += mediaHeaders; } return extractedUrl; } @@ -540,19 +545,23 @@ std::string StreamUtils::WebStreamExtractor(const std::string& webUrl, { std::string webPattern = currentMediaEntry.GetProperty("web-regex"); std::string webHeaders = currentMediaEntry.GetProperty("web-headers"); + std::string mediaHeaders; + std::string tempUrl = webUrl; + size_t pos = tempUrl.find('|'); + + if (pos != std::string::npos) + { + mediaHeaders = tempUrl.substr(pos); + tempUrl = tempUrl.substr(0, pos); + } std::string extractedUrl = WebStreamExtractor::ExtractStreamUrl(webUrl, webPattern, webHeaders, true); Logger::Log( LEVEL_DEBUG, "%s - Extracted URL: '%s', webPattern: '%s', webHeaders: '%s', webUrl: '%s'", __FUNCTION__, extractedUrl.c_str(), webPattern.c_str(), webHeaders.c_str(), webUrl.c_str()); - - if (!extractedUrl.empty()) + if (!extractedUrl.empty() && !mediaHeaders.empty()) { - size_t pos = webUrl.find('|'); - if (pos != std::string::npos) - { - extractedUrl += webUrl.substr(pos); - } + extractedUrl += mediaHeaders; } return extractedUrl; }