コード例 #1
0
        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());
        }
コード例 #2
0
 private void SetChannelNumber(XmlTvChannel channel, string value)
 {
     value = value.Replace("-", ".");
     if (double.TryParse(value, NumberStyles.Any, CultureInfo.InvariantCulture, out var number))
     {
         channel.Number = value;
     }
 }
コード例 #3
0
ファイル: XmlTvReader.cs プロジェクト: al-9/Jellyfin.XmlTv
        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);
        }
コード例 #4
0
        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;
        }
コード例 #5
0
        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());
        }
コード例 #6
0
ファイル: Program.cs プロジェクト: MediaBrowser/Emby.XmlTv
        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;
        }
コード例 #7
0
ファイル: Program.cs プロジェクト: thomasjmwb/jellyfin
        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);
        }
コード例 #8
0
 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();
 }
コード例 #9
0
        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);
        }