/[xmltv_parser]/trunk/GBPVRProgramDatabaseFixer/SQLLITE.cs
ViewVC logotype

Diff of /trunk/GBPVRProgramDatabaseFixer/SQLLITE.cs

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 167 by william, Sat Mar 16 13:26:09 2013 UTC revision 168 by william, Sat Mar 16 13:57:41 2013 UTC
# Line 17  namespace GBPVRProgramDatabaseFixer Line 17  namespace GBPVRProgramDatabaseFixer
17          List<SQLLITE.IRECORDING_SCHEDULE> Recordings { get; }          List<SQLLITE.IRECORDING_SCHEDULE> Recordings { get; }
18          List<SQLLITE.ICHANNEL> Channels { get; }          List<SQLLITE.ICHANNEL> Channels { get; }
19          IDateTimeRange GetProgramsDateRange(List<SQLLITE.IPROGRAMME> programs);          IDateTimeRange GetProgramsDateRange(List<SQLLITE.IPROGRAMME> programs);
20          List<SQLLITE.IPROGRAMME> GetValidPrograms(List<SQLLITE.IPROGRAMME> gbpvr_programs, List<libxmltv.Interfaces.IProgramDefinition> xmltv_programs, out List<SQLLITE.IPROGRAMME> removed_programs);          List<SQLLITE.IPROGRAMME> CreateUpdatedProgramsList(List<SQLLITE.IPROGRAMME> gbpvr_programs, List<libxmltv.Interfaces.IProgramDefinition> xmltv_programs, out List<SQLLITE.IPROGRAMME> removed_programs);
21    
22      }      }
23      public class SQLLITE : ISQLLITE      public class SQLLITE : ISQLLITE
# Line 191  namespace GBPVRProgramDatabaseFixer Line 191  namespace GBPVRProgramDatabaseFixer
191    
192          public interface IPROGRAMME          public interface IPROGRAMME
193          {          {
194              Int64 oid { get; }              Int64 oid { get; set; }
195              String name { get; }              String name { get; set; }
196              String sub_title { get; }              String sub_title { get; set; }
197              String description { get; }              String description { get; set; }
198              DateTime start_time { get; }              DateTime start_time { get; set; }
199              DateTime end_time { get; }              DateTime end_time { get; set; }
200              Int64 channel_oid { get; }              Int64 channel_oid { get; set; }
201              String unique_identifier { get; }              String unique_identifier { get; set; }
202              String rating { get; }              String rating { get; set; }
203    
204              IProgramDefinition AsXMLTVProgramDefinition(ISQLLITE sqllite);              IProgramDefinition AsXMLTVProgramDefinition(ISQLLITE sqllite);
205          }          }
# Line 231  namespace GBPVRProgramDatabaseFixer Line 231  namespace GBPVRProgramDatabaseFixer
231                  definition.ChannelName = channel.display_name;                  definition.ChannelName = channel.display_name;
232                  definition.ChannelNumber = (int)channel.channel_number;                  definition.ChannelNumber = (int)channel.channel_number;
233                  definition.Description = this.description;                  definition.Description = this.description;
234                  definition.Start = this.start_time.ToString("");                  definition.Start = this.start_time.ToDateTimeString();
235                  definition.Stop = this.end_time.ToString("");                  definition.Stop = this.end_time.ToDateTimeString();
236                  definition.SubTitle = this.sub_title;                  definition.SubTitle = this.sub_title;
237                  definition.Title = this.name;                  definition.Title = this.name;
238                  return definition;                  return definition;
# Line 293  namespace GBPVRProgramDatabaseFixer Line 293  namespace GBPVRProgramDatabaseFixer
293              return range;              return range;
294          }          }
295    
296          public List<SQLLITE.IPROGRAMME> GetValidPrograms(List<SQLLITE.IPROGRAMME> gbpvr_programs, List<libxmltv.Interfaces.IProgramDefinition> xmltv_programs, out List<SQLLITE.IPROGRAMME> source_invalid)          public List<SQLLITE.IPROGRAMME> CreateUpdatedProgramsList(List<SQLLITE.IPROGRAMME> gbpvr_programs, List<libxmltv.Interfaces.IProgramDefinition> xmltv_programs, out List<SQLLITE.IPROGRAMME> gbpvr_programs_not_found)
297          {          {
298              source_invalid = new List<IPROGRAMME>();              gbpvr_programs_not_found = new List<IPROGRAMME>();
299              List<SQLLITE.IPROGRAMME> source = new List<IPROGRAMME>(gbpvr_programs.ToArray());              gbpvr_programs = gbpvr_programs.OrderBy(s => s.start_time).ToList();            
             source = source.OrderBy(s => s.start_time).ToList();  
300              List<SQLLITE.IPROGRAMME> source_valid = new List<IPROGRAMME>();              List<SQLLITE.IPROGRAMME> source_valid = new List<IPROGRAMME>();
301              //if (range == null)              //if (range == null)
302              //{              //{
# Line 306  namespace GBPVRProgramDatabaseFixer Line 305  namespace GBPVRProgramDatabaseFixer
305              //}              //}
306              //gLog.Warn.WriteLine("FilterProgramsByDateRange has not been implemented");              //gLog.Warn.WriteLine("FilterProgramsByDateRange has not been implemented");
307    
308              double total = source.Count;              double total = gbpvr_programs.Count;
309              double index = 0;              double index = 0;
310              double progress = 0;              double progress = 0;
311              foreach (var program in source)              foreach (var program in gbpvr_programs)
312              {              {
313                  //if (program.start_time >= range.Start &&                  ////if (program.start_time >= range.Start &&
314                  //    program.start_time <= range.End)                  ////    program.start_time <= range.End)
315                    ////{
316                    ////    list2.Add(program);
317                    ////}
318                    ////else
319                    ////{
320                    ////    removed_programs.Add(program);
321                    ////}  
322                    //progress = 100.0 * (index / total);
323                    //gLog.ReportProgress(this, new ReportProgressEventArgs((int)progress, string.Format("Filtering GBPVR Programs: {0:00}%", (int)progress)));
324                    //var xmltv_entry = program.AsXMLTVProgramDefinition(this);
325                    //if (xmltv_programs.Contains(xmltv_entry))
326                  //{                  //{
327                  //    list2.Add(program);                  //    source_valid.Add(program);
328                  //}                  //}
329                  //else                  //else
330                  //{                  //{
331                  //    removed_programs.Add(program);                  //    gbpvr_programs_not_found.Add(program);
332                  //}                    //}
333                  progress = 100.0 * (index / total);                  //index++;
334                  gLog.ReportProgress(this, new ReportProgressEventArgs((int)progress, string.Format("Filtering GBPVR Programs: {0:00}%", (int)progress)));                  var channel_oid = program.channel_oid;
335                  var xmltv_entry = program.AsXMLTVProgramDefinition(this);                  var channel = this.Channels.Find(s => s.oid == channel_oid);
336                  if (xmltv_programs.Contains(xmltv_entry))                  var start_date = program.start_time;
337                    var xmltv_entry = xmltv_programs.Find(s => s.ChannelNumber == channel.channel_number && s.Start == start_date.ToDateTimeString());
338                    if (xmltv_entry == null)
339                  {                  {
340                      source_valid.Add(program);                      gbpvr_programs_not_found.Add(program);
341                  }                  }
342                  else                  else
343                  {                  {
344                      source_invalid.Add(program);                      var updated_program = program;
345                        updated_program.description = xmltv_entry.Description;
346                        updated_program.end_time = DateTime.Parse(xmltv_entry.Stop);
347                        updated_program.name = xmltv_entry.Title;
348                        updated_program.start_time = DateTime.Parse(xmltv_entry.Start);                    
349                        updated_program.sub_title = xmltv_entry.SubTitle;
350                        source_valid.Add(updated_program);
351                  }                  }
                 index++;  
352              }              }
353    
354              //for (int i = 0; i < programs.Count(); i++)              //for (int i = 0; i < programs.Count(); i++)
# Line 345  namespace GBPVRProgramDatabaseFixer Line 362  namespace GBPVRProgramDatabaseFixer
362              //}              //}
363    
364              source_valid = source_valid.OrderBy(s => s.channel_oid).ThenBy(s => s.start_time).ToList();              source_valid = source_valid.OrderBy(s => s.channel_oid).ThenBy(s => s.start_time).ToList();
365              source_invalid = source_invalid.OrderBy(s => s.channel_oid).ThenBy(s => s.start_time).ToList();              gbpvr_programs_not_found = gbpvr_programs_not_found.OrderBy(s => s.channel_oid).ThenBy(s => s.start_time).ToList();
366    
367              gLog.Info.WriteLine("Total XMLTV Programs: 0x{0:x8}", xmltv_programs.Count);              gLog.Info.WriteLine("Total XMLTV Programs: 0x{0:x8}", xmltv_programs.Count);
368              gLog.Info.WriteLine("Found: 0x{0:x8} valid GB-PVR Programs", source_valid.Count);              gLog.Info.WriteLine("Updated: 0x{0:x8} GB-PVR Programs", source_valid.Count);
369              gLog.Info.WriteLine("Found: 0x{0:x8} invalid GB-PVR Programs", source_invalid.Count);              gLog.Info.WriteLine("Could not find: 0x{0:x8} GB-PVR Programs", gbpvr_programs_not_found.Count);
370              gLog.Info.WriteLine("Total GB-PVR Programs: 0x{0:x8}", source_valid.Count + source_invalid.Count);              gLog.Info.WriteLine("Total GB-PVR Programs: 0x{0:x8}", source_valid.Count + gbpvr_programs_not_found.Count);
371    
372              return source_valid;              return source_valid;
373          }          }

Legend:
Removed from v.167  
changed lines
  Added in v.168

  ViewVC Help
Powered by ViewVC 1.1.22