QFileInfo Content::GetRecordingArtwork ( const QString &sType, const QString &sInetref, int nSeason, int nWidth, int nHeight) { ArtworkMap map = GetArtwork(sInetref, nSeason); VideoArtworkType type = kArtworkCoverart; QString sgroup; if (sType.toLower() == "coverart") { sgroup = "Coverart"; type = kArtworkCoverart; } else if (sType.toLower() == "fanart") { sgroup = "Fanart"; type = kArtworkFanart; } else if (sType.toLower() == "banner") { sgroup = "Banners"; type = kArtworkBanner; } QUrl url(map.value(type).url); QString sFileName = url.path(); return GetImageFile( sgroup, sFileName, nWidth, nHeight); }
bool PlayerContext::GetPlayingInfoMap(InfoMap &infoMap) const { bool loaded = false; LockPlayingInfo(__FILE__, __LINE__); if (playingInfo) { playingInfo->ToMap(infoMap); infoMap["tvstate"] = StateToString(playingState); infoMap["iconpath"] = ChannelUtil::GetIcon(playingInfo->GetChanID()); if ((playingInfo->IsVideoFile() || playingInfo->IsVideoDVD() || playingInfo->IsVideoBD()) && playingInfo->GetPathname() != playingInfo->GetBasename()) { infoMap["coverartpath"] = VideoMetaDataUtil::GetArtPath( playingInfo->GetPathname(), "Coverart"); infoMap["fanartpath"] = VideoMetaDataUtil::GetArtPath( playingInfo->GetPathname(), "Fanart"); infoMap["bannerpath"] = VideoMetaDataUtil::GetArtPath( playingInfo->GetPathname(), "Banners"); infoMap["screenshotpath"] = VideoMetaDataUtil::GetArtPath( playingInfo->GetPathname(), "Screenshots"); } else { ArtworkMap artmap = GetArtwork(playingInfo->GetInetRef(), playingInfo->GetSeason()); infoMap["coverartpath"] = artmap.value(kArtworkCoverart).url; infoMap["fanartpath"] = artmap.value(kArtworkFanart).url; infoMap["bannerpath"] = artmap.value(kArtworkBanner).url; infoMap["screenshotpath"] = artmap.value(kArtworkScreenshot).url; } if (player) player->GetCodecDescription(infoMap); infoMap.detach(); loaded = true; } UnlockPlayingInfo(__FILE__, __LINE__); return loaded; }
void FillArtworkInfoList( DTC::ArtworkInfoList *pArtworkInfoList, const QString &sInetref, uint nSeason ) { ArtworkMap map = GetArtwork(sInetref, nSeason); for (ArtworkMap::const_iterator i = map.begin(); i != map.end(); ++i) { DTC::ArtworkInfo *pArtInfo = pArtworkInfoList->AddNewArtworkInfo(); pArtInfo->setFileName(i.value().url); switch (i.key()) { case kArtworkFanart: pArtInfo->setStorageGroup("Fanart"); pArtInfo->setType("fanart"); pArtInfo->setURL(QString("/Content/GetImageFile?StorageGroup=%1" "&FileName=%2").arg("Fanart") .arg(QUrl(i.value().url).path())); break; case kArtworkBanner: pArtInfo->setStorageGroup("Banners"); pArtInfo->setType("banner"); pArtInfo->setURL(QString("/Content/GetImageFile?StorageGroup=%1" "&FileName=%2").arg("Fanart") .arg(QUrl(i.value().url).path())); break; case kArtworkCoverart: default: pArtInfo->setStorageGroup("Coverart"); pArtInfo->setType("coverart"); pArtInfo->setURL(QString("/Content/GetImageFile?StorageGroup=%1" "&FileName=%2").arg("Fanart") .arg(QUrl(i.value().url).path())); break; } } }
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; } }