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); }
MetadataLookup* LookupFromProgramInfo(ProgramInfo *pginfo) { uint runtimesecs = pginfo->GetRecordingStartTime() .secsTo(pginfo->GetRecordingEndTime()); uint runtime = (runtimesecs/60); MetadataLookup *ret = new MetadataLookup(kMetadataRecording, kUnknownVideo, qVariantFromValue(pginfo), kLookupData, false, false, false, false, false, pginfo->GetHostname(),pginfo->GetBasename(),pginfo->GetTitle(), QStringList() << pginfo->GetCategory(), pginfo->GetStars() * 10, pginfo->GetSubtitle(), pginfo->GetDescription(), pginfo->GetChanID(), pginfo->GetChanNum(), pginfo->GetChannelSchedulingID(), pginfo->GetChannelName(), pginfo->GetChannelPlaybackFilters(), pginfo->GetRecordingGroup(), pginfo->GetPlaybackGroup(), pginfo->GetSeriesID(), pginfo->GetProgramID(), pginfo->GetStorageGroup(), pginfo->GetScheduledStartTime(), pginfo->GetScheduledEndTime(), pginfo->GetRecordingStartTime(), pginfo->GetRecordingEndTime(), pginfo->GetProgramFlags(), pginfo->GetAudioProperties(), pginfo->GetVideoProperties(), pginfo->GetSubtitleType(), pginfo->GetYearOfInitialRelease(), pginfo->GetOriginalAirDate(), pginfo->GetLastModifiedTime(), runtime, runtimesecs); ret->SetSeason(pginfo->GetSeason()); ret->SetEpisode(pginfo->GetEpisode()); ret->SetInetref(pginfo->GetInetRef()); return ret; }
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 MetadataFactory::Lookup(VideoMetadata *metadata, bool automatic, bool getimages, bool allowgeneric) { if (!metadata) return; MetadataLookup *lookup = new MetadataLookup(); lookup->SetStep(kLookupSearch); lookup->SetType(kMetadataVideo); lookup->SetSubtype(GuessLookupType(metadata)); lookup->SetData(qVariantFromValue(metadata)); lookup->SetAutomatic(automatic); lookup->SetHandleImages(getimages); lookup->SetAllowGeneric(allowgeneric); lookup->SetHost(metadata->GetHost()); lookup->SetTitle(metadata->GetTitle()); lookup->SetSubtitle(metadata->GetSubtitle()); lookup->SetSeason(metadata->GetSeason()); lookup->SetEpisode(metadata->GetEpisode()); lookup->SetInetref(metadata->GetInetRef()); lookup->SetFilename(generate_file_url("Videos", metadata->GetHost(), metadata->GetFilename())); if (m_lookupthread->isRunning()) m_lookupthread->prependLookup(lookup); else m_lookupthread->addLookup(lookup); }
void EditMetadataDialog::FindNetArt(VideoArtworkType type) { QString msg = tr("Searching for available artwork..."); createBusyDialog(msg); MetadataLookup *lookup = new MetadataLookup(); lookup->SetStep(kLookupSearch); lookup->SetType(kMetadataVideo); lookup->SetAutomatic(true); if (m_workingMetadata->GetSeason() > 0 || m_workingMetadata->GetEpisode() > 0) lookup->SetSubtype(kProbableTelevision); else if (m_workingMetadata->GetSubtitle().isEmpty()) lookup->SetSubtype(kProbableMovie); else lookup->SetSubtype(kUnknownVideo); lookup->SetData(qVariantFromValue<VideoArtworkType>(type)); 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_query->addLookup(lookup); }
void EditMetadataDialog::OnSearchListSelection(ArtworkInfo info, VideoArtworkType type) { QString msg = tr("Downloading selected artwork..."); createBusyDialog(msg); MetadataLookup *lookup = new MetadataLookup(); lookup->SetType(kMetadataVideo); if (m_workingMetadata->GetSeason() > 0 || m_workingMetadata->GetEpisode() > 0) lookup->SetSubtype(kProbableTelevision); else if (m_workingMetadata->GetSubtitle().isEmpty()) lookup->SetSubtype(kProbableMovie); else lookup->SetSubtype(kUnknownVideo); 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 GameUI::StartGameImageSet(MythGenericTree *node, QStringList coverart, QStringList fanart, QStringList screenshot) { if (!node) return; RomInfo *metadata = qVariantValue<RomInfo *>(node->GetData()); if (!metadata) return; ArtworkMap map; QString inetref = metadata->Inetref(); QString system = metadata->System(); QString title = metadata->Gamename(); if (metadata->Boxart().isEmpty() && coverart.size()) { ArtworkInfo info; info.url = coverart.takeAt(0).trimmed(); map.insert(kArtworkCoverart, info); } if (metadata->Fanart().isEmpty() && fanart.size()) { ArtworkInfo info; info.url = fanart.takeAt(0).trimmed(); map.insert(kArtworkFanart, info); } if (metadata->Screenshot().isEmpty() && screenshot.size()) { ArtworkInfo info; info.url = screenshot.takeAt(0).trimmed(); map.insert(kArtworkScreenshot, info); } MetadataLookup *lookup = new MetadataLookup(); lookup->SetTitle(metadata->Gamename()); lookup->SetSystem(metadata->System()); lookup->SetInetref(metadata->Inetref()); lookup->SetType(kMetadataGame); lookup->SetDownloads(map); lookup->SetData(qVariantFromValue(node)); m_imageDownload->addDownloads(lookup); }
void GameUI::gameSearch(MythGenericTree *node, bool automode) { if (!node) node = m_gameUITree->GetCurrentNode(); if (!node) return; RomInfo *metadata = qVariantValue<RomInfo *>(node->GetData()); if (!metadata) return; MetadataLookup *lookup = new MetadataLookup(); lookup->SetStep(kLookupSearch); lookup->SetType(kMetadataGame); lookup->SetData(qVariantFromValue(node)); if (automode) { lookup->SetAutomatic(true); } lookup->SetTitle(metadata->Gamename()); lookup->SetInetref(metadata->Inetref()); if (m_query->isRunning()) m_query->prependLookup(lookup); else m_query->addLookup(lookup); if (!automode) { //: %1 is the game name QString msg = tr("Fetching details for %1") .arg(metadata->Gamename()); createBusyDialog(msg); } }
// TODO // using the MetadataLookup object as both argument input, and parsed output, // is clumsy. break the inputs out into a separate object, and spawn a new // MetadataLookup object in ParseMetadataItem, rather than requiring an // existing one to reuse. MetadataLookupList MetaGrabberScript::RunGrabber(const QStringList &args, MetadataLookup *lookup, bool passseas) { MythSystemLegacy grabber(m_fullcommand, args, kMSStdOut); MetadataLookupList list; LOG(VB_GENERAL, LOG_INFO, QString("Running Grabber: %1 %2") .arg(m_fullcommand).arg(args.join(" "))); grabber.Run(); if (grabber.Wait() != GENERIC_EXIT_OK) return list; QByteArray result = grabber.ReadAll(); if (!result.isEmpty()) { QDomDocument doc; doc.setContent(result, true); QDomElement root = doc.documentElement(); QDomElement item = root.firstChildElement("item"); while (!item.isNull()) { MetadataLookup *tmp = ParseMetadataItem(item, lookup, passseas); tmp->SetInetref(QString("%1_%2").arg(m_command) .arg(tmp->GetInetref())); if (!tmp->GetCollectionref().isEmpty()) { tmp->SetCollectionref(QString("%1_%2").arg(m_command) .arg(tmp->GetCollectionref())); } list.append(tmp); // MetadataLookup is to be owned by the list tmp->DecrRef(); item = item.nextSiblingElement("item"); } } return list; }
void MetadataFactory::Lookup(VideoMetadata *metadata, bool automatic, bool getimages, bool allowgeneric) { if (!metadata) return; MetadataLookup *lookup = new MetadataLookup(); lookup->SetStep(kLookupSearch); lookup->SetType(kMetadataVideo); if (metadata->GetSeason() > 0 || metadata->GetEpisode() > 0) lookup->SetSubtype(kProbableTelevision); else if (metadata->GetSubtitle().isEmpty()) lookup->SetSubtype(kProbableMovie); else lookup->SetSubtype(kUnknownVideo); lookup->SetData(qVariantFromValue(metadata)); lookup->SetAutomatic(automatic); lookup->SetHandleImages(getimages); lookup->SetAllowGeneric(allowgeneric); lookup->SetHost(metadata->GetHost()); lookup->SetTitle(metadata->GetTitle()); lookup->SetSubtitle(metadata->GetSubtitle()); lookup->SetSeason(metadata->GetSeason()); lookup->SetEpisode(metadata->GetEpisode()); lookup->SetInetref(metadata->GetInetRef()); QString fntmp; if (metadata->GetHost().isEmpty()) fntmp = metadata->GetFilename(); else fntmp = generate_file_url("Videos", metadata->GetHost(), metadata->GetFilename()); lookup->SetFilename(fntmp); if (m_lookupthread->isRunning()) m_lookupthread->prependLookup(lookup); else m_lookupthread->addLookup(lookup); }