public RadioStationPlaylistItem(RadioStation rs) : base(rs.Url, false, false) { _rs = rs; }
public void LoadM3UPlaylistFromString(string content, string playlistFileName = "") { try { OnlineMediaItem omi = null; string[] lines = content.Split("\r\n".ToCharArray(), StringSplitOptions.RemoveEmptyEntries); if (lines != null) { foreach (string line in lines) { if (_abortLoad) { break; } if (line.StartsWith("#")) { if (line.StartsWith("#RADIO:")) { string s = line.Replace("#RADIO:", "").Trim(); string[] fields = s.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries); if (fields != null && fields.Length > 1) { omi = new RadioStation(OnlineMediaSource.ShoutCast); omi.Title = fields[1]; } } else if (line.StartsWith("#DZMEDIA:")) { string s = line.Replace("#DZMEDIA:", "").Trim(); int idx = s.IndexOf(','); if (idx > 0) { string durStr = s.Substring(0, idx); DeezerTrackItem dti = new DeezerTrackItem(); int sec = 0; int.TryParse(durStr, out sec); dti.Duration = TimeSpan.FromSeconds(sec); if (idx < (s.Length - 2)) { string[] fields2 = s.Substring(idx + 1).Split("`".ToCharArray(), StringSplitOptions.RemoveEmptyEntries); dti.Artist = fields2[0]; dti.Title = fields2[1]; dti.Album = fields2[2]; } omi = dti; } } } else { if (omi != null) { omi.Url = line; AddOnlineMediaItem(omi); } else { AddItem(GetAbsoluteItemPath(line, playlistFileName)); } omi = null; } } } } catch (Exception ex) { Logger.LogException(ex); } }
private static void ValidateUrl(string url, string title, string genre) { Console.WriteLine("Trying url: {0}", url); try { Uri uri = new Uri(url); string hostName = uri.DnsSafeHost; //if (!QueryDnsWithTimeout(hostName, 300)) //{ // Console.WriteLine("\t -> Url: {0} is not valid (DNS error)", url); // return; //} List<String> urlsToCkeck = new List<string>(); if (IsPlaylist(url)) { string fileName = Path.GetFileName(uri.LocalPath); string tempFile = @"c:\temp.pls"; using (WebClientWithTimeout wc = new WebClientWithTimeout()) { wc.Timeout = 500; wc.Proxy = AppSettings.GetWebProxy(); wc.DownloadFile(uri, tempFile); } if (File.Exists(tempFile)) { Playlist p = new Playlist(); p.LoadPlaylist(tempFile); File.Delete(tempFile); foreach (PlaylistItem item in p.AllItems) { urlsToCkeck.Add(item.Path); } } } else { urlsToCkeck.Add(url); } foreach(string url2 in urlsToCkeck) { //if (!QueryDnsWithTimeout(url2, 300)) // continue; ShoutcastStream ss = new ShoutcastStream(url2, 500); if (ss.Connected) { RadioStation rs = new RadioStation { Genre = genre, Title = title, Url = url2 }; data.RadioStations.Add(rs); Console.WriteLine("\t -> Added radio station: {0}", url2); ss.Close(); ss.Dispose(); ss = null; } } } catch(Exception ex) { Console.WriteLine("\t ->" + ex.Message); } Console.WriteLine("\t -> Url: {0} is not valid", url); }