internal static M3UElement[] ReadM3uElement(M3UPlaylist m3UPlaylist, string[] tcontent, string basepath, ReaderConfiguration config, int activeDepth) { List <M3UElement> tReturn = new List <M3UElement>(); List <string> tElement = new List <string>(); int index = 0; while (index < tcontent.Length) { string line = tcontent[index].Trim(); tElement.Add(line); if (!line.StartsWith("#")) { //An M3Ux Element is found string sline = tElement[0].Trim(); if (sline.StartsWith(Constantes.M3U_INFO_MARKER)) { tReturn.Add(M3UElement.Read(tElement.ToArray(), basepath, config, activeDepth + 1)); } else if (sline.StartsWith(Constantes.M3U8_INFO_MARKER)) { tReturn.Add(M3U8Element.Read(tElement.ToArray(), basepath, config, activeDepth + 1)); } tElement = new List <string>(); } index++; } if (m3UPlaylist != null) { m3UPlaylist.AddRange(tReturn.ToArray()); } return(tReturn.ToArray()); }
internal static M3U8Element Read(string[] tContent, string basepath, ReaderConfiguration config, int activeDepth) { M3U8Element oReturn = new M3U8Element(activeDepth); if (tContent.Length > 1) { oReturn.Path = tContent[tContent.Length - 1]; Helper.ConvertRelative2Absolute(basepath, oReturn); } string[] tOptions = tContent[0].Replace(Constantes.M3U8_INFO_MARKER + ":", "").Split(','); oReturn.Options = new System.Collections.Hashtable(); foreach (string opt in tOptions) { Helper.ReadOptions(opt, oReturn.Options, '='); } if (!string.IsNullOrEmpty(oReturn.Path)) { if (oReturn.Path.ToLower().Contains("m3u8") && config.Depth > activeDepth) { string sChilds = Helper.GetWebData(oReturn.Path); List <M3UComponent> childs = new List <M3UComponent>(); childs.AddRange(Helper.ReadM3uElement(sChilds, basepath, config, activeDepth)); if (childs.Count > 0) { oReturn.AddRange(childs); } } } else { oReturn = null; } tOptions = null; return(oReturn); }