コード例 #1
0
ファイル: FindGaps.xaml.cs プロジェクト: JimLynn/MatchRedux
 private void Eliminate_Click(object sender, RoutedEventArgs e)
 {
     using (var data = new ReduxItems())
     {
         var gaps = data.gaps.ToList();
         gaps = (from gap in gaps
                where ((gap.service_id == 5 && gap.gapend.ToLocalTime().TimeOfDay == new TimeSpan(07, 00, 00))
                     || (gap.service_id == 4 && gap.gapend.ToLocalTime().TimeOfDay == new TimeSpan(06, 00, 00))
                     || (gap.service_id == 1 && gap.gapend.ToLocalTime().TimeOfDay == new TimeSpan(19, 00, 00))
                     || (gap.service_id == 2 && gap.gapend.ToLocalTime().TimeOfDay == new TimeSpan(06, 00, 00))
                     || (gap.service_id == 3 && gap.gapend.ToLocalTime().TimeOfDay == new TimeSpan(06, 00, 00))
                     || (gap.service_id == 6 && gap.gapend.ToLocalTime().TimeOfDay == new TimeSpan(19, 00, 00))
                     ) == false
                select gap).ToList();
         gapGrid.ItemsSource = gaps;
     }
 }
コード例 #2
0
ファイル: FindGaps.xaml.cs プロジェクト: JimLynn/MatchRedux
 // This is a quick(ish) way to scan all the programmes in pips_programmes
 // and find all gaps in the schedule.
 // Note that this process will find all actual gaps where
 // the channel is not transmitting
 private void ScanGaps_Click(object sender, RoutedEventArgs e)
 {
     List<Gap> gaps = new List<Gap>();
     Task.Factory.StartNew(() =>
         {
             StringBuilder sql = new StringBuilder();
             sql.AppendLine("insert into gaps (programme_id, service_id, gapstart,gapend)");// VALUES(1234,1,"2007-06-28 03:00","2007-06-28 06:00")
             using (var data = new ReduxItems())
             {
                 var programmes = (from prog in data.pips_programmes
                                   //orderby prog.ServiceId, prog.StartTime
                                   select prog).ToList();
                 programmes = (from prog in programmes
                              orderby prog.service_id, prog.start_gmt
                              select prog).ToList();
                 PipsProgramme prev = null;
                 using (var newdata = new ReduxItems())
                 {
                     foreach (var prog in programmes)
                     {
                         if (prev != null && prev.service_id == prog.service_id && prev.end_gmt < prog.start_gmt)
                         {
                             Gap gap = new Gap
                             {
                                 pips_id = prog.id,
                                 service_id = prog.service_id,
                                 gapstart = prev.end_gmt,
                                 gapend = prog.start_gmt
                             };
                             newdata.gaps.Add(gap);
                             Dispatcher.Invoke((MyDelegate)delegate { gapLabel.Content = string.Format("{0}", gap.gapstart); });
                         }
                         if (prev == null || prog.service_id != prev.service_id || prog.end_gmt > prev.end_gmt)
                         {
                             prev = prog;
                         }
                     }
                     newdata.SaveChanges();
                 }
                 Dispatcher.Invoke((MyDelegate)delegate { gapGrid.ItemsSource = data.gaps; });
             }
         });
 }
コード例 #3
0
ファイル: MainWindow.xaml.cs プロジェクト: JimLynn/MatchRedux
 private void NewProgramme(object sender, RoutedEventArgs e)
 {
     //programmesEntities entities = new programmesEntities();
     //var result = from item in entities.pips_programmes select item;
     //result.First().
     using (var items = new ReduxItems())
     {
         var newProgramme = new PipsProgramme()
         {
             start_time = new DateTime(2007, 9, 27, 10, 0, 0),
             end_time = new DateTime(2007, 9, 27, 10, 30, 0),
             duration = 30 * 60,
             service_id = 1,
             service_name = "bbcfour",
             programme_name = "Life on Mars",
             description = "Cop Show in the 70s",
             pid = "b00b8989",
             matched = true
         };
         items.pips_programmes.Add(newProgramme);
         items.SaveChanges();
     }
 }
コード例 #4
0
ファイル: DayScan.xaml.cs プロジェクト: JimLynn/MatchRedux
        private void ScanWholeDay(DateTime date)
        {
            reduxItems = new ReduxItems();
            Dispatcher.Invoke((MyDelegate)delegate { dateScanning.Content = date.ToString("dd/MM/yyyy"); });
            Services services = new Services();
            DateTime dayStart = date.Date;
            DateTime dayEnd = dayStart.AddDays(1);
            //if (reduxItems.Scanned.Any(p => p.DateScanned == dayStart) == false)
            //{
                Dispatcher.Invoke((MyDelegate)delegate { working.Content = "Working..."; });
                List<XElement> programmeElements = new List<XElement>();
                //var dayItems = from item in reduxItems.Items
                //               where item.Aired >= dayStart && item.Aired < dayEnd
                //               select item;
                foreach (var sid in services.Select(s=>s.Id))
                {
                    Dispatcher.Invoke((MyDelegate)delegate { working.Content = "Working... " + services[sid].Name; });
                    string url = services.ProgrammesUrl(sid, dayStart);
                    XElement schedule = XElement.Load(url);
                    var items = from element in schedule.Element("day").Element("broadcasts").Elements("broadcast")
                                select new XElement("programme", new XAttribute("serviceid", sid), element);
                    XElement previous = null;
                    foreach (var item in items)
                    {
                        if (previous != null)
                        {
                            var st = previous.Element("broadcast").GetElementDate("end");
                            var en = item.Element("broadcast").GetElementDate("start");
                            if (st < en)
                            {
                                if ((sid == 1 || sid == 6) && en.Hour == 19 && en.Minute == 0)
                                {
                                }
                                else
                                {

                                }
                            }
                        }
                        previous = item;
                    }
                    programmeElements.AddRange(items);
                }

                var programmes = from element in programmeElements
                                 let broadcast = element.Element("broadcast")
                                 let episode = broadcast.Elements("programme").First(e => e.Attribute("type").Value == "episode")
                                 select new PipsProgramme()
                                 {
                                     service_id = element.GetAttributeInt("serviceid"),
                                     service_name = services[element.GetAttributeInt("serviceid")].Name,
                                     start_time = broadcast.GetElementDate("start"),
                                     end_time = broadcast.GetElementDate("end"),
                                     duration = broadcast.GetElementInt("duration"),
                                     programme_name = episode.Element("title").Value,
                                     display_title = episode.Element("display_titles").Element("title").Value,
                                     display_subtitle = episode.Element("display_titles").Element("subtitle").Value,
                                     pid = episode.Element("pid").Value,
                                     description = episode.Element("short_synopsis").Value,
                                     rawdata = element.ToString()
                                 };

                //foreach (var item in dayItems)
                //{
                //    var matched = (from programme in programmeElements
                //                   where programme.GetAttributeInt("serviceid") == item.ServiceId
                //                   && programme.Element("broadcast").GetElementDate("start").ToUniversalTime() == item.Aired
                //                   select programme).FirstOrDefault();
                //    if (matched != null)
                //    {
                //        var broadcast = matched.Element("broadcast");
                //        item.IsStartTimeMatched = true;
                //        int duration = broadcast.GetElementInt("duration");
                //        item.IsDurationMatched = duration == item.DurationSecs;
                //        var episode = (from ep in broadcast.Elements("programme")
                //                       where ep.Attribute("type").Value == "episode"
                //                       select ep).First();
                //        //item.PipsName = episode.Element("display_titles").Element("title").Value;
                //        //item.TitleMatch = item.PipsName == item.ProgrammeName;
                //        //item.Pid = episode.Element("pid").Value;
                //        //item.PipsDurationSecs = broadcast.GetElementInt("duration");
                //    }

                //    item.IsChecked = true;
                //}
                DateTime timerstart = DateTime.Now;
                var already = (from p in reduxItems.pips_programmes
                               where p.start_time >= dayStart && p.start_time < dayEnd
                               select p).ToList();
                foreach (var prog in programmes)
                {
                    if (already.Any(p => p.service_id == prog.service_id && p.start_time == prog.start_time) == false)
                    {
                        reduxItems.pips_programmes.Add(prog);
                    }
                }
                //reduxItems.Scanned.Add(new Scanned() { DateScanned = dayStart });
                //reduxItems.SaveChanges();
                DateTime timerend = DateTime.Now;
                Dispatcher.Invoke((MyDelegate)delegate { working.Content = "took " + (timerend - timerstart).ToString(); });
            //}
        }