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);
94 std::vector<ProgramInfo *> recordingList;
98 for (
auto & pg : recordingList)
101 if (pginfo->GetInetRef().isEmpty())
103 QString msg = QString(
"Looking up: %1 %2")
104 .arg(pginfo->GetTitle(), pginfo->GetSubtitle());
105 LOG(VB_GENERAL, LOG_INFO, msg);
123 std::vector<ProgramInfo *> recordingList;
128 for (
auto & pg : recordingList)
131 bool dolookup =
true;
133 if (pginfo->GetInetRef().isEmpty())
135 if (dolookup || aggressive)
138 if (map.isEmpty() || (aggressive && map.count() < maxartnum))
140 QString msg = QString(
"Looking up artwork for recording rule: %1 %2")
141 .arg(pginfo->GetTitle(), pginfo->GetSubtitle());
142 LOG(VB_GENERAL, LOG_INFO, msg);
153 QMap< QString, ProgramInfo* > recMap;
161 for (
auto *pg : progList)
165 bool dolookup =
true;
173 pginfo->GetRecordingGroup() ==
"Deleted" ||
174 pginfo->GetRecordingGroup() ==
"LiveTV")
176 if (dolookup || aggressive)
179 if (map.isEmpty() || (aggressive && map.count() < maxartnum))
181 QString msg = QString(
"Looking up artwork for recording: %1 %2")
182 .arg(pginfo->GetTitle(), pginfo->GetSubtitle());
183 LOG(VB_GENERAL, LOG_INFO, msg);
197 QMap< QString, ProgramInfo* > recMap;
205 for (
auto *pg : progList)
208 if (pginfo && pginfo->GetInetRef().isEmpty())
211 rule->m_recordID = pginfo->GetRecordingRuleID();
213 if (!rule->m_inetref.isEmpty())
215 QString msg = QString(
"%1").arg(pginfo->GetTitle());
216 if (!pginfo->GetSubtitle().isEmpty())
217 msg += QString(
": %1").arg(pginfo->GetSubtitle());
218 msg +=
" has no inetref, but its recording rule does. Copying...";
219 LOG(VB_GENERAL, LOG_INFO, msg);
220 pginfo->SaveInetRef(rule->m_inetref);
239 if (list.count() > 1)
243 QDate exactTitleDate;
244 float exactTitlePopularity = 0.0;
245 bool foundMatchWithArt =
false;
247 for (
int p = 0;
p != list.size(); ++
p)
249 auto *pginfo = list[
p]->GetData().value<
ProgramInfo *>();
251 if (pginfo && (QString::compare(pginfo->GetTitle(), list[
p]->GetBaseTitle(), Qt::CaseInsensitive)) == 0)
263 if ((exactTitleMeta ==
nullptr) ||
265 ((!foundMatchWithArt) ||
266 ((list[
p]->GetPopularity() > exactTitlePopularity)) ||
267 ((exactTitlePopularity == 0.0F) && (list[
p]->GetReleaseDate() > exactTitleDate)))))
270 exactTitleDate = list[
p]->GetReleaseDate();
271 exactTitlePopularity = list[
p]->GetPopularity();
272 exactTitleMeta = list[
p];
276 if (pginfo && !pginfo->GetSeriesID().isEmpty() &&
277 pginfo->GetSeriesID() == (list[
p])->GetTMSref())
286 if (pginfo && pginfo->GetYearOfInitialRelease() != 0 &&
287 (list[
p])->GetYear() != 0 &&
288 pginfo->GetYearOfInitialRelease() == (list[
p])->GetYear())
292 LOG(VB_GENERAL, LOG_INFO,
"Multiple results matched on year. No definite "
293 "match could be found.");
297 LOG(VB_GENERAL, LOG_INFO,
"Matched from multiple results based on year. ");
313 if (exactTitleMeta !=
nullptr)
315 LOG(VB_GENERAL, LOG_INFO, QString(
"Best match released %1").arg(exactTitleDate.toString()));
325 LOG(VB_GENERAL, LOG_INFO,
"Unable to match this title, too many possible matches. "
326 "You may wish to manually set the season, episode, and "
327 "inetref in the 'Watch Recordings' screen.");
329 auto *pginfo = list[0]->GetData().value<
ProgramInfo *>();
356 LOG(VB_GENERAL, LOG_DEBUG,
"I found the following data:");
357 LOG(VB_GENERAL, LOG_DEBUG,
358 QString(
" Input Title: %1").arg(pginfo->GetTitle()));
359 LOG(VB_GENERAL, LOG_DEBUG,
360 QString(
" Input Sub: %1").arg(pginfo->GetSubtitle()));
361 LOG(VB_GENERAL, LOG_DEBUG,
362 QString(
" Title: %1").arg(lookup->
GetTitle()));
363 LOG(VB_GENERAL, LOG_DEBUG,
364 QString(
" Subtitle: %1").arg(lookup->
GetSubtitle()));
365 LOG(VB_GENERAL, LOG_DEBUG,
366 QString(
" Season: %1").arg(lookup->
GetSeason()));
367 LOG(VB_GENERAL, LOG_DEBUG,
368 QString(
" Episode: %1").arg(lookup->
GetEpisode()));
369 LOG(VB_GENERAL, LOG_DEBUG,
370 QString(
" Inetref: %1").arg(lookup->
GetInetref()));
371 LOG(VB_GENERAL, LOG_DEBUG,
383 rule->LoadByProgram(pginfo);
384 if (rule->m_inetref.isEmpty() &&
402 for (
auto it = dlmap.cbegin(); it != dlmap.cend(); it++)
403 artmap.insert(it.key(), it.value());