Parent Directory
|
Revision Log
|
Patch
--- trunk/GBPVRProgramDatabaseFixer/Program.cs 2013/03/15 17:33:15 165 +++ trunk/GBPVRProgramDatabaseFixer/Program.cs 2013/03/16 13:16:42 166 @@ -18,14 +18,16 @@ static string XMLTV_FILE = ""; static string GBPVR_DATABASE = ""; - static bool LOADING_XMLTV_FILE = false; + //static bool LOADING_XMLTV_FILE = false; static bool XMLTV_INSTANCE_CREATED = false; - static int LAST_REPORTED_XMLTV_PROGRESS = 0; + //static int LAST_REPORTED_XMLTV_PROGRESS = 0; - static bool LOADING_GBPVR_DATABASE = false; + //static bool LOADING_GBPVR_DATABASE = false; static bool SQLLIST_INSTANCE_CREATED = false; - static int LAST_REPORTED_SQLLITE_PROGRESS = 0; + //static int LAST_REPORTED_SQLLITE_PROGRESS = 0; + + static int LAST_REPORTED_PROGRESS = 0; static FileInfo fi_XMLTVFILE; static FileInfo fi_GBPVRDATABASE; @@ -99,113 +101,158 @@ static void gLog_ReportProgress(object sender, ReportProgressEventArgs e) { - if (!XMLTV_INSTANCE_CREATED && LOADING_XMLTV_FILE) + //if (!XMLTV_INSTANCE_CREATED && LOADING_XMLTV_FILE) + //{ + // if (LAST_REPORTED_XMLTV_PROGRESS != e.Progress) + // { + // ConsoleOverwritePreviosLine("XMLTV: {0} Loading: {1:00}%", fi_XMLTVFILE.Name, e.Progress); + // LAST_REPORTED_XMLTV_PROGRESS = e.Progress; + // if (e.Progress == 100) + // { + // Console.WriteLine("XMLTV: {0} Loading: {1:00}%", fi_XMLTVFILE.Name, e.Progress); + // } + // } + //} + //if (!SQLLIST_INSTANCE_CREATED && LOADING_GBPVR_DATABASE) + //{ + // if (LAST_REPORTED_SQLLITE_PROGRESS != e.Progress) + // { + // ConsoleOverwritePreviosLine("SQLLITE: {0} Loading: {1:00}%", fi_XMLTVFILE.Name, e.Progress); + // LAST_REPORTED_SQLLITE_PROGRESS = e.Progress; + // if (e.Progress == 100) + // { + // Console.WriteLine("SQLLITE: {0} Loading: {1:00}%", fi_XMLTVFILE.Name, e.Progress); + // } + // } + //} + + object k = e.UserState; + if (k == null) { - if (LAST_REPORTED_XMLTV_PROGRESS != e.Progress) + if (sender == null) { - ConsoleOverwritePreviosLine("XMLTV: {0} Loading: {1:00}%", fi_XMLTVFILE.Name, e.Progress); - LAST_REPORTED_XMLTV_PROGRESS = e.Progress; - if (e.Progress == 100) + if (LAST_REPORTED_PROGRESS != e.Progress) { - Console.WriteLine("XMLTV: {0} Loading: {1:00}%", fi_XMLTVFILE.Name, e.Progress); + ConsoleOverwritePreviosLine("Progress: {0} ", e.Progress); + LAST_REPORTED_PROGRESS = e.Progress; + if (e.Progress == 100) + { + Console.WriteLine("Progress: {0} ", e.Progress); + } + } + } + else + { + if (LAST_REPORTED_PROGRESS != e.Progress) + { + ConsoleOverwritePreviosLine("{0}: Progress: {1:00}%", sender.GetType().Name, e.Progress); + LAST_REPORTED_PROGRESS = e.Progress; + if (e.Progress == 100) + { + Console.WriteLine("{0}: Progress: {1:00}%", sender.GetType().Name, e.Progress); + } } } } - if (!SQLLIST_INSTANCE_CREATED && LOADING_GBPVR_DATABASE) + else { - if (LAST_REPORTED_SQLLITE_PROGRESS != e.Progress) + if (sender == null) + { + if (LAST_REPORTED_PROGRESS != e.Progress) + { + ConsoleOverwritePreviosLine("Progress: {0} ", k.ToString()); + LAST_REPORTED_PROGRESS = e.Progress; + if (e.Progress == 100) + { + Console.WriteLine("Progress: {0} ", k.ToString()); + } + } + } + else { - ConsoleOverwritePreviosLine("SQLLITE: {0} Loading: {1:00}%", fi_XMLTVFILE.Name, e.Progress); - LAST_REPORTED_SQLLITE_PROGRESS = e.Progress; - if (e.Progress == 100) + if (LAST_REPORTED_PROGRESS != e.Progress) { - Console.WriteLine("SQLLITE: {0} Loading: {1:00}%", fi_XMLTVFILE.Name, e.Progress); + ConsoleOverwritePreviosLine("{0}: {1}", sender.GetType().Name, k.ToString()); + LAST_REPORTED_PROGRESS = e.Progress; + if (e.Progress == 100) + { + Console.WriteLine("{0}: {1}", sender.GetType().Name, k.ToString()); + } } } } } static void LoadXMLTVFile() { - LOADING_XMLTV_FILE = true; + //LOADING_XMLTV_FILE = true; if (string.IsNullOrEmpty(XMLTV_FILE)) { gLog.Error.WriteLine("XMLTV File is either a null or empty string."); - LOADING_XMLTV_FILE = false; + //LOADING_XMLTV_FILE = false; return; } fi_XMLTVFILE = new FileInfo(XMLTV_FILE); if (!fi_XMLTVFILE.Exists) { gLog.Error.WriteLine("Could not find XMLTV File: {0}", fi_XMLTVFILE.FullName); - LOADING_XMLTV_FILE = false; + //LOADING_XMLTV_FILE = false; return; } XMLTV.Create(fi_XMLTVFILE.FullName, new EventHandler<EventArgs>(XMLTV_OnInstanceCreated)); while (!XMLTV_INSTANCE_CREATED) { Application.DoEvents(); } - LOADING_XMLTV_FILE = false; + //LOADING_XMLTV_FILE = false; } static void XMLTV_OnInstanceCreated(object sender, EventArgs e) { XMLTV_INSTANCE_CREATED = true; } static void LoadGBPVRDatabase() { - LOADING_GBPVR_DATABASE = true; + //LOADING_GBPVR_DATABASE = true; if (string.IsNullOrEmpty(GBPVR_DATABASE)) { gLog.Error.WriteLine("GBPVR Datbase is either a null or empty string."); - LOADING_GBPVR_DATABASE = false; + //LOADING_GBPVR_DATABASE = false; return; } fi_GBPVRDATABASE = new FileInfo(GBPVR_DATABASE); if (!fi_GBPVRDATABASE.Exists) { gLog.Error.WriteLine("Could not find GBPVR Database: {0}", fi_GBPVRDATABASE.FullName); - LOADING_GBPVR_DATABASE = false; + //LOADING_GBPVR_DATABASE = false; return; } sqlite = SQLLITE.Create(fi_GBPVRDATABASE.FullName, new EventHandler<EventArgs>(SQLLITE_OnInstanceCreated)); while (!SQLLIST_INSTANCE_CREATED) { Application.DoEvents(); } - LOADING_GBPVR_DATABASE = false; + //LOADING_GBPVR_DATABASE = false; } static void SQLLITE_OnInstanceCreated(object sender, EventArgs e) { SQLLIST_INSTANCE_CREATED = true; } - static List<SQLLITE.IPROGRAMME> gbpvr_invalid_programs; - static List<SQLLITE.IPROGRAMME> gbpvr_valid_programs; - static List<SQLLITE.ICHANNEL> gbpvr_channels; - static List<SQLLITE.IRECORDING_SCHEDULE> gbpvr_recordings; - static List<libxmltv.Interfaces.IProgramDefinition> xmltv_programs; + //static List<SQLLITE.IPROGRAMME> gbpvr_invalid_programs; + //static List<SQLLITE.IPROGRAMME> gbpvr_valid_programs; + //static List<SQLLITE.ICHANNEL> gbpvr_channels; + //static List<SQLLITE.IRECORDING_SCHEDULE> gbpvr_recordings; + //static List<libxmltv.Interfaces.IProgramDefinition> xmltv_programs; static void PerformDatabaseProcessing() { - gbpvr_channels = sqlite.Channels; - //gbpvr_programs = sqlite.Programs; - gbpvr_invalid_programs = new List<SQLLITE.IPROGRAMME>(); - gbpvr_valid_programs = new List<SQLLITE.IPROGRAMME>(); - gbpvr_recordings = sqlite.Recordings; + var sqllite_channels = sqlite.Channels; + var sqllite_recordings = sqlite.Recordings; + var sqllite_programs = sqlite.Programs; Type datatype; var xmlt_raw_program_data = (IProgramDefinitionList)XMLTV.CreateBindingSourceFromData(XMLTV.GetPrograms(), out datatype); - //xmltv_programs = xmlt_raw_program_data.ToList().OrderBy(p => p.ChannelNumber).ThenBy(p => DateTime.Parse(p.Start)).ToList(); - //xmltv_programs = xmltv_programs.FindAll(p => p.Title == "Law & Order: Criminal Intent").ToList(); - xmltv_programs = xmlt_raw_program_data.ToList().OrderBy(p => DateTime.Parse(p.Start)).ToList(); - var gbpvr_programs_startdate_range = sqlite.GetProgramsDateRange(sqlite.Programs); + var xmltv_programs = xmlt_raw_program_data.ToList().OrderBy(p => DateTime.Parse(p.Start)).ToList(); + var sqllite_programs_startdate_range = sqlite.GetProgramsDateRange(sqllite_programs); var xmltv_programs_startdate_range = GetXMLTVProgramStartDateRange(xmltv_programs); - - gbpvr_valid_programs = sqlite.FilterProgramsByDateRange(sqlite.Programs, xmltv_programs_startdate_range, out gbpvr_invalid_programs); + var gbpvr_invalid_programs = new List<SQLLITE.IPROGRAMME>(); + var gbpvr_valid_programs = sqlite.GetValidPrograms(sqllite_programs, xmltv_programs, out gbpvr_invalid_programs); xmltv_programs = xmltv_programs.OrderBy(s => s.ChannelNumber).ThenBy(s => DateTime.Parse(s.Start)).ToList(); - - gbpvr_channels.TrimExcess(); - gbpvr_invalid_programs.TrimExcess(); - gbpvr_valid_programs.TrimExcess(); - gbpvr_recordings.TrimExcess(); - xmltv_programs.TrimExcess(); - - - - - - CheckScheduledRecordingsForDiscrepancies(gbpvr_recordings); - - CheckProgramsForDiscrepancies(gbpvr_valid_programs.ToArray(), xmltv_programs.ToArray()); + //sqllite_channels.TrimExcess(); + //gbpvr_invalid_programs.TrimExcess(); + //gbpvr_valid_programs.TrimExcess(); + //sqllite_programs.TrimExcess(); + //xmltv_programs.TrimExcess(); + //CheckScheduledRecordingsForDiscrepancies(sqllite_recordings); + //CheckProgramsForDiscrepancies(gbpvr_valid_programs, xmltv_programs); } static IDateTimeRange GetXMLTVProgramStartDateRange(List<libxmltv.Interfaces.IProgramDefinition> programs) @@ -224,64 +271,61 @@ static void CheckScheduledRecordingsForDiscrepancies(List<SQLLITE.IRECORDING_SCHEDULE> gbpvr) { - //gLog.Warn.WriteLine("CheckScheduledRecordingsForDiscrepancies() has not been implemented"); - var manual_gbpvr_recordings = gbpvr.FindAll(p => p.recording_type == 0).ToList(); - - foreach (var manual_recording in manual_gbpvr_recordings) - { - string title = manual_recording.filename; - DateTime start = manual_recording.manual_start_time; - DateTime end = manual_recording.manual_end_time; - - long channel_oid = manual_recording.manual_channel_oid; - - var found_channel = gbpvr_channels.Find(p => p.oid == channel_oid); - var channel_number = found_channel.channel_number; - - var found_program = xmltv_programs.ToList().Find(p => - p.Title.ToLower() == title.ToLower() && - p.Start == start.ToDateTimeString() && - p.Stop == end.ToDateTimeString() && - p.ChannelNumber == channel_number - ); + ////gLog.Warn.WriteLine("CheckScheduledRecordingsForDiscrepancies() has not been implemented"); + //var manual_gbpvr_recordings = gbpvr.FindAll(p => p.recording_type == 0).ToList(); - if (found_program != null) - { - gLog.Info.WriteLine("Recording might be valid: oid='{0}' programme_oid='{1}' title='{2}' start='{3}', end='{4}'", manual_recording.oid, manual_recording.programme_oid, title, start.ToDateTimeString(), end.ToDateTimeString()); - } - else - { - gLog.Warn.WriteLine("Recording may not be valid: oid='{0}' programme_oid='{1}' title='{2}' start='{3}', end='{4}'", manual_recording.oid, manual_recording.programme_oid, title, start.ToDateTimeString(), end.ToDateTimeString()); - - // find the program on the channel at the start time - var correct_program = xmltv_programs.ToList().Find(p => - p.ChannelNumber == channel_number && - p.Start == start.ToDateTimeString() - ); - if (correct_program != null) - { - gLog.Warn.WriteLine("\tThis will be recorded: {0}", correct_program.ToString()); - } - } - } - } - - static void CheckProgramsForDiscrepancies(SQLLITE.IPROGRAMME[] gbpvr, libxmltv.Interfaces.IProgramDefinition[] xmltv) - { - //gLog.Warn.WriteLine("CheckProgramsForDiscrepancies() has not been implemented"); - if (gbpvr.Count() != xmltv.Count()) - { - throw new ArgumentOutOfRangeException("gbpvr.Count/xmltv.Count", string.Format("gbpvr.Count: '0x{0:x8}' != xmltv.Count: '0x{1:x8}'", gbpvr.Count(),xmltv.Count())); - } - for (int i = 0; i < gbpvr.Count(); i++) - { - var gbpvr_entry = gbpvr[i]; - var xmltv_entry = gbpvr_entry.AsXMLTVProgramDefinition(sqlite); - if (!xmltv[i].Equals(xmltv_entry)) - { - gLog.Warn.WriteLine("Warning GBPVR Program oid: {0} might be invalid", gbpvr_entry.oid); - } - } + //foreach (var manual_recording in manual_gbpvr_recordings) + //{ + // string title = manual_recording.filename; + // DateTime start = manual_recording.manual_start_time; + // DateTime end = manual_recording.manual_end_time; + // long channel_oid = manual_recording.manual_channel_oid; + // var found_channel = gbpvr_channels.Find(p => p.oid == channel_oid); + // var channel_number = found_channel.channel_number; + // var found_program = xmltv_programs.ToList().Find(p => + // p.Title.ToLower() == title.ToLower() && + // p.Start == start.ToDateTimeString() && + // p.Stop == end.ToDateTimeString() && + // p.ChannelNumber == channel_number + // ); + // if (found_program != null) + // { + // gLog.Info.WriteLine("Recording might be valid: oid='{0}' programme_oid='{1}' title='{2}' start='{3}', end='{4}'", manual_recording.oid, manual_recording.programme_oid, title, start.ToDateTimeString(), end.ToDateTimeString()); + // } + // else + // { + // gLog.Warn.WriteLine("Recording may not be valid: oid='{0}' programme_oid='{1}' title='{2}' start='{3}', end='{4}'", manual_recording.oid, manual_recording.programme_oid, title, start.ToDateTimeString(), end.ToDateTimeString()); + // // find the program on the channel at the start time + // var correct_program = xmltv_programs.ToList().Find(p => + // p.ChannelNumber == channel_number && + // p.Start == start.ToDateTimeString() + // ); + // if (correct_program != null) + // { + // gLog.Warn.WriteLine("\tThis will be recorded: {0}", correct_program.ToString()); + // } + // } + //} + } + + static void CheckProgramsForDiscrepancies(List<SQLLITE.IPROGRAMME> list_gbpvr, List<libxmltv.Interfaces.IProgramDefinition> list_xmltv) + { + ////gLog.Warn.WriteLine("CheckProgramsForDiscrepancies() has not been implemented"); + //var gbpvr = list_gbpvr.ToArray(); + //var xmltv = list_xmltv.ToArray(); + ////if (gbpvr.Count() != xmltv.Count()) + ////{ + //// throw new ArgumentOutOfRangeException("gbpvr.Count/xmltv.Count", string.Format("gbpvr.Count: '0x{0:x8}' != xmltv.Count: '0x{1:x8}'", gbpvr.Count(),xmltv.Count())); + ////} + ////for (int i = 0; i < gbpvr.Count(); i++) + ////{ + //// var gbpvr_entry = gbpvr[i]; + //// var xmltv_entry = gbpvr_entry.AsXMLTVProgramDefinition(sqlite); + //// if (!xmltv[i].Equals(xmltv_entry)) + //// { + //// gLog.Warn.WriteLine("Warning GBPVR Program oid: {0} might be invalid", gbpvr_entry.oid); + //// } + ////} } } }
ViewVC Help | |
Powered by ViewVC 1.1.22 |