示例#1
0
            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());
            }
示例#2
0
            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);
            }