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); }
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); }
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)); }
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); }
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); }
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); }
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); }
public ReduxViewModel(redux_items redux, pips_programmes pips, redux_to_pips join) { ReduxItem = redux; Programme = pips; ReduxToProgramme = join; }
public UnmatchedItem(redux_items redux, redux_to_pips topips) { r = redux; rp = topips; }
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(); } }