void MetadataFactory::Lookup(ProgramInfo *pginfo, bool automatic, bool getimages, bool allowgeneric) { if (!pginfo) return; MetadataLookup *lookup = new MetadataLookup(); lookup->SetStep(kLookupSearch); lookup->SetType(kMetadataRecording); lookup->SetSubtype(GuessLookupType(pginfo)); lookup->SetData(qVariantFromValue(pginfo)); lookup->SetAutomatic(automatic); lookup->SetHandleImages(getimages); lookup->SetAllowGeneric(allowgeneric); lookup->SetHost(gCoreContext->GetMasterHostName()); lookup->SetTitle(pginfo->GetTitle()); lookup->SetSubtitle(pginfo->GetSubtitle()); lookup->SetSeason(pginfo->GetSeason()); lookup->SetEpisode(pginfo->GetEpisode()); lookup->SetInetref(pginfo->GetInetRef()); if (m_lookupthread->isRunning()) m_lookupthread->prependLookup(lookup); else m_lookupthread->addLookup(lookup); }
META_PUBLIC MetadataLookupList MetadataFactory::SynchronousLookup(QString title, QString subtitle, QString inetref, int season, int episode, QString grabber, bool allowgeneric) { MetadataLookup *lookup = new MetadataLookup(); lookup->SetStep(kLookupSearch); lookup->SetType(kMetadataRecording); lookup->SetAutomatic(false); lookup->SetHandleImages(false); lookup->SetAllowGeneric(allowgeneric); lookup->SetTitle(title); lookup->SetSubtitle(subtitle); lookup->SetSeason(season); lookup->SetEpisode(episode); lookup->SetInetref(inetref); if (grabber.toLower() == "movie") lookup->SetSubtype(kProbableMovie); else if (grabber.toLower() == "tv" || grabber.toLower() == "television") lookup->SetSubtype(kProbableTelevision); else lookup->SetSubtype(GuessLookupType(lookup)); return SynchronousLookup(lookup); }
void MetadataFactory::Lookup(RecordingRule *recrule, bool automatic, bool getimages, bool allowgeneric) { if (!recrule) return; MetadataLookup *lookup = new MetadataLookup(); lookup->SetStep(kLookupSearch); lookup->SetType(kMetadataRecording); lookup->SetSubtype(GuessLookupType(recrule)); lookup->SetData(qVariantFromValue(recrule)); lookup->SetAutomatic(automatic); lookup->SetHandleImages(getimages); lookup->SetAllowGeneric(allowgeneric); lookup->SetHost(gCoreContext->GetMasterHostName()); lookup->SetTitle(recrule->m_title); lookup->SetSubtitle(recrule->m_subtitle); lookup->SetInetref(recrule->m_inetref); lookup->SetSeason(recrule->m_season); lookup->SetEpisode(recrule->m_episode); if (m_lookupthread->isRunning()) m_lookupthread->prependLookup(lookup); else m_lookupthread->addLookup(lookup); }
void EditMetadataDialog::OnSearchListSelection(ArtworkInfo info, VideoArtworkType type) { QString msg = tr("Downloading selected artwork..."); createBusyDialog(msg); MetadataLookup *lookup = new MetadataLookup(); lookup->SetType(kMetadataVideo); lookup->SetSubtype(GuessLookupType(m_workingMetadata)); lookup->SetHost(m_workingMetadata->GetHost()); lookup->SetAutomatic(true); lookup->SetData(qVariantFromValue<VideoArtworkType>(type)); ArtworkMap downloads; downloads.insert(type, info); lookup->SetDownloads(downloads); lookup->SetAllowOverwrites(true); lookup->SetTitle(m_workingMetadata->GetTitle()); lookup->SetSubtitle(m_workingMetadata->GetSubtitle()); lookup->SetSeason(m_workingMetadata->GetSeason()); lookup->SetEpisode(m_workingMetadata->GetEpisode()); lookup->SetInetref(m_workingMetadata->GetInetRef()); m_imageDownload->addDownloads(lookup); }
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; } }