public void M3UItemEmptinessTest()
        {
            M3UItem        item     = new M3UItem(new FileInfo(path), new LoadOptions(/*ShowComments*/ false, /*ShowPath*/ true));
            List <M3UItem> listItem = new List <M3UItem>();

            listItem.Add(item);
            bool isEmpty = listItem.Any();

            Assert.IsTrue(isEmpty);
        }
Exemple #2
0
        public static List <M3UItem> ParseM3U(string m3uFile)
        {
            String[] m3uSplit = m3uFile.Split('\n');

            List <M3UItem> items = new List <M3UItem>();

            for (int i = 0; i < m3uSplit.Length; i++)
            {
                if (m3uSplit[i].Length == 0 || m3uSplit[i].Equals("#EXTM3U"))
                {
                    continue;
                }

                if (m3uSplit[i].StartsWith("#EXTINF"))
                {
                    //Parse info
                    M3UItem newItem = new M3UItem();
                    newItem.Attributes = new Dictionary <string, string>();
                    newItem.b64        = Convert.ToBase64String(Encoding.UTF8.GetBytes(m3uSplit[i]));
                    string[] m3uattrs = Regex.Split(m3uSplit[i], "(?<=^[^\"]*(?:\"[^\"]*\"[^\"]*)*) (?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)");
                    newItem.ExtInf = m3uattrs[0];
                    foreach (string s in m3uattrs)
                    {
                        if (s.Contains("=") && s.Contains("\""))
                        {
                            Match mc = Regex.Match(s, "(.*?)=\"(.*?)\"");
                            if (mc.Groups.Count == 3)
                            {
                                newItem.Attributes.Add(mc.Groups[1].Value, mc.Groups[2].Value);
                            }
                        }
                    }
                    string[] namesplit = m3uSplit[i].Split("\",");
                    newItem.Name = namesplit[1].TrimStart();
                    newItem.Url  = m3uSplit[i + 1];
                    items.Add(newItem);
                }
            }
            return(items);
        }