Exemplo n.º 1
0
        public override List <String> GetMultipleVideoUrls(VideoInfo video, bool inPlaylist = false)
        {
            List <string> result = new List <string>();

            string data = GetWebData(video.VideoUrl);

            if (!string.IsNullOrEmpty(data))
            {
                data = data.Replace("&amp;", "&");
                data = data.Replace("&", "&amp;");
                foreach (RssItem item in RssToolkit.Rss.RssDocument.Load(data).Channel.Items)
                {
                    PlaybackOptions vidopts = getPlaybackOptions(item.MediaGroups[0].MediaContents[0].Url);
                    Log.Debug("Load: " + item.Title);
                    if (video.PlaybackOptions == null)
                    {
                        video.PlaybackOptions = vidopts.videoSrc;
                        if (retrieveSubtitles)
                        {
                            video.SubtitleText = Helpers.SubtitleUtils.Webvtt2SRT(GetWebData(vidopts.subtitleSrc["vtt"]));
                        }
                    }
                    result.Add(item.MediaGroups[0].MediaContents[0].Url);
                }
            }

            return(result);
        }
Exemplo n.º 2
0
        PlaybackOptions getPlaybackOptions(string videoUrl)
        {
            string      data = GetWebData(videoUrl);
            XmlDocument doc  = new XmlDocument();

            doc.LoadXml(data);

            PlaybackOptions vidopts = new PlaybackOptions();

            XmlNodeList list    = doc.SelectNodes("//rendition");
            XmlNodeList sublist = doc.SelectNodes("//typographic");

            foreach (XmlNode subtitle in sublist)
            {
                string subFormat = subtitle.Attributes["format"].Value;
                string subSrc    = subtitle.Attributes["src"].Value;
                vidopts.subtitleSrc.Add(subFormat, subSrc);
                Log.Debug("Subtitle url: " + subFormat + " : " + subSrc);
            }

            for (int i = list.Count - 1; i >= 0; i--)
            {
                Log.Debug("Get resolution information " + i.ToString());
                string bitrate    = list[i].Attributes["bitrate"].Value;
                string videoType  = list[i].Attributes["type"].Value.Replace(@"video/", String.Empty);
                string url        = list[i].FirstChild.InnerText;
                string resolution = "";
                Regex  resRegex   = new Regex(@"_([\d]+x[\d]+)_");
                Match  m          = resRegex.Match(url);
                if (m.Success)
                {
                    resolution = m.Groups[1].Captures[0].Value;
                }

                url = url.Replace(@"viacomccstrmfs.fplive.net/viacomccstrm", @"viacommtvstrmfs.fplive.net/viacommtvstrm");
                string br = bitrate + "K " + resolution + " " + videoType;
                if (!vidopts.videoSrc.ContainsKey(br))
                {
                    vidopts.videoSrc.Add(br, new MPUrlSourceFilter.RtmpUrl(url)
                    {
                        SwfVerify = false, SwfUrl = null
                    }.ToString());
                }
            }

            return(vidopts);
        }
Exemplo n.º 3
0
        public override string GetPlaylistItemVideoUrl(VideoInfo clonedVideoInfo, string chosenPlaybackOption, bool inPlaylist = false)
        {
            if (String.IsNullOrEmpty(chosenPlaybackOption))
            {
                return(clonedVideoInfo.VideoUrl);
            }

            PlaybackOptions options = getPlaybackOptions(clonedVideoInfo.VideoUrl);

            //set subtitle for part
            if (retrieveSubtitles)
            {
                clonedVideoInfo.SubtitleText = Helpers.SubtitleUtils.Webvtt2SRT(GetWebData(options.subtitleSrc["vtt"]));
            }

            if (options.videoSrc.ContainsKey(chosenPlaybackOption))
            {
                return(options.videoSrc[chosenPlaybackOption]);
            }
            var enumerator = options.videoSrc.GetEnumerator();

            enumerator.MoveNext();
            return(enumerator.Current.Value);
        }
Exemplo n.º 4
0
        PlaybackOptions getPlaybackOptions(string videoUrl)
        {
            string data = GetWebData(videoUrl);
            XmlDocument doc = new XmlDocument();
            doc.LoadXml(data);

            PlaybackOptions vidopts = new PlaybackOptions();

            XmlNodeList list = doc.SelectNodes("//src");
            XmlNodeList sublist = doc.SelectNodes("//typographic");
            
            foreach (XmlNode subtitle in sublist)
            {
                string subFormat = subtitle.Attributes["format"].Value;
                string subSrc = subtitle.Attributes["src"].Value;
                Log.Debug("Subtitle url: " + subFormat + " : " + subSrc);
                vidopts.subtitleSrc.Add(subFormat, subSrc);
            }

            for (int i = list.Count-1; i >=0 ; i--)
            {
                string bitrate = list[i].ParentNode.Attributes["bitrate"].Value;
                string videoType = list[i].ParentNode.Attributes["type"].Value.Replace(@"video/", String.Empty);
                string url = list[i].InnerText;
                string resolution = "";
                Regex resRegex = new Regex(@"_([\d]+x[\d]+)_");
                Match m = resRegex.Match(url);
                if (m.Success)
                    resolution = m.Groups[1].Captures[0].Value;

                url = url.Replace(@"viacomccstrmfs.fplive.net/viacomccstrm", @"viacommtvstrmfs.fplive.net/viacommtvstrm");
                string br = bitrate + "K " + resolution + " " + videoType;
                if (!vidopts.videoSrc.ContainsKey(br))
                    vidopts.videoSrc.Add(br, new MPUrlSourceFilter.RtmpUrl(url) { SwfVerify = false, SwfUrl = null }.ToString());
            }

            return vidopts;
        }