string getLiveUrls(VideoInfo video) { WebProxy proxyObj = getProxy(); string playlistStr = GetWebData(video.VideoUrl, proxy: proxyObj, userAgent: HlsPlaylistParser.APPLE_USER_AGENT); HlsPlaylistParser playlist = new HlsPlaylistParser(playlistStr, video.VideoUrl); video.PlaybackOptions = new Dictionary<string, string>(); if (playlist.StreamInfos.Count == 0) { video.PlaybackOptions.Add(video.Title, video.VideoUrl); return video.VideoUrl; } return populateHlsPlaybackOptions(video, playlist.StreamInfos); }
string getHLSVideoUrls(VideoInfo video, string vpid, WebProxy proxyObj) { XmlDocument doc = new XmlDocument(); doc.LoadXml(GetWebData(HLS_MEDIA_SELECTOR_URL + vpid, proxy: proxyObj)); //uk only XmlNamespaceManager nsmRequest = new XmlNamespaceManager(doc.NameTable); nsmRequest.AddNamespace("ns1", "http://bbc.co.uk/2008/mp/mediaselection"); video.PlaybackOptions = new Dictionary<string, string>(); foreach (XmlElement mediaElem in doc.SelectNodes("//ns1:media[@kind='video']", nsmRequest)) { foreach (XmlElement connectionElem in mediaElem.SelectNodes("ns1:connection", nsmRequest)) { string playlistUrl = connectionElem.Attributes["href"].Value; string playlistStr = GetWebData(playlistUrl, proxy: proxyObj, userAgent: HlsPlaylistParser.APPLE_USER_AGENT); HlsPlaylistParser playlist = new HlsPlaylistParser(playlistStr, playlistUrl); if (playlist.StreamInfos.Count > 0) return populateHlsPlaybackOptions(video, playlist.StreamInfos); } } return null; }