37 const QDateTime &starttime,
44 LOG(VB_GENERAL, LOG_ERR,
45 "No valid program info for supplied chanid/starttime");
58 QMap< QString, ProgramInfo* > recMap;
68 for (
auto *pg : progList)
71 if ((pginfo->GetRecordingGroup() !=
"Deleted") &&
72 (pginfo->GetRecordingGroup() !=
"LiveTV") &&
73 (pginfo->GetInetRef().isEmpty() ||
74 (!pginfo->GetSubtitle().isEmpty() &&
75 (pginfo->GetSeason() == 0) &&
76 (pginfo->GetEpisode() == 0))))
78 QString msg = QString(
"Looking up: %1 %2")
79 .arg(pginfo->GetTitle(), pginfo->GetSubtitle());
80 LOG(VB_GENERAL, LOG_INFO, msg);
96 std::vector<ProgramInfo *> recordingList;
100 for (
auto & pg : recordingList)
103 if (pginfo->GetInetRef().isEmpty())
105 QString msg = QString(
"Looking up: %1 %2")
106 .arg(pginfo->GetTitle(), pginfo->GetSubtitle());
107 LOG(VB_GENERAL, LOG_INFO, msg);
127 std::vector<ProgramInfo *> recordingList;
132 for (
auto & pg : recordingList)
135 bool dolookup =
true;
137 if (pginfo->GetInetRef().isEmpty())
139 if (dolookup || aggressive)
142 if (map.isEmpty() || (aggressive && map.count() < maxartnum))
144 QString msg = QString(
"Looking up artwork for recording rule: %1 %2")
145 .arg(pginfo->GetTitle(), pginfo->GetSubtitle());
146 LOG(VB_GENERAL, LOG_INFO, msg);
157 QMap< QString, ProgramInfo* > recMap;
165 for (
auto *pg : progList)
169 bool dolookup =
true;
177 pginfo->GetRecordingGroup() ==
"Deleted" ||
178 pginfo->GetRecordingGroup() ==
"LiveTV")
180 if (dolookup || aggressive)
183 if (map.isEmpty() || (aggressive && map.count() < maxartnum))
185 QString msg = QString(
"Looking up artwork for recording: %1 %2")
186 .arg(pginfo->GetTitle(), pginfo->GetSubtitle());
187 LOG(VB_GENERAL, LOG_INFO, msg);
201 QMap< QString, ProgramInfo* > recMap;
209 for (
auto *pg : progList)
212 if (pginfo && pginfo->GetInetRef().isEmpty())
215 rule->m_recordID = pginfo->GetRecordingRuleID();
217 if (!rule->m_inetref.isEmpty())
219 QString msg = QString(
"%1").arg(pginfo->GetTitle());
220 if (!pginfo->GetSubtitle().isEmpty())
221 msg += QString(
": %1").arg(pginfo->GetSubtitle());
222 msg +=
" has no inetref, but its recording rule does. Copying...";
223 LOG(VB_GENERAL, LOG_INFO, msg);
224 pginfo->SaveInetRef(rule->m_inetref);
243 if (list.count() > 1)
247 QDate exactTitleDate;
248 float exactTitlePopularity = 0.0;
249 bool foundMatchWithArt =
false;
251 for (
int p = 0;
p != list.size(); ++
p)
253 auto *pginfo = list[
p]->GetData().value<
ProgramInfo *>();
255 if (pginfo && (QString::compare(pginfo->GetTitle(), list[
p]->GetBaseTitle(), Qt::CaseInsensitive)) == 0)
267 if ((exactTitleMeta ==
nullptr) ||
269 ((!foundMatchWithArt) ||
270 ((list[
p]->GetPopularity() > exactTitlePopularity)) ||
271 ((exactTitlePopularity == 0.0F) && (list[
p]->GetReleaseDate() > exactTitleDate)))))
274 exactTitleDate = list[
p]->GetReleaseDate();
275 exactTitlePopularity = list[
p]->GetPopularity();
276 exactTitleMeta = list[
p];
280 if (pginfo && !pginfo->GetSeriesID().isEmpty() &&
281 pginfo->GetSeriesID() == (list[
p])->GetTMSref())
290 if (pginfo && pginfo->GetYearOfInitialRelease() != 0 &&
291 (list[
p])->GetYear() != 0 &&
292 pginfo->GetYearOfInitialRelease() == (list[
p])->GetYear())
296 LOG(VB_GENERAL, LOG_INFO,
"Multiple results matched on year. No definite "
297 "match could be found.");
301 LOG(VB_GENERAL, LOG_INFO,
"Matched from multiple results based on year. ");
317 if (exactTitleMeta !=
nullptr)
319 LOG(VB_GENERAL, LOG_INFO, QString(
"Best match released %1").arg(exactTitleDate.toString()));
329 LOG(VB_GENERAL, LOG_INFO,
"Unable to match this title, too many possible matches. "
330 "You may wish to manually set the season, episode, and "
331 "inetref in the 'Watch Recordings' screen.");
333 auto *pginfo = list[0]->GetData().value<
ProgramInfo *>();
360 LOG(VB_GENERAL, LOG_DEBUG,
"I found the following data:");
361 LOG(VB_GENERAL, LOG_DEBUG,
362 QString(
" Input Title: %1").arg(pginfo->GetTitle()));
363 LOG(VB_GENERAL, LOG_DEBUG,
364 QString(
" Input Sub: %1").arg(pginfo->GetSubtitle()));
365 LOG(VB_GENERAL, LOG_DEBUG,
366 QString(
" Title: %1").arg(lookup->
GetTitle()));
367 LOG(VB_GENERAL, LOG_DEBUG,
368 QString(
" Subtitle: %1").arg(lookup->
GetSubtitle()));
369 LOG(VB_GENERAL, LOG_DEBUG,
370 QString(
" Season: %1").arg(lookup->
GetSeason()));
371 LOG(VB_GENERAL, LOG_DEBUG,
372 QString(
" Episode: %1").arg(lookup->
GetEpisode()));
373 LOG(VB_GENERAL, LOG_DEBUG,
374 QString(
" Inetref: %1").arg(lookup->
GetInetref()));
375 LOG(VB_GENERAL, LOG_DEBUG,
387 rule->LoadByProgram(pginfo);
388 if (rule->m_inetref.isEmpty() &&
406 for (
auto it = dlmap.cbegin(); it != dlmap.cend(); it++)
407 artmap.insert(it.key(), it.value());