Ejemplo n.º 1
0
        public static string GetCompleteTitle(redux_items redux)
        {
            var match = titlePartFromDescription.Match(redux.short_description);

            if (match.Success)
            {
                string maintitle;
                var    stripMatch = strip.Match(redux.programme_name);
                if (stripMatch.Success && stripMatch.Value.Length > 0)
                {
                    maintitle = redux.programme_name.Substring(0, redux.programme_name.Length - stripMatch.Value.Length);
                }
                else
                {
                    maintitle = redux.programme_name;
                }
                int firstNonFullStop = 0;
                while (match.Value[firstNonFullStop] == '.')
                {
                    firstNonFullStop++;
                }
                string joinedTitle = maintitle.Trim() + " " + match.Value.Substring(firstNonFullStop).Trim();
                return(joinedTitle);
            }
            return(redux.programme_name);
        }
Ejemplo n.º 2
0
        public static ScheduleMatchData GetScheduleWeighting(redux_items redux, pips_programmes pips)
        {
            ScheduleMatchData data = new ScheduleMatchData();

            data.StartDistance = Math.Abs((redux.aired - pips.start_gmt).TotalSeconds);
            data.DurationDelta = Math.Abs(redux.duration - (pips.end_gmt - pips.start_gmt).TotalSeconds);
            DateTime maxstart = pips.start_gmt;

            if (redux.aired > pips.start_gmt)
            {
                maxstart = redux.aired;
            }

            DateTime minend = pips.end_gmt;

            if (redux.aired.AddSeconds(redux.duration) < minend)
            {
                minend = redux.aired.AddSeconds(redux.duration);
            }

            var overlap = minend - maxstart;

            if (overlap.TotalSeconds < 0)
            {
                data.OverlapWeight = 0.0;
            }
            else
            {
                data.OverlapWeight = 100.0 * (overlap.TotalSeconds / (double)redux.duration) + 100.0 * (overlap.TotalSeconds / (pips.end_gmt - pips.start_gmt).TotalSeconds);
            }
            return(data);
        }
Ejemplo n.º 3
0
        public static bool IsPartialTitleMatchWithDescription(redux_items redux, pips_programmes pips)
        {
            if (redux == null || pips == null)
            {
                return(false);
            }
            string reduxtitle = GetCompleteTitle(redux);

            if (PartialMatch.IsPartialMatch(reduxtitle, pips.display_title))
            {
                return(true);
            }
            if (PartialMatch.IsPartialMatch(reduxtitle, pips.display_subtitle))
            {
                return(true);
            }
            string reduxdesc = redux.short_description;

            if (reduxdesc.Contains("] Followed by "))
            {
                reduxdesc = reduxdesc.Substring(0, reduxdesc.IndexOf("] Followed by "));
            }
            if (reduxdesc.Contains("] Then "))
            {
                reduxdesc = reduxdesc.Substring(0, reduxdesc.IndexOf("] Then "));
            }
            return(PartialMatch.IsPartialMatch(redux.programme_name + " " + reduxdesc, pips.display_title + " " + pips.display_subtitle + " " + pips.description));
        }
Ejemplo n.º 4
0
        public static bool IsPartialTitleMatch(redux_items redux, pips_programmes pips)
        {
            if (redux == null || pips == null)
            {
                return(false);
            }
            string reduxtitle = GetCompleteTitle(redux);

            if (PartialMatch.IsPartialMatch(reduxtitle, pips.display_title))
            {
                return(true);
            }
            return(false);
        }
Ejemplo n.º 5
0
 public static double GetSimpleWeighting(redux_items redux, pips_programmes pips)
 {
     if (IsGoodTitleMatch(redux, pips))
     {
         return(100.0);
     }
     if (IsPartialTitleMatch(redux, pips))
     {
         return(10.0);
     }
     if (IsPartialTitleMatchWithDescription(redux, pips))
     {
         return(1.0);
     }
     return(0.0);
 }
Ejemplo n.º 6
0
        public static bool IsGoodTitleMatch(redux_items redux, pips_programmes pips)
        {
            if (redux == null || pips == null)
            {
                return(false);
            }
            string reduxtitle = NormaliseTitle(GetCompleteTitle(redux));
            string pipstitle  = NormaliseTitle(pips.display_title);

            if (reduxtitle == pipstitle)
            {
                return(true);
            }
            if (reduxtitle == NormaliseTitle(pips.display_subtitle))
            {
                return(true);
            }
            return(false);
        }
Ejemplo n.º 7
0
        public static double GetMatchWeighting(redux_items redux, pips_programmes pips)
        {
            var    titlematch   = Match(redux.programme_name, pips.display_title);
            var    partialmatch = Match(pips.display_title + " " + pips.display_subtitle + " " + pips.description, redux.programme_name + " " + redux.short_description);
            double weight       = 1;

            if (titlematch.PercentFirstInSecond > 0)
            {
                weight = weight * titlematch.PercentFirstInSecond * 2;
            }
            if (titlematch.PercentSecondInFirst > 0)
            {
                weight = weight * titlematch.PercentSecondInFirst * 2;
            }
            if (partialmatch.PercentFirstInSecond > 0)
            {
                weight = weight * partialmatch.PercentFirstInSecond;
            }
            if (partialmatch.PercentSecondInFirst > 0)
            {
                weight = weight * partialmatch.PercentSecondInFirst;
            }
            return(weight);
        }
Ejemplo n.º 8
0
 public ReduxViewModel(redux_items redux, pips_programmes pips, redux_to_pips join)
 {
     ReduxItem        = redux;
     Programme        = pips;
     ReduxToProgramme = join;
 }
Ejemplo n.º 9
0
 public UnmatchedItem(redux_items redux, redux_to_pips topips)
 {
     r  = redux;
     rp = topips;
 }
Ejemplo n.º 10
0
        private void ReadNewReduxDataStream(object sender, RoutedEventArgs e)
        {
            Services    services = new Services();
            redux_items item     = null;
            var         context  = new ReduxEntities();
            int         count    = 0;
            XmlReader   reader   = XmlReader.Create(@"D:\Docs\prog.txt");

            while (reader.Read())
            {
                if (reader.IsStartElement() && reader.Name == "row")
                {
                    if (item != null)
                    {
                        if (context.redux_items.Any(i => i.disk_reference == item.disk_reference) == false)
                        {
                            //context.redux_items.AddObject(item);
                            //count++;
                            //if (count > 100)
                            //{
                            //    context.SaveChanges();
                            //    context = new ReduxEntities();
                            //    count = 0;
                            //}
                        }
                    }
                    item = new redux_items();
                }

                /*
                 * channel_id
                 * disk_reference
                 * title
                 * description
                 * duration
                 * start
                 * pcrid
                 * scrid
                 * end
                 */
                CultureInfo provider = CultureInfo.InvariantCulture;

                if (reader.IsStartElement() && reader.Name == "field")
                {
                    var fieldname = reader.GetAttribute("name");
                    switch (fieldname)
                    {
                    case "channel_id":
                        Service service = services.GetServiceByReduxId(reader.ReadElementContentAsString());
                        item.service_id = service.Id;
                        break;

                    case "disk_reference":
                        item.disk_reference = reader.ReadElementContentAsString();
                        break;

                    case "title":
                        item.programme_name = reader.ReadElementContentAsString();
                        break;

                    case "description":
                        item.short_description = reader.ReadElementContentAsString();
                        break;

                    case "duration":
                        item.duration = reader.ReadElementContentAsInt();
                        break;

                    case "start":
                        string dt = reader.ReadElementContentAsString();
                        item.aired = DateTime.Parse(dt, CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal | DateTimeStyles.AdjustToUniversal);
                        break;

                    case "pcrid":
                        item.programme_crid = reader.ReadElementContentAsString();
                        break;

                    case "scrid":
                        item.series_crid = reader.ReadElementContentAsString();
                        break;

                    case "end":
                        break;

                    default:
                        break;
                    }
                }
            }
            if (item != null)
            {
                //context.redux_items.AddObject(item);
                //context.SaveChanges();
            }
        }