public static string GetProgrammeDetail(this XmlTvProgram programme, XmlTvChannel channel) { var builder = new StringBuilder(); builder.AppendFormat("Channel: {0} - {1}\r\n", channel.Id, channel.DisplayName); builder.AppendFormat("Start Date: {0:G}\r\n", programme.StartDate); builder.AppendFormat("End Date: {0:G}\r\n", programme.EndDate); builder.AppendFormat("Name: {0}\r\n", programme.Title); builder.AppendFormat("Episode Detail: {0}\r\n", programme.Episode); builder.AppendFormat("Episode Title: {0}\r\n", programme.Episode.Title); builder.AppendFormat("Description: {0}\r\n", programme.Description); builder.AppendFormat("Categories: {0}\r\n", string.Join(", ", programme.Categories)); builder.AppendFormat("Countries: {0}\r\n", string.Join(", ", programme.Countries)); builder.AppendFormat("Credits: {0}\r\n", string.Join(", ", programme.Credits)); builder.AppendFormat("Rating: {0}\r\n", programme.Rating); builder.AppendFormat("Star Rating: {0}\r\n", programme.StarRating.HasValue ? programme.StarRating.Value.ToString() : string.Empty); builder.AppendFormat("Previously Shown: {0:G}\r\n", programme.PreviouslyShown); builder.AppendFormat("Copyright Date: {0:G}\r\n", programme.CopyrightDate); builder.AppendFormat("Is Repeat: {0}\r\n", programme.IsPreviouslyShown); var icon = programme.Icons.FirstOrDefault(); builder.AppendFormat("Icon: {0}\r\n", icon != null ? icon.ToString() : string.Empty); builder.AppendLine("-------------------------------------------------------"); return(builder.ToString()); }
private void SetChannelNumber(XmlTvChannel channel, string value) { value = value.Replace("-", "."); if (double.TryParse(value, NumberStyles.Any, CultureInfo.InvariantCulture, out var number)) { channel.Number = value; } }
private XmlTvChannel GetChannel(XmlReader reader) { var id = reader.GetAttribute("id"); if (string.IsNullOrEmpty(id)) { return(null); } var result = new XmlTvChannel() { Id = id }; using (var xmlChannel = reader.ReadSubtree()) { xmlChannel.MoveToContent(); xmlChannel.Read(); // Read out the data for each node and process individually while (!xmlChannel.EOF && xmlChannel.ReadState == ReadState.Interactive) { if (xmlChannel.NodeType == XmlNodeType.Element) { switch (xmlChannel.Name) { case "display-name": ProcessNode(xmlChannel, s => result.DisplayName = s, _language, s => SetChannelNumber(result, s)); break; case "url": result.Url = xmlChannel.ReadElementContentAsString(); break; case "icon": result.Icon = ProcessIconNode(xmlChannel); xmlChannel.Skip(); break; default: xmlChannel.Skip(); // unknown, skip entire node break; } } else { xmlChannel.Read(); } } } if (string.IsNullOrEmpty(result.DisplayName)) { return(null); } return(result); }
private XmlTvChannel GetChannel(XmlReader reader) { var id = reader.GetAttribute("id"); if (string.IsNullOrEmpty(id)) { //Logger.Error("No id found for channel row"); // Log.Error(" channel#{0} doesnt contain an id", iChannel); return null; } var result = new XmlTvChannel() { Id = id }; LogChannelProgress(reader, result); using (var xmlChannel = reader.ReadSubtree()) { xmlChannel.ReadStartElement(); // now, xmlProg is positioned on the first sub-element of <programme> // Read out the data for each node and process individually while (!xmlChannel.EOF) { LogChannelProgress(reader, result); if (xmlChannel.NodeType == XmlNodeType.Element) { switch (xmlChannel.Name) { case "display-name": ProcessNode(xmlChannel, s => result.DisplayName = s, _language); break; case "url": result.Url = xmlChannel.ReadElementContentAsString(); break; case "icon": result.Icon = ProcessIconNode(xmlChannel); xmlChannel.Skip(); break; default: xmlChannel.Skip(); // unknown, skip entire node break; } } else { xmlChannel.Skip(); } } } if (string.IsNullOrEmpty(result.DisplayName)) { //Logger.Error("No display-name found for channel {0}", id); return null; } return result; }
public static string GetChannelDetail(this XmlTvChannel channel) { var builder = new StringBuilder(); builder.AppendFormat("Id: {0}\r\n", channel.Id); builder.AppendFormat("Display-Name: {0}\r\n", channel.DisplayName); builder.AppendFormat("Url: {0}\r\n", channel.Url); builder.AppendFormat("Icon: {0}\r\n", channel.Icon != null ? channel.Icon.ToString() : string.Empty); builder.AppendLine("-------------------------------------------------------"); return(builder.ToString()); }
private static async Task<int> ReadOutChannelProgrammes(XmlTvReader reader, XmlTvChannel channel, StreamWriter resultsFileStream) { //var startDate = new DateTime(2015, 11, 28); //var endDate = new DateTime(2015, 11, 29); var startDate = DateTime.MinValue; var endDate = DateTime.MaxValue; var count = 0; foreach (var programme in reader.GetProgrammes(channel.Id, startDate, endDate, new CancellationToken()).Distinct()) { count++; await resultsFileStream.WriteLineAsync(programme.GetProgrammeDetail(channel)); } return count; }
private static async Task <int> ReadOutChannelProgrammes(XmlTvReader reader, XmlTvChannel channel, StreamWriter resultsFileStream) { //var startDate = new DateTime(2015, 11, 28); //var endDate = new DateTime(2015, 11, 29); var startDate = DateTimeOffset.MinValue; var endDate = DateTimeOffset.MaxValue; var count = 0; foreach (var programme in reader.GetProgrammes(channel.Id, startDate, endDate, new CancellationToken()).Distinct()) { count++; await resultsFileStream.WriteLineAsync(programme.GetProgrammeDetail(channel)); } return(count); }
public static string GetProgrammeDetail(this XmlTvProgram programme, XmlTvChannel channel) { var builder = new StringBuilder(); builder.AppendFormat("Channel: {0} - {1}\r\n", channel.Id, channel.DisplayName); builder.AppendFormat("Start Date: {0:G}\r\n", programme.StartDate); builder.AppendFormat("End Date: {0:G}\r\n", programme.EndDate); builder.AppendFormat("Name: {0}\r\n", programme.Title); builder.AppendFormat("Episode Detail: {0}\r\n", programme.Episode); builder.AppendFormat("Episode Title: {0}\r\n", programme.Episode.Title); builder.AppendFormat("Description: {0}\r\n", programme.Description); builder.AppendFormat("Categories: {0}\r\n", string.Join(", ", programme.Categories)); builder.AppendFormat("Countries: {0}\r\n", string.Join(", ", programme.Countries)); builder.AppendFormat("Credits: {0}\r\n", string.Join(", ", programme.Credits)); builder.AppendFormat("Rating: {0}\r\n", programme.Rating); builder.AppendFormat("Star Rating: {0}\r\n", programme.StarRating.HasValue ? programme.StarRating.Value.ToString() : string.Empty); builder.AppendFormat("Previously Shown: {0:G}\r\n", programme.PreviouslyShown); builder.AppendFormat("Copyright Date: {0:G}\r\n", programme.CopyrightDate); builder.AppendFormat("Is Repeat: {0}\r\n", programme.IsRepeat); builder.AppendFormat("Icon: {0}\r\n", programme.Icon != null ? programme.Icon.ToString() : string.Empty); builder.AppendLine("-------------------------------------------------------"); return builder.ToString(); }
private void LogChannelProgress(XmlReader reader, XmlTvChannel channel) { var id = channel != null ? channel.Id : string.Empty; var displayName = channel != null ? channel.DisplayName : string.Empty; var url = channel != null ? channel.Url : string.Empty; var nodeType = reader != null ? reader.NodeType.ToString() : string.Empty; var name = reader != null ? reader.Name : string.Empty; //Logger.Debug("Channel - NodeType: {0}, Name: {1}, Result.Id: {2}, Result.DisplayName: {3}, Result.Url: {4}", // nodeType, // name, // id, // displayName, // url); }