DTC::RecRuleList* Dvr::GetRecordScheduleList( int nStartIndex, int nCount ) { vector<ProgramInfo *> infoList; RemoteGetAllScheduledRecordings(infoList); // ---------------------------------------------------------------------- // Build Response // ---------------------------------------------------------------------- DTC::RecRuleList *pRecRules = new DTC::RecRuleList(); nStartIndex = min( nStartIndex, (int)infoList.size() ); nCount = (nCount > 0) ? min( nCount, (int)infoList.size() ) : infoList.size(); int nEndIndex = min((nStartIndex + nCount), (int)infoList.size() ); for( int n = nStartIndex; n < nEndIndex; n++) { RecordingRule *rule = new RecordingRule(); ProgramInfo *pInfo = infoList[ n ]; rule->LoadByProgram(pInfo); if (pInfo != NULL) { DTC::RecRule *pRecRule = pRecRules->AddNewRecRule(); FillRecRuleInfo( pRecRule, rule ); delete rule; delete pInfo; } } // ---------------------------------------------------------------------- pRecRules->setStartIndex ( nStartIndex ); pRecRules->setCount ( nCount ); pRecRules->setTotalAvailable( infoList.size() ); pRecRules->setAsOf ( QDateTime::currentDateTime() ); pRecRules->setVersion ( MYTH_BINARY_VERSION ); pRecRules->setProtoVer ( MYTH_PROTO_VERSION ); return pRecRules; }
void LookerUpper::HandleAllRecordingRules() { m_updaterules = true; vector<ProgramInfo *> recordingList; RemoteGetAllScheduledRecordings(recordingList); for( int n = 0; n < (int)recordingList.size(); n++) { ProgramInfo *pginfo = new ProgramInfo(*(recordingList[n])); if (pginfo->GetInetRef().isEmpty()) { QString msg = QString("Looking up: %1 %2").arg(pginfo->GetTitle()) .arg(pginfo->GetSubtitle()); LOG(VB_GENERAL, LOG_INFO, msg); m_busyRecList.append(pginfo); m_metadataFactory->Lookup(pginfo, false, false); } } }
void LookerUpper::HandleAllArtwork(bool aggressive) { m_updateartwork = true; if (aggressive) m_updaterules = true; // First, handle all recording rules w/ inetrefs vector<ProgramInfo *> recordingList; RemoteGetAllScheduledRecordings(recordingList); int maxartnum = 3; for( int n = 0; n < (int)recordingList.size(); n++) { ProgramInfo *pginfo = new ProgramInfo(*(recordingList[n])); bool dolookup = true; if (pginfo->GetInetRef().isEmpty()) dolookup = false; if (dolookup || aggressive) { ArtworkMap map = GetArtwork(pginfo->GetInetRef(), pginfo->GetSeason(), true); if (map.isEmpty() || (aggressive && map.count() < maxartnum)) { QString msg = QString("Looking up artwork for recording rule: %1 %2") .arg(pginfo->GetTitle()) .arg(pginfo->GetSubtitle()); LOG(VB_GENERAL, LOG_INFO, msg); m_busyRecList.append(pginfo); m_metadataFactory->Lookup(pginfo, true, true, true); continue; } } delete pginfo; } // Now, Attempt to fill in the gaps for recordings QMap< QString, ProgramInfo* > recMap; QMap< QString, uint32_t > inUseMap = ProgramInfo::QueryInUseMap(); QMap< QString, bool > isJobRunning = ProgramInfo::QueryJobsRunning(JOB_COMMFLAG); ProgramList progList; LoadFromRecorded( progList, false, inUseMap, isJobRunning, recMap, -1 ); for( int n = 0; n < (int)progList.size(); n++) { ProgramInfo *pginfo = new ProgramInfo(*(progList[n])); bool dolookup = true; LookupType type = GuessLookupType(pginfo); if (type == kProbableMovie) maxartnum = 2; if ((!aggressive && type == kProbableGenericTelevision) || pginfo->GetRecordingGroup() == "Deleted" || pginfo->GetRecordingGroup() == "LiveTV") dolookup = false; if (dolookup || aggressive) { ArtworkMap map = GetArtwork(pginfo->GetInetRef(), pginfo->GetSeason(), true); if (map.isEmpty() || (aggressive && map.count() < maxartnum)) { QString msg = QString("Looking up artwork for recording: %1 %2") .arg(pginfo->GetTitle()) .arg(pginfo->GetSubtitle()); LOG(VB_GENERAL, LOG_INFO, msg); m_busyRecList.append(pginfo); m_metadataFactory->Lookup(pginfo, true, true, aggressive); continue; } } delete pginfo; } }