2 |
|
using System; |
3 |
|
using System.Collections.Generic; |
4 |
|
using System.Text; |
5 |
+ |
using System.Linq; |
6 |
|
using Enterprise.Logging; |
7 |
|
using System.Windows.Forms; |
8 |
|
using System.Diagnostics; |
9 |
|
using System.IO; |
10 |
|
using libxmltv.Core; |
11 |
< |
|
11 |
> |
using libxmltv.Interfaces; |
12 |
> |
using libxmltv; |
13 |
|
namespace GBPVRProgramDatabaseFixer |
14 |
|
{ |
15 |
|
class Program |
172 |
|
|
173 |
|
|
174 |
|
static List<SQLLITE.IPROGRAMME> gbpvr_programs; |
175 |
+ |
static List<SQLLITE.ICHANNEL> gbpvr_channels; |
176 |
|
static List<SQLLITE.IRECORDING_SCHEDULE> gbpvr_recordings; |
177 |
< |
static List<libxmltv.Interfaces.IXMLTVProgram> xmltv_programs; |
177 |
> |
static IProgramDefinitionList xmltv_programs; |
178 |
|
static void PerformDatabaseProcessing() |
179 |
|
{ |
180 |
+ |
gbpvr_channels = sqlite.Channels; |
181 |
|
gbpvr_programs = sqlite.Programs; |
182 |
< |
gbpvr_recordings = sqlite.Recordings; |
183 |
< |
xmltv_programs = XMLTV.GetPrograms(); |
182 |
> |
gbpvr_recordings = sqlite.Recordings; |
183 |
> |
Type datatype; |
184 |
> |
xmltv_programs = (IProgramDefinitionList)XMLTV.CreateBindingSourceFromData(XMLTV.GetPrograms(), out datatype); |
185 |
|
CheckScheduledRecordingsForDiscrepancies(); |
186 |
|
CheckProgramsForDiscrepancies(); |
187 |
|
} |
188 |
|
|
189 |
|
static void CheckScheduledRecordingsForDiscrepancies() |
190 |
|
{ |
191 |
< |
gLog.Warn.WriteLine("CheckScheduledRecordingsForDiscrepancies() has not been implemented"); |
191 |
> |
//gLog.Warn.WriteLine("CheckScheduledRecordingsForDiscrepancies() has not been implemented"); |
192 |
> |
var manual_gbpvr_recordings = gbpvr_recordings.FindAll(p => p.recording_type == 0).ToList(); |
193 |
> |
|
194 |
> |
foreach (var manual_recording in manual_gbpvr_recordings) |
195 |
> |
{ |
196 |
> |
string title = manual_recording.filename; |
197 |
> |
DateTime start = manual_recording.manual_start_time; |
198 |
> |
DateTime end = manual_recording.manual_end_time; |
199 |
> |
|
200 |
> |
var found_program = xmltv_programs.ToList().Find(p => |
201 |
> |
p.Title.ToLower() == title.ToLower() && |
202 |
> |
p.Start == start.ToDateTimeString() && |
203 |
> |
p.Stop == end.ToDateTimeString() |
204 |
> |
); |
205 |
> |
|
206 |
> |
if (found_program != null) |
207 |
> |
{ |
208 |
> |
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()); |
209 |
> |
} |
210 |
> |
else |
211 |
> |
{ |
212 |
> |
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()); |
213 |
> |
} |
214 |
> |
//bool entry_valid = false; |
215 |
> |
//if (found_programs.Count == 0) |
216 |
> |
//{ |
217 |
> |
// gLog.Warn.WriteLine("Could not find an XMLTV Program with title: '{0}'", title); |
218 |
> |
//} |
219 |
> |
//foreach (var found_program in found_programs) |
220 |
> |
//{ |
221 |
> |
// entry_valid = (found_program.Start == start.ToDateTimeString()); |
222 |
> |
// entry_valid = (found_program.Stop == end.ToDateTimeString()); |
223 |
> |
//} |
224 |
> |
//if (!entry_valid) |
225 |
> |
//{ |
226 |
> |
// gLog.Warn.WriteLine("Recording: oid='{0}' programme_oid='{1}' title='{2}' start='{3}', end='{4}' may not be valid", manual_recording.oid, manual_recording.programme_oid, title, start.ToDateTimeString(), end.ToDateTimeString()); |
227 |
> |
//} |
228 |
> |
} |
229 |
|
} |
230 |
+ |
|
231 |
|
static void CheckProgramsForDiscrepancies() |
232 |
|
{ |
233 |
|
gLog.Warn.WriteLine("CheckProgramsForDiscrepancies() has not been implemented"); |