public override List <string> GetMultipleVideoUrls(VideoInfo video, bool inPlaylist = false) { string url = ""; Regex regex = new Regex(@"""HttpLiveStreaming"",""mobileUrl"":""(?<url>[^""]*)"); Match m = regex.Match(GetWebData(video.VideoUrl)); if (m.Success) { string playlistUrl = m.Groups["url"].Value; MyHlsPlaylistParser playlist = new MyHlsPlaylistParser(GetWebData(playlistUrl), playlistUrl); video.PlaybackOptions = new Dictionary <string, string>(); if (playlist.StreamInfos.Count > 0) { foreach (MyHlsStreamInfo si in playlist.StreamInfos) { string key = "Bitrate: " + si.Bandwidth; if (!video.PlaybackOptions.ContainsKey(key)) { video.PlaybackOptions.Add("Bitrate: " + si.Bandwidth, si.Url); } } url = video.PlaybackOptions.First().Value; } if (inPlaylist) { video.PlaybackOptions.Clear(); } } return(new List <string>() { url }); }
public override List <string> GetMultipleVideoUrls(VideoInfo video, bool inPlaylist = false) { video.PlaybackOptions = new Dictionary <string, string>(); string videoUrl = video.VideoUrl; if (videoUrl.EndsWith(".m3u8")) { MyHlsPlaylistParser parser = new MyHlsPlaylistParser(GetWebData(videoUrl), videoUrl); foreach (MyHlsStreamInfo streamInfo in parser.StreamInfos) { video.PlaybackOptions.Add(string.Format("{0}x{1} ({2}kbps)", streamInfo.Width, streamInfo.Height, streamInfo.Bandwidth), streamInfo.Url); } } else { HosterBase hoster = HosterFactory.GetAllHosters().FirstOrDefault <HosterBase>((HosterBase h) => videoUrl.ToLower().Contains(h.GetHosterUrl().ToLower())); if (hoster != null) { video.PlaybackOptions = hoster.GetPlaybackOptions(videoUrl); if (hoster is ISubtitle) { video.SubtitleText = (hoster as ISubtitle).SubtitleText; } } } if (video.PlaybackOptions.Count == 0) { return(new List <string>()); } if (video.HasDetails && (video as DetailVideoInfo).Title2 == "Live") { video.PlaybackOptions = video.PlaybackOptions.ToDictionary(p => p.Key, p => p.Value.Replace("start=", "dummy=")); } string url = video.PlaybackOptions.First <KeyValuePair <string, string> >().Value; if (inPlaylist) { video.PlaybackOptions.Clear(); } return(new List <string>() { url }); }