/// <summary> /// EPGデータ更新 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void _bgw_EpgData_DoWork(object sender, DoWorkEventArgs e) { DateTime lastUpdate1 = DateTime.Now; // int epgUpdatedCount1 = 0; int epgNotUpdatedCount1 = 0; foreach (RecLogItem rli1 in db_RecLog.select_Reserved()) { if (rli1.epgEventInfoR != null && rli1.epgAlllowOverWrite) { EpgEventInfo epgEventInfo1 = getEpgEventInfo( rli1.epgEventInfoR.original_network_id, rli1.epgEventInfoR.transport_stream_id, rli1.epgEventInfoR.service_id, rli1.epgEventInfoR.event_id); EpgEventInfoR epgEventInfoR1 = new EpgEventInfoR(epgEventInfo1, lastUpdate1); epgUpdatedCount1++; epgEventInfoR1.ID = rli1.epgEventInfoID; epgEventInfoR1.lastUpdate = lastUpdate1; db_RecLog.updateEpg(epgEventInfoR1); } else { epgNotUpdatedCount1++; } } // addDBLog("EPG更新(+" + epgUpdatedCount1 + ",-" + epgNotUpdatedCount1 + ") " + lastUpdate1.ToString(_timestampFormat)); }
void updateReserveInfo() { DateTime lastUpdate1 = DateTime.Now; // int reservedCount_New1 = 0; int reservedCount_Update1 = 0; foreach (ReserveData rd1 in CommonManager.Instance.DB.ReserveList.Values) { EpgEventInfo epgEventInfo1 = getEpgEventInfo(rd1.OriginalNetworkID, rd1.TransportStreamID, rd1.ServiceID, rd1.EventID); if (epgEventInfo1 == null) { // EPGデータが見つからない // 1.EpgEventInfo.eventIDが変更された // 2.放送が中止になった // 3.EPGデータ更新中 continue; // 無視する //epgEventInfo1 = new EpgEventInfo(); } EpgEventInfoR epgEventInfoR1 = new EpgEventInfoR(epgEventInfo1, lastUpdate1); RecLogItem recLogItem1 = db_RecLog.exists(rd1); if (recLogItem1 == null) { // 新規登録 reservedCount_New1++; RecLogItem recLogItem2 = new RecLogItem() { lastUpdate = lastUpdate1, epgEventInfoR = epgEventInfoR1 }; if (rd1.RecSetting.RecMode == 0x05) // 録画モード:無効 { recLogItem2.recodeStatus = RecLogItem.RecodeStatuses.無効登録; } else { recLogItem2.recodeStatus = RecLogItem.RecodeStatuses.予約済み; } db_RecLog.insert(recLogItem2); } else { //更新 reservedCount_Update1++; recLogItem1.lastUpdate = lastUpdate1; if (rd1.RecSetting.RecMode == 0x05) // 録画モード:無効 { if (recLogItem1.recodeStatus != RecLogItem.RecodeStatuses.無効登録) { recLogItem1.recodeStatus = RecLogItem.RecodeStatuses.無効登録; reservedCount_New1++; } } else { if (recLogItem1.recodeStatus != RecLogItem.RecodeStatuses.予約済み) { recLogItem1.recodeStatus = RecLogItem.RecodeStatuses.予約済み; reservedCount_New1++; } } db_RecLog.update(recLogItem1); } } // // 予約削除 - 更新されなかったものを対象とする // List<RecLogItem> list_NotUpdated1 = db_RecLog.select_Reserved_NotUpdated(lastUpdate1); List<RecLogItem> list_Deleted1 = new List<RecLogItem>(); List<RecLogItem> list_RecstatusUpdateErr1 = new List<RecLogItem>(); foreach (RecLogItem item1 in list_NotUpdated1) { if (item1.epgEventInfoR != null && lastUpdate1 < item1.epgEventInfoR.start_time) { // 未来に放送 list_Deleted1.Add(item1); } else if (item1.recodeStatus == RecLogItem.RecodeStatuses.無効登録) { // 無効登録を削除 list_Deleted1.Add(item1); } else { // 録画完了? list_RecstatusUpdateErr1.Add(item1); } } // if (0 < list_RecstatusUpdateErr1.Count) { addDBLog("ステータス更新失敗:" + list_RecstatusUpdateErr1.Count); foreach (RecLogItem logItem1 in list_RecstatusUpdateErr1) { RecFileInfo rfi1 = null; foreach (RecFileInfo rfi2 in CommonManager.Instance.DB.RecFileInfo.Values) { if (logItem1.equals(rfi2)) { rfi1 = rfi2; break; } } if (rfi1 != null) { if ((RecEndStatus)rfi1.RecStatus == RecEndStatus.NORMAL) { logItem1.recodeStatus = RecLogItem.RecodeStatuses.録画完了; } else { logItem1.recodeStatus = RecLogItem.RecodeStatuses.録画異常; } } else { logItem1.recodeStatus = RecLogItem.RecodeStatuses.不明; } logItem1.lastUpdate = lastUpdate1; db_RecLog.update(logItem1); } } // int reservedCount_Removed1 = db_RecLog.delete(list_Deleted1.ToArray()); // addDBLog("予約更新(+" + reservedCount_New1 + ",-" + reservedCount_Removed1 + ") " + lastUpdate1.ToString(_timestampFormat)); // if (0 < reservedCount_New1 || 0 < reservedCount_Removed1) { _isReserveInfoChanged = true; } }