Exemple #1
0
        }     // ProcessEpgPayload

        static void ProcessEpgPayload(byte[] data, SqlCeConnection cn)
        {
            var tvaMain = XmlSerialization.Deserialize <TvaMain>(data, true);

            if ((tvaMain == null) ||
                (tvaMain.ProgramDescription == null) ||
                (tvaMain.ProgramDescription.LocationTable == null) ||
                (tvaMain.ProgramDescription.LocationTable.Schedule == null))
            {
                Console.WriteLine("Empty or invalid data!");
                // there's nothing to process
                return;
            } // if
            var tvaSchedule = tvaMain.ProgramDescription.LocationTable.Schedule;

            var epgService = EpgService.FromItem(tvaSchedule);

            epgService.GetDatabaseId(cn);

            Log(">> Service {0} (db {1}): {2} events (t{3})", epgService.ServiceId, epgService.ServiceDatabaseId, epgService.Events.Length, Thread.CurrentThread.ManagedThreadId);

            // TODO: Provide fallback mechanism for deleting events pertaining to this service
            if (epgService.Events.Length == 0)
            {
                return;
            }

            var startTime = epgService.Events[0].StartTime;
            var today     = new DateTime(startTime.Year, startTime.Month, startTime.Day, 0, 0, 0).ToUniversalTime();
            var tomorrow  = today + new TimeSpan(1, 0, 0, 0);

            EpgDbSerialization.DeleteEvents(cn, epgService.ServiceDatabaseId, today, tomorrow);

            epgService.Save(cn);
        } // ProcessFile
Exemple #2
0
        }         // ProcessParentalGuidance

        private UiBroadcastService GetService(EpgService service)
        {
            var identifier = new Etsi.Ts102034.v010501.XmlSerialization.Common.TextualIdentifier()
            {
                ServiceName = service.ServiceNameReference,
            };

            return(BroadcastDiscovery.TryGetService(UiBroadcastService.GetKey(identifier, ServiceProvider.DomainName)));
        } // GetService
Exemple #3
0
        }         // DumpGuidanceCodes

        private void ProcessFile(string xmlFile)
        {
            ExtendedPurchaseItem item;
            var filename = Path.GetFileName(xmlFile);

            try
            {
                item = XmlSerialization.Deserialize <TvaMain>(xmlFile, trimExtraWhitespace: true, namespaceReplacer: NamespaceUnification.Replacer) as ExtendedPurchaseItem;
            }
            catch (Exception ex)
            {
                Console.WriteLine("Unable to read {0}: {1}", filename, ex.Message);
                return;
            } // try-catch

            try
            {
                var schedule   = item.ProgramDescription.LocationTable.Schedule;
                var epgService = EpgService.FromSchedule(schedule);
                if (epgService.Programs == null)
                {
                    var service = GetService(epgService);
                    Console.WriteLine("> {0} {1} ({2}) has no events", service?.DisplayLogicalNumber, service?.DisplayName, schedule.ServiceIdRef);
                    return;
                } // if

                EpgServices[schedule.ServiceIdRef] = epgService;

                foreach (var scheduleEvent in schedule.Events)
                {
                    ProcessEvent(scheduleEvent, schedule.ServiceIdRef);
                } // foreach offering
            }
            catch (Exception ex)
            {
                Console.WriteLine("Exception in file {0}: {1}", filename, ex.Message);
                return;
            } // try-catch
        }     // ProcessFile
Exemple #4
0
        protected override int Run(string[] args)
        {
            var startTime = DateTime.UtcNow.TruncateToMinutes();

            // create initial programs list

            var list = new List <EpgProgram>();

            var program = new EpgProgram()
            {
                Title        = "Program 1",
                UtcStartTime = startTime,
                Duration     = new TimeSpan(0, 15, 0)
            };

            list.Add(program);

            program = new EpgProgram()
            {
                Title        = "Program 2",
                UtcStartTime = program.UtcEndTime,
                Duration     = new TimeSpan(0, 20, 0)
            };
            list.Add(program);

            program = new EpgProgram()
            {
                Title        = "Program 3",
                UtcStartTime = program.UtcEndTime + new TimeSpan(0, 5, 0),
                Duration     = new TimeSpan(0, 25, 0)
            };
            list.Add(program);

            var service = new EpgService()
            {
                ServiceIdReference = "1.imagenio.es",
                XmlPrograms        = list.ToArray()
            };

            // enumerate programs
            Console.WriteLine("Original programs");
            foreach (var epgProgram in service.Programs)
            {
                DisplayProgram(epgProgram);
            } // foreach
            Console.WriteLine();

            Console.WriteLine("Adding to datastore");
            var datastore = new EpgMemoryDatastore();

            datastore.Add(service);
            Console.WriteLine();

            Console.WriteLine("Original programs after being added");
            foreach (var epgProgram in service.Programs)
            {
                DisplayProgram(epgProgram);
            } // foreach
            Console.WriteLine();

            Console.WriteLine("Programs in 1.imagenio.es (now)");
            var epgPrograms = datastore.GetPrograms("1.imagenio.es", null, 0, 0);

            DisplayEpgPrograms(epgPrograms);
            Console.WriteLine();

            Console.WriteLine("Programs in 1.imagenio.es (in 25 minutes)");
            epgPrograms = datastore.GetPrograms("1.imagenio.es", startTime + new TimeSpan(0, 25, 0), 0, 0);
            DisplayEpgPrograms(epgPrograms);
            Console.WriteLine();

            Console.WriteLine("Programs in 1.imagenio.es (in 2 hours)");
            epgPrograms = datastore.GetPrograms("1.imagenio.es", startTime + new TimeSpan(2, 0, 0), 0, 0);
            DisplayEpgPrograms(epgPrograms);
            Console.WriteLine();

            Console.WriteLine("Programs in 1.imagenio.es (15 minutes ago)");
            epgPrograms = datastore.GetPrograms("1.imagenio.es", startTime - new TimeSpan(0, 15, 0), 0, 0);
            DisplayEpgPrograms(epgPrograms);
            Console.WriteLine();

            return(0);
        } // Run