MetadataLookupList MetadataDownload::handleVideoUndetermined( MetadataLookup* lookup) { MetadataLookupList list; QString def_cmd = QDir::cleanPath(QString("%1/%2") .arg(GetShareDir()) .arg("metadata/Television/ttvdb.py")); QString cmd = gCoreContext->GetSetting("TelevisionGrabber", def_cmd); // Can't trust the inetref with so little information. QStringList args; args.append(QString("-l")); // Language Flag args.append(gCoreContext->GetLanguage()); // UI Language args.append(QString("-N")); QString title = lookup->GetTitle(); args.append(ShellEscape(title)); QString subtitle = lookup->GetSubtitle(); args.append(ShellEscape(subtitle)); // Try to do a title/subtitle lookup list = runGrabber(cmd, args, lookup, false); // If there were no results for that, fall back to a movie lookup. if (!list.size()) list = handleMovie(lookup); if (list.count() == 1) list.at(0)->SetStep(GETDATA); return list; }
MetadataLookupList MetadataDownload::handleVideoUndetermined( MetadataLookup* lookup) { MetadataLookupList list; QString cmd = GetTelevisionGrabber(); // Can't trust the inetref with so little information. QStringList args; args.append(QString("-l")); // Language Flag args.append(gCoreContext->GetLanguage()); // UI Language args.append(QString("-N")); if (!lookup->GetInetref().isEmpty()) { QString inetref = lookup->GetInetref(); args.append(inetref); } else { QString title = lookup->GetTitle(); args.append(title); } QString subtitle = lookup->GetSubtitle(); args.append(subtitle); // Try to do a title/subtitle lookup list = runGrabber(cmd, args, lookup, false); if (list.count() == 1) list.at(0)->SetStep(kLookupData); return list; }
MetadataLookupList MetadataDownload::handleGame(MetadataLookup* lookup) { MetadataLookupList list; QString cmd = GetGameGrabber(); QStringList args; args.append(QString("-l")); // Language Flag args.append(gCoreContext->GetLanguage()); // UI Language // If the inetref is populated, even in kLookupSearch mode, // become a kLookupData grab and use that. if (lookup->GetStep() == kLookupSearch && (!lookup->GetInetref().isEmpty() && lookup->GetInetref() != "00000000")) lookup->SetStep(kLookupData); if (lookup->GetStep() == kLookupSearch) { args.append(QString("-M")); QString title = lookup->GetTitle(); args.append(title); } else if (lookup->GetStep() == kLookupData) { args.append(QString("-D")); args.append(lookup->GetInetref()); } list = runGrabber(cmd, args, lookup); return list; }
MetadataLookupList MetadataDownload::handleTelevision(MetadataLookup* lookup) { MetadataLookupList list; QString cmd = GetTelevisionGrabber(); QStringList args; args.append(QString("-l")); // Language Flag args.append(gCoreContext->GetLanguage()); // UI Language // If the inetref is populated, even in kLookupSearch mode, // become a kLookupData grab and use that. if (lookup->GetStep() == kLookupSearch && (!lookup->GetInetref().isEmpty() && lookup->GetInetref() != "00000000")) lookup->SetStep(kLookupData); if (lookup->GetStep() == kLookupSearch) { args.append(QString("-M")); if (lookup->GetInetref().isEmpty() || lookup->GetInetref() == "00000000") { QString title = lookup->GetTitle(); args.append(title); } else { QString inetref = lookup->GetInetref(); args.append(inetref); } } else if (lookup->GetStep() == kLookupData) { args.append(QString("-D")); args.append(lookup->GetInetref()); args.append(QString::number(lookup->GetSeason())); args.append(QString::number(lookup->GetEpisode())); } else if (lookup->GetStep() == kLookupCollection) { args.append(QString("-C")); args.append(lookup->GetCollectionref()); } list = runGrabber(cmd, args, lookup); // Collection Fallback // If the lookup allows generic metadata, and the specific // season and episode are not available, try for series metadata. if (list.isEmpty() && lookup->GetAllowGeneric() && lookup->GetStep() == kLookupData) { lookup->SetStep(kLookupCollection); list = handleTelevision(lookup); } return list; }
MetadataLookupList MetadataDownload::handleMovie(MetadataLookup* lookup) { MetadataLookupList list; QString mxml; QString nfo; if (!lookup->GetFilename().isEmpty()) { mxml = getMXMLPath(lookup->GetFilename()); nfo = getNFOPath(lookup->GetFilename()); } if (mxml.isEmpty() && nfo.isEmpty()) { QString def_cmd = QDir::cleanPath(QString("%1/%2") .arg(GetShareDir()) .arg("metadata/Movie/tmdb.py")); QString cmd = gCoreContext->GetSetting("MovieGrabber", def_cmd); QStringList args; args.append(QString("-l")); // Language Flag args.append(gCoreContext->GetLanguage()); // UI Language // If the inetref is populated, even in kLookupSearch mode, // become a kLookupData grab and use that. if (lookup->GetStep() == kLookupSearch && (!lookup->GetInetref().isEmpty() && lookup->GetInetref() != "00000000")) lookup->SetStep(kLookupData); if (lookup->GetStep() == kLookupSearch) { args.append(QString("-M")); QString title = lookup->GetTitle(); args.append(title); } else if (lookup->GetStep() == kLookupData) { args.append(QString("-D")); args.append(lookup->GetInetref()); } list = runGrabber(cmd, args, lookup); } else if (!mxml.isEmpty()) list = readMXML(mxml, lookup); else if (!nfo.isEmpty()) list = readNFO(nfo, lookup); return list; }
MetadataLookupList MetadataDownload::handleRecordingGeneric( MetadataLookup* lookup) { // We only enter this mode if we are pretty darn sure this is a TV show, // but we're for some reason looking up a generic, or the title didn't // exactly match in one of the earlier lookups. This is a total // hail mary to try to get at least *series* level info and art/inetref. MetadataLookupList list; QString cmd = GetTelevisionGrabber(); QStringList args; args.append(QString("-l")); // Language Flag args.append(gCoreContext->GetLanguage()); // UI Language args.append(QString("-a")); args.append(gCoreContext->GetLocale()->GetCountryCode()); args.append("-M"); QString title = lookup->GetTitle(); args.append(title); LookupType origtype = lookup->GetSubtype(); int origseason = lookup->GetSeason(); int origepisode = lookup->GetEpisode(); lookup->SetSubtype(kProbableGenericTelevision); if (origseason == 0 && origepisode == 0) { lookup->SetSeason(1); lookup->SetEpisode(1); } list = runGrabber(cmd, args, lookup, true); if (list.count() == 1) { lookup->SetInetref(list.at(0)->GetInetref()); lookup->SetCollectionref(list.at(0)->GetCollectionref()); list = handleTelevision(lookup); } lookup->SetSeason(origseason); lookup->SetEpisode(origepisode); lookup->SetSubtype(origtype); return list; }
MetadataLookupList MetadataDownload::handleTelevision(MetadataLookup* lookup) { MetadataLookupList list; QString def_cmd = QDir::cleanPath(QString("%1/%2") .arg(GetShareDir()) .arg("metadata/Television/ttvdb.py")); QString cmd = gCoreContext->GetSetting("TelevisionGrabber", def_cmd); QStringList args; args.append(QString("-l")); // Language Flag args.append(gCoreContext->GetLanguage()); // UI Language // If the inetref is populated, even in kLookupSearch mode, // become a kLookupData grab and use that. if (lookup->GetStep() == kLookupSearch && (!lookup->GetInetref().isEmpty() && lookup->GetInetref() != "00000000")) lookup->SetStep(kLookupData); if (lookup->GetStep() == kLookupSearch) { args.append(QString("-M")); if (lookup->GetInetref().isEmpty() || lookup->GetInetref() == "00000000") { QString title = lookup->GetTitle(); args.append(title); } else { QString inetref = lookup->GetInetref(); args.append(inetref); } } else if (lookup->GetStep() == kLookupData) { args.append(QString("-D")); args.append(lookup->GetInetref()); args.append(QString::number(lookup->GetSeason())); args.append(QString::number(lookup->GetEpisode())); } list = runGrabber(cmd, args, lookup); return list; }
MetadataLookupList MetadataDownload::handleRecordingGeneric( MetadataLookup* lookup) { // We only enter this mode if we are pretty darn sure this is a TV show, // but we're for some reason looking up a generic, or the title didn't // exactly match in one of the earlier lookups. This is a total // hail mary to try to get at least *series* level info and art/inetref. MetadataLookupList list; QString def_cmd = QDir::cleanPath(QString("%1/%2") .arg(GetShareDir()) .arg("metadata/Television/ttvdb.py")); QString cmd = gCoreContext->GetSetting("TelevisionGrabber", def_cmd); QStringList args; args.append(QString("-l")); // Language Flag args.append(gCoreContext->GetLanguage()); // UI Language args.append("-M"); QString title = lookup->GetTitle(); args.append(title); lookup->SetSubtype(kProbableGenericTelevision); int origseason = lookup->GetSeason(); int origepisode = lookup->GetEpisode(); if (origseason == 0 && origepisode == 0) { lookup->SetSeason(1); lookup->SetEpisode(1); } list = runGrabber(cmd, args, lookup, true); if (list.count() == 1) list.at(0)->SetStep(kLookupData); lookup->SetSeason(origseason); lookup->SetEpisode(origepisode); return list; }
MetadataLookupList MetadataDownload::handleMovie(MetadataLookup* lookup) { MetadataLookupList list; QString def_cmd = QDir::cleanPath(QString("%1/%2") .arg(GetShareDir()) .arg("metadata/Movie/tmdb.py")); QString cmd = gCoreContext->GetSetting("MovieGrabber", def_cmd); QStringList args; args.append(QString("-l")); // Language Flag args.append(gCoreContext->GetLanguage()); // UI Language // If the inetref is populated, even in search mode, // become a getdata grab and use that. if (lookup->GetStep() == SEARCH && (!lookup->GetInetref().isEmpty() && lookup->GetInetref() != "00000000")) lookup->SetStep(GETDATA); if (lookup->GetStep() == SEARCH) { args.append(QString("-M")); QString title = lookup->GetTitle(); args.append(ShellEscape(title)); } else if (lookup->GetStep() == GETDATA) { args.append(QString("-D")); args.append(lookup->GetInetref()); } list = runGrabber(cmd, args, lookup); return list; }