示例#1
0
        public void ShouldCreateStream()
        {
            var playlist = new M3uPlaylist
            {
                PlaylistEntries = new List <M3uPlaylistEntry>
                {
                    new M3uPlaylistEntry
                    {
                        Title     = "TVOne",
                        Uri       = "http://local",
                        Name      = "TvOne",
                        Logo      = "http://logo",
                        SmallLogo = "http://local-small-logo",
                        Code      = "123",
                        Group     = "local",
                        Id        = "12"
                    },
                    new M3uPlaylistEntry
                    {
                        Title = "TVTwo",
                        Logo  = "http://logo2",
                        Uri   = "http://local2"
                    }
                }
            };

            var stream  = M3UParser.M3uParser.CreateStream(playlist);
            var content = M3UParser.M3uParser.GetFromStream(stream);

            Assert.Equal(2, content.PlaylistEntries.Count);
            Assert.Equal(playlist.PlaylistEntries[0].Title, content.PlaylistEntries[0].Title);
            Assert.Equal(playlist.PlaylistEntries[1].Title, content.PlaylistEntries[1].Title);
        }
示例#2
0
        public void Create_CreatePlaylistAndCompareWithFile_Equal()
        {
            M3uContent  content  = new M3uContent();
            M3uPlaylist playlist = new M3uPlaylist();

            playlist.IsExtended = false;
            playlist.PlaylistEntries.Add(new M3uPlaylistEntry()
            {
                Album       = "",
                AlbumArtist = "",
                Duration    = TimeSpan.Zero,
                Path        = @"D:\Muzyka\Andrea Bocelli\04 Chiara.mp3",
                Title       = "",
            });
            playlist.PlaylistEntries.Add(new M3uPlaylistEntry()
            {
                Album       = null,
                AlbumArtist = null,
                Duration    = TimeSpan.Zero,
                Path        = @"D:\Muzyka\Andrea Bocelli\01 Con Te Partiro.mp3",
                Title       = null,
            });
            playlist.PlaylistEntries.Add(new M3uPlaylistEntry()
            {
                Album       = "Unknown",
                AlbumArtist = "Andrea Bocelli",
                Duration    = TimeSpan.Zero,
                Path        = @"D:\Muzyka\Andrea Bocelli\04 E Chiove.mp3",
                Title       = "E Chiove",
            });
            string created  = content.ToText(playlist);
            string fromFile = Helpers.Read("PlaylistNotExt.m3u");

            Assert.AreEqual(created, fromFile);
        }
示例#3
0
        public void Create_CreatePlaylistExtentedAndCompareWithFile_Equal()
        {
            M3uContent  content  = new M3uContent();
            M3uPlaylist playlist = new M3uPlaylist();

            playlist.IsExtended = true;
            playlist.PlaylistEntries.Add(new M3uPlaylistEntry()
            {
                Album       = "",
                AlbumArtist = "",
                Duration    = TimeSpan.FromSeconds(254),
                Path        = @"D:\Muzyka\Andrea Bocelli\04 Chiara.mp3",
                Title       = "Andrea Bocelli - Chiara",
            });
            playlist.PlaylistEntries.Add(new M3uPlaylistEntry()
            {
                Album       = null,
                AlbumArtist = null,
                Duration    = TimeSpan.FromSeconds(-1),
                Path        = @"D:\Muzyka\Andrea Bocelli\01 Con Te Partiro.mp3",
                Title       = "Andrea Bocelli - Con Te Partiro",
            });
            playlist.PlaylistEntries.Add(new M3uPlaylistEntry()
            {
                Album       = "AndreaBocelli",
                AlbumArtist = "Andrea Bocelli",
                Duration    = TimeSpan.FromSeconds(-1),
                Path        = @"D:\Muzyka\Andrea Bocelli\04 E Chiove.mp3",
                Title       = "Andrea Bocelli - E Chiove",
            });
            string created  = content.Create(playlist);
            string fromFile = Helpers.Read("PlaylistExt.m3u");

            Assert.AreEqual(created, fromFile);
        }
示例#4
0
        private M3uPlaylist MapToEntity(IPlaylist playlist)
        {
            M3uPlaylist m3UPlaylist = new M3uPlaylist();

            m3UPlaylist.IsExtended = true;

            m3UPlaylist.Comments.Add($"PLAYLIST-Author:{playlist.Author}");
            m3UPlaylist.Comments.Add($"PLAYLIST-Title:{playlist.Name}");
            m3UPlaylist.Comments.Add($"PLAYLIST-CreatedAt:{playlist.CreatedAt}");

            foreach (var item in playlist.Items)
            {
                var entry = new M3uPlaylistEntry()
                {
                    Duration = item.Duration,
                    Path     = item.Path,
                    Title    = item.Title,
                    Comments = new List <string>()
                };

                m3UPlaylist.PlaylistEntries.Add(entry);
            }

            return(m3UPlaylist);
        }
示例#5
0
        public static Stream CreateStream(M3uPlaylist playlistData)
        {
            using (var memoryStream = new MemoryStream())
                using (var streamWriter = new StreamWriter(memoryStream))
                {
                    streamWriter.WriteLine(Directives.EXTM3U);

                    foreach (var entry in playlistData.PlaylistEntries)
                    {
                        if (string.IsNullOrWhiteSpace(entry.Title))
                        {
                            throw new ArgumentNullException(entry.Title);
                        }

                        if (string.IsNullOrWhiteSpace(entry.Uri))
                        {
                            throw new ArgumentNullException(entry.Uri);
                        }

                        var chainAttributes = Helpers.ChainAttributes(entry);
                        streamWriter.WriteLine(chainAttributes);
                        streamWriter.WriteLine(entry.Uri);
                    }

                    streamWriter.Flush();
                    memoryStream.Position = 0;

                    return(new MemoryStream(memoryStream.ToArray(), false));
                }
        }
        private static string SerializePlaylist(IPlaylist playlist, Format fileFormat)
        {
            switch (fileFormat)
            {
            case Format.XSPF:
                var xspfSerializer = new XspfSerializer();
                var xspfPl         = new XspfPlaylist(playlist);
                return(xspfSerializer.Serialize(xspfPl));

            case Format.WPL:
                var wplSerializer = new WplSerializer();
                var wplPlaylist   = new WplPlaylist(playlist);
                return(wplSerializer.Serialize(wplPlaylist));

            case Format.M3U:
                var m3USerializer = new M3uSerializer();
                var m3UPlaylist   = new M3uPlaylist(playlist);
                return(m3USerializer.Serialize(m3UPlaylist));

            case Format.ASX:
                var asxSerializer = new AsxSerializer();
                var asxPlaylist   = new AsxPlaylist(playlist);
                return(asxSerializer.Serialize(asxPlaylist));

            case Format.PLS:
                var plsSerializer = new PlsSerializer();
                var plsPlaylist   = new PlsPlaylist(playlist);
                return(plsSerializer.Serialize(plsPlaylist));
            }

            return(String.Empty);
        }
        public void CreatePlaylist(ObservableCollection <MusicFileTag> musicFileTags, string filePath)
        {
            foreach (var tag in musicFileTags)
            {
                SaveTagToFile(tag);
            }

            M3uPlaylist playlist = new M3uPlaylist
            {
                IsExtended = true
            };

            foreach (var tag in musicFileTags)
            {
                playlist.PlaylistEntries.Add(new M3uPlaylistEntry()
                {
                    Path = tag.FilePath,
                });
            }

            // save playlist
            M3uContent   content = new M3uContent();
            StreamWriter SW      = new StreamWriter(filePath);

            SW.WriteLine(content.ToText(playlist));
            SW.Close();
        }
示例#8
0
        private void CreatePlaylist()
        {
            string folder            = textBoxFolder.Text;
            string textPlaylist      = string.Empty;
            string playlistExtension = string.Empty;

            switch (comboBoxPlaylist.SelectedItem)
            {
            case Constants.WinMediaPlayerPLS:

                PlsPlaylist plsPlaylist = new PlsPlaylist();
                playlistExtension = "pls";

                foreach (var episode in listBoxEpisodes.Items)
                {
                    plsPlaylist.PlaylistEntries.Add(new PlsPlaylistEntry()
                    {
                        Path  = Path.Combine(folder, episode.ToString()),
                        Title = Path.GetFileNameWithoutExtension(episode.ToString())
                    });
                }

                PlsContent plsContent = new PlsContent();
                textPlaylist = plsContent.ToText(plsPlaylist);

                break;

            case Constants.WinampM3U:

                M3uPlaylist m3uPlaylist = new M3uPlaylist();
                playlistExtension = "m3u";

                foreach (var episode in listBoxEpisodes.Items)
                {
                    m3uPlaylist.PlaylistEntries.Add(new M3uPlaylistEntry()
                    {
                        Path  = Path.Combine(folder, episode.ToString()),
                        Title = Path.GetFileNameWithoutExtension(episode.ToString())
                    });
                }

                M3uContent m3uContent = new M3uContent();
                textPlaylist = m3uContent.ToText(m3uPlaylist);

                break;

            default:
                break;
            }

            string playlistName     = $"Playlist - {Utils.GetTimestamp(DateTime.Now)}";
            string playlistFullName = Path.Combine(folder, $"{playlistName}.{playlistExtension}");

            using (FileStream fs = File.Create(playlistFullName))
            {
                byte[] info = new UTF8Encoding(true).GetBytes(textPlaylist);
                fs.Write(info, 0, info.Length);
            }
        }
示例#9
0
        public static void PlayPlayList(List <MusicItem> m)
        {
            M3uContent  content = new M3uContent();
            M3uPlaylist lst     = Generate(m);
            string      created = content.ToText(lst);

            SaveToFile(created);
        }
示例#10
0
        public void RefreshList(string _url)
        {
            if (!string.IsNullOrEmpty(_url))
            {
                url = _url;
            }
            string contents;

            try
            {
                using (var wc = new WebClient())
                {
                    contents = wc.DownloadString(url);
                }

                var           parser   = PlaylistParserFactory.GetPlaylistParser(".m3u");
                IBasePlaylist playlist = parser.GetFromString(contents);
                M3uPlaylist   m3uList  = (M3uPlaylist)playlist;
                channelsInfo.Clear();
                groupsInfo.Clear();
                int channelNumber      = 0;
                SeenResumeChannels src = SeenResumeChannels.Get();
                foreach (M3uPlaylistEntry entry in m3uList.PlaylistEntries)
                {
                    if (entry.CustomProperties.Count > 0)
                    {
                        ChannelInfo channelInfo = new ChannelInfo(entry);
                        channelInfo.seen           = src.IsSeen(channelInfo.Title);
                        channelInfo.currentPostion = src.GetCurrentPosition(channelInfo.Title);
                        channelsInfo.Add(channelNumber, channelInfo);
                        channelInfo.ChNumber = channelNumber;
                        GrpInfo groupInfo = new GrpInfo();
                        groupInfo.Title = channelInfo.TVGGroup;
                        groupInfo.Show  = channelInfo.ChannelType == ChType.SHOW;
                        if (!groupsInfo.ContainsKey(groupInfo))
                        {
                            groupsInfo[groupInfo] = new List <ChannelInfo>();
                        }
                        groupsInfo[groupInfo].Add(channelInfo);
                        channelNumber++;
                    }
                }
                if (File.Exists(Utils.CONF_PATH + "channelCache.json"))
                {
                    File.Delete(Utils.CONF_PATH + "channelCache.json");
                }
                using (StreamWriter file = File.CreateText(Utils.CONF_PATH + "channelCache.json"))
                {
                    JsonSerializer serializer = new JsonSerializer();
                    serializer.Serialize(file, channelsInfo.Values);
                }
                needRefresh = true;
                Task <string> stats = Utils.GetAsync("http://amian.es:5085/stats?ctype=connected&app=net&chn=CONNECT");
            } catch (Exception ex) {
                Console.WriteLine("Some error occur");
                needRefresh = false;
            }
        }
示例#11
0
            public override string ToString()
            {
                var playlist = new M3uPlaylist();

                playlist.PlaylistEntries.AddRange(this.Select(entry => new M3uPlaylistEntry {
                    Path = entry
                }));
                return(new M3u8Content().Create(playlist));
            }
示例#12
0
        public void Serialize_HasAMedia_MediaIsCorrectlyFormated()
        {
            var playlist = new M3uPlaylist();

            playlist.Add(new M3uItem("foo", 42.42m));
            var serializer = new M3uSerializer();

            var output = serializer.Serialize(playlist);

            output.Should().MatchRegex($"#EXTINF:42.42{newlinePattern}foo{newlinePattern}");
        }
示例#13
0
        public void Save(string filePath, IPlaylist playlist)
        {
            M3uPlaylist m3uPlaylist = MapToEntity(playlist);

            M3uContent content = new M3uContent();
            string     text    = content.ToText(m3uPlaylist);

            using (StreamWriter sw = new StreamWriter(filePath))
            {
                sw.Write(text);
            }
        }
        static M3uPlaylist GetPlaylistFromFile(string path)
        {
            var playlist = new M3uPlaylist();
            var content  = new M3uContent();

            using (MemoryStream ms = new MemoryStream())
                using (FileStream stream = File.Open(path, FileMode.Open))
                {
                    playlist = content.GetFromStream(stream);
                }

            return(playlist);
        }
示例#15
0
        public void Serialize_HasAMedia_MediaIsCorrectlyFormated()
        {
            var playlist = new M3uPlaylist();

            playlist.Add(new M3uItem("foo", 42.42m));

            var output = serializer.Serialize(playlist);

            var pattern =
                @"#EXTINF:42.42" + newlinePattern
                + @"foo" + newlinePattern;

            Assert.Matches(pattern, output);
        }
示例#16
0
        public void Serialize_HasAMediaWithNormalTitle_TitleIsTrimmedAndAdded()
        {
            var playlist = new M3uPlaylist();

            playlist.Add(new M3uItem("foo", 0)
            {
                Title = "\t Foo \t"
            });
            var serializer = new M3uSerializer();

            var output = serializer.Serialize(playlist);

            output.Should().MatchRegex($"#EXTINF:0, Foo{newlinePattern}");
        }
示例#17
0
        public void GetFromStream_ReadPlaylistNotExtendedAndCompareWithObject_Equal()
        {
            M3uContent  content  = new M3uContent();
            M3uPlaylist playlist = new M3uPlaylist();

            playlist.IsExtended = false;
            playlist.PlaylistEntries.Add(new M3uPlaylistEntry()
            {
                Album       = "",
                AlbumArtist = "",
                Duration    = TimeSpan.Zero,
                Path        = @"D:\Muzyka\Andrea Bocelli\04 Chiara.mp3",
                Title       = "",
            });
            playlist.PlaylistEntries.Add(new M3uPlaylistEntry()
            {
                Album       = null,
                AlbumArtist = null,
                Duration    = TimeSpan.Zero,
                Path        = @"D:\Muzyka\Andrea Bocelli\01 Con Te Partiro.mp3",
                Title       = null,
            });
            playlist.PlaylistEntries.Add(new M3uPlaylistEntry()
            {
                Album       = "Unknown",
                AlbumArtist = "Andrea Bocelli",
                Duration    = TimeSpan.Zero,
                Path        = @"D:\Muzyka\Andrea Bocelli\04 E Chiove.mp3",
                Title       = "E Chiove",
            });

            using (var stream = Helpers.ReadStream("PlaylistNotExt.m3u"))
            {
                var file = content.GetFromStream(stream);

                Assert.AreEqual(playlist.IsExtended, file.IsExtended);
                Assert.AreEqual(playlist.PlaylistEntries.Count, file.PlaylistEntries.Count);

                Assert.AreEqual(playlist.PlaylistEntries[0].Path, file.PlaylistEntries[0].Path);
                Assert.AreEqual(playlist.PlaylistEntries[0].Title, file.PlaylistEntries[0].Title);

                Assert.AreEqual(playlist.PlaylistEntries[1].Path, file.PlaylistEntries[1].Path);
                Assert.AreNotEqual(playlist.PlaylistEntries[1].Title, file.PlaylistEntries[1].Title);
                Assert.IsNull(playlist.PlaylistEntries[1].Title);
                Assert.AreEqual("", file.PlaylistEntries[1].Title);

                Assert.AreEqual(playlist.PlaylistEntries[2].Path, file.PlaylistEntries[2].Path);
                Assert.AreNotEqual(playlist.PlaylistEntries[2].Title, file.PlaylistEntries[2].Title);
            }
        }
示例#18
0
        public void Serialize_HasAMediaWithWhitespaceTitle_TitleIsIgnored()
        {
            var playlist = new M3uPlaylist();

            playlist.Add(new M3uItem("foo", 0)
            {
                Title = " \t"
            });
            var serializer = new M3uSerializer();

            var output = serializer.Serialize(playlist);

            output.Should().MatchRegex($"#EXTINF:0{newlinePattern}");
        }
示例#19
0
        public void GetFromStream_ReadPlaylistExtendedAndCompareWithObject_Equal()
        {
            M3uContent  content  = new M3uContent();
            M3uPlaylist playlist = new M3uPlaylist();

            playlist.IsExtended = true;
            playlist.PlaylistEntries.Add(new M3uPlaylistEntry()
            {
                Album       = "",
                AlbumArtist = "",
                Duration    = TimeSpan.FromSeconds(254),
                Path        = @"D:\Muzyka\Andrea Bocelli\04 Chiara.mp3",
                Title       = "Andrea Bocelli - Chiara",
            });
            playlist.PlaylistEntries.Add(new M3uPlaylistEntry()
            {
                Album       = null,
                AlbumArtist = null,
                Duration    = TimeSpan.FromSeconds(-1),
                Path        = @"D:\Muzyka\Andrea Bocelli\01 Con Te Partiro.mp3",
                Title       = "Andrea Bocelli - Con Te Partiro",
            });
            playlist.PlaylistEntries.Add(new M3uPlaylistEntry()
            {
                Album       = "AndreaBocelli",
                AlbumArtist = "Andrea Bocelli",
                Duration    = TimeSpan.FromSeconds(-1),
                Path        = @"D:\Muzyka\Andrea Bocelli\04 E Chiove.mp3",
                Title       = "Andrea Bocelli - E Chiove",
            });
            var stream = Helpers.ReadStream("PlaylistExt.m3u");
            var file   = content.GetFromStream(stream);

            stream.Dispose();
            Assert.AreEqual(playlist.IsExtended, file.IsExtended);
            Assert.AreEqual(playlist.PlaylistEntries.Count, file.PlaylistEntries.Count);
            Assert.AreEqual(playlist.PlaylistEntries[0].Path, file.PlaylistEntries[0].Path);
            Assert.AreEqual(playlist.PlaylistEntries[0].Title, file.PlaylistEntries[0].Title);
            Assert.AreEqual(playlist.PlaylistEntries[0].Album, file.PlaylistEntries[0].Album);
            Assert.AreEqual(playlist.PlaylistEntries[0].AlbumArtist, file.PlaylistEntries[0].AlbumArtist);
            Assert.AreEqual(playlist.PlaylistEntries[1].Path, file.PlaylistEntries[1].Path);
            Assert.AreEqual(playlist.PlaylistEntries[1].Title, file.PlaylistEntries[1].Title);
            Assert.AreNotEqual(playlist.PlaylistEntries[1].Album, file.PlaylistEntries[1].Album);
            Assert.AreNotEqual(playlist.PlaylistEntries[1].AlbumArtist, file.PlaylistEntries[1].AlbumArtist);
            Assert.AreEqual(playlist.PlaylistEntries[2].Path, file.PlaylistEntries[2].Path);
            Assert.AreEqual(playlist.PlaylistEntries[2].Title, file.PlaylistEntries[2].Title);
            Assert.AreEqual(playlist.PlaylistEntries[2].Album, file.PlaylistEntries[2].Album);
            Assert.AreEqual(playlist.PlaylistEntries[2].AlbumArtist, file.PlaylistEntries[2].AlbumArtist);
        }
示例#20
0
        public void Serialize_HasAMediaWithNormalTitle_TitleIsTrimmedAndAdded()
        {
            var playlist = new M3uPlaylist();

            playlist.Add(new M3uItem("foo", 0)
            {
                Title = "\t Foo \t"
            });

            var output = serializer.Serialize(playlist);

            var pattern = @"#EXTINF:0, Foo" + newlinePattern;

            Assert.Matches(pattern, output);
        }
示例#21
0
        public void Serialize_HasAMediaWithWhitespaceTitle_TitleIsIgnored()
        {
            var playlist = new M3uPlaylist();

            playlist.Add(new M3uItem("foo", 0)
            {
                Title = " \t"
            });

            var output = serializer.Serialize(playlist);

            var pattern = @"#EXTINF:0" + newlinePattern;

            Assert.Matches(pattern, output);
        }
示例#22
0
        private async void Save_Click(object sender, RoutedEventArgs e)
        {
            M3uContent  playlistContent = new M3uContent();
            M3uPlaylist savePlaylist    = new M3uPlaylist
            {
                IsExtended = false
            };

            foreach (Item item in Playlist)
            {
                savePlaylist.PlaylistEntries.Add(new M3uPlaylistEntry()
                {
                    Path = item.FilePath
                });
            }

            string textPlaylist = playlistContent.Create(savePlaylist);

            var savePicker = new FileSavePicker
            {
                SuggestedStartLocation = PickerLocationId.DocumentsLibrary,
                SuggestedFileName      = "New Playlist"
            };

            savePicker.FileTypeChoices.Add("M3U Playlist", new List <string>()
            {
                ".m3u"
            });

            StorageFile playlistFile = await savePicker.PickSaveFileAsync();

            if (playlistFile != null)
            {
                CachedFileManager.DeferUpdates(playlistFile);
                await FileIO.WriteTextAsync(playlistFile, textPlaylist);

                FileUpdateStatus status = await CachedFileManager.CompleteUpdatesAsync(playlistFile);

                if (status == FileUpdateStatus.Complete)
                {
                    ToastNotificationManager.CreateToastNotifier().Show(new ToastNotificationBuilder().Build(
                                                                            "vMix List Maker",
                                                                            "Playlist " + playlistFile.Name + " saved successfully!"
                                                                            ));
                }
            }
        }
示例#23
0
        static void Main(string[] args)
        {
            var iTunesXml = @"C:\Users\matth\Music\iTunes\iTunes Music Library.xml";

            var library = new ITunesLibrary(iTunesXml);

            var tracks = library.Tracks;
            // returns all tracks in the iTunes Library

            var albums = library.Albums;
            // returns all albums in the iTunes Library

            var playlists = library.Playlists;

            foreach (var playlist in playlists.Where(p => p.Tracks != null && p.Tracks.Count() != 0))
            {
                Console.WriteLine(playlist.Name);

                var serviceCollection = new ServiceCollection();
                serviceCollection.AddLogging();


                var playlistOutput = new M3uPlaylist
                {
                    IsExtended = true
                };

                foreach (var track in playlist.Tracks)
                {
                    if (track.Location != null)
                    {
                        playlistOutput.PlaylistEntries.Add(new M3uPlaylistEntry()
                        {
                            Album       = track.Album,
                            AlbumArtist = track.Artist,
                            Path        = track.Location.Replace("file://localhost/D:/iTunesMedia/Music", "..").Replace("%20", " "),
                            Title       = track.Name
                        });
                    }
                }

                var    content = new M3uContent();
                string text    = content.ToText(playlistOutput);

                File.WriteAllText(@"\\192.168.1.2\music\playlists\" + playlist.Name + ".m3u", text);
            }
        }
示例#24
0
        public static List <ChannelInfo> LoadChannellist()
        {
            string localFilePath = "ASTRA_19_2E.m3u";

            if (!File.Exists(localFilePath))
            {
                new WebClient().DownloadFile(_m3uUrl, localFilePath);
            }

            M3uContent         content     = new M3uContent();
            M3uPlaylist        playlist    = content.GetFromStream(File.OpenRead(localFilePath));
            List <ChannelInfo> channelList = playlist.PlaylistEntries.Select(item => new ChannelInfo()
            {
                Name = item.Title, Url = item.Path
            }).ToList();

            return(channelList);
        }
示例#25
0
        private static M3uPlaylist Generate(List <MusicItem> m)
        {
            var l = new M3uPlaylist();

            l.IsExtended      = false;
            l.PlaylistEntries = new List <M3uPlaylistEntry>();
            foreach (var mi in m)
            {
                l.PlaylistEntries.Add(new M3uPlaylistEntry()
                {
                    Album       = string.Empty,
                    AlbumArtist = mi.Artist,
                    Duration    = TimeSpan.Zero,
                    Path        = mi.FullFileName,
                    Title       = mi.Title,
                });
            }
            return(l);
        }
示例#26
0
        /// <summary>
        /// Returns the playlist in m3u format.
        /// </summary>
        private string CreateM3uPlaylist()
        {
            var playlist = new M3uPlaylist()
            {
                IsExtended = App.UserSettings.M3uExtended,
            };

            foreach (Track track in _album.Tracks)
            {
                playlist.PlaylistEntries.Add(new M3uPlaylistEntry()
                {
                    Album       = _album.Title,
                    AlbumArtist = _album.Artist,
                    Duration    = TimeSpan.FromSeconds(track.Duration),
                    Path        = Path.GetFileName(track.Path),
                    Title       = track.Title,
                });
            }

            return(new M3uContent().ToText(playlist));
        }
        private static void PrepareMail(DateTime now, List <string> result, M3uPlaylist playlist, out string mailBody, out string mailSubject)
        {
            var mailXml  = new XmlDocument();
            var langCode = configFile.AppSettings.Settings["MailLangCode"].Value;

            mailXml.Load("MailTexts.xml");

            var playlistEntries = playlist.PlaylistEntries;
            var newResult       = result.Select(p => p + Environment.NewLine + playlistEntries.First(x => x.Title == p).Path + Environment.NewLine).ToList();


            mailBody  = mailXml.SelectSingleNode($"/MailText/NewEntriesCaption[@lang-code='{langCode}']").InnerText + Environment.NewLine;
            mailBody += Environment.NewLine;
            mailBody += String.Join(Environment.NewLine, newResult);
            mailBody += Environment.NewLine;
            mailBody += Environment.NewLine;
            mailBody += $"-- {mailXml.SelectSingleNode($"/MailText/MailSignature[@lang-code='{langCode}']").InnerText} :)";
            mailBody += Environment.NewLine;

            mailSubject = "Duyuru! IPTVNotifier - Yeni eklenen içerik - " + now.ToString("dd/MM/yyyy - HH:mm");
        }
示例#28
0
        public M3uPlaylist ConvertFileListToM3UPlaylist()
        {
            M3uPlaylist PlaylistFile = new M3uPlaylist
            {
                IsExtended = true
            };

            foreach (PlaylistEntry file in Files)
            {
                PlaylistFile.PlaylistEntries.Add(new M3uPlaylistEntry
                {
                    Duration    = file.SongData.Length,
                    Title       = file.SongData.Title,
                    Album       = file.SongData.Album,
                    AlbumArtist = file.SongData.Artist,
                    Path        = file.SongData.FileName
                });
            }

            return(PlaylistFile);
        }
示例#29
0
        public void ShouldCreateStreamThrowExceptionIfUriIsNotGiven()
        {
            var playlist = new M3uPlaylist
            {
                PlaylistEntries = new List <M3uPlaylistEntry>
                {
                    new M3uPlaylistEntry
                    {
                        Title     = "TVOne",
                        Name      = "TvOne",
                        Logo      = "http://logo",
                        SmallLogo = "http://local-small-logo",
                        Code      = "123",
                        Group     = "local",
                        Id        = "12"
                    }
                }
            };

            Assert.Throws <ArgumentNullException>(() => M3UParser.M3uParser.CreateStream(playlist));
        }
示例#30
0
        public IPlaylist Load(string filePath)
        {
            IPlaylist   playlist        = null;
            M3uPlaylist m3uPlaylistBase = null;

            if (string.IsNullOrWhiteSpace(filePath) || !File.Exists(filePath))
            {
                return(null);
            }

            using (StreamReader sr = new StreamReader(filePath))
            {
                M3uContent content = new M3uContent();
                m3uPlaylistBase = content.GetFromStream(sr.BaseStream);
            }

            m3uPlaylistBase.Path = filePath;

            playlist = MapToDomain(m3uPlaylistBase);

            return(playlist);
        }