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 |
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 |
} |
} |
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; |
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 |
//{ |
//{ |
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++) |
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 |
} |
} |