private void GetAndProcessRecordings(SynchronizeRecordingsContext context, ChannelType channelType) { var groups = Proxies.ControlService.GetAllRecordingGroups(channelType, RecordingGroupMode.GroupBySchedule).Result; foreach (RecordingGroup group in groups) { var recordings = Proxies.ControlService.GetRecordingsForSchedule(group.ScheduleId, includeNonExisting: true).Result; foreach (RecordingSummary recording in recordings) { if (!context.ContainsRecording(recording)) { if (context.AddRecording(recording)) { if (!File.Exists(recording.RecordingFileName)) { context.MissingRecordings.Add(recording); } } } if (_processingBackgroundWorker.CancellationPending) { break; } } } }
private void ScanDirectory(SynchronizeRecordingsContext context, string folder) { try { if (!_processingBackgroundWorker.CancellationPending && Directory.Exists(folder)) { DirectoryInfo dirInfo = new DirectoryInfo(folder); foreach (DirectoryInfo subDirInfo in dirInfo.GetDirectories()) { ScanDirectory(context, subDirInfo.FullName); } foreach (FileInfo fileInfo in dirInfo.GetFiles()) { foreach (string extension in _extensions) { if (fileInfo.Name.EndsWith(extension, StringComparison.CurrentCultureIgnoreCase)) { if (!context.ContainsRecording(fileInfo.FullName)) { ImportRecording(context, fileInfo.FullName); break; } } if (_processingBackgroundWorker.CancellationPending) { break; } } } } } catch { // In case of an error, simply skip this directory. } }