QDomDocument CreateMetadataXML(ProgramInfo *pginfo) { QDomDocument doc("MythMetadataXML"); MetadataLookup *lookup = LookupFromProgramInfo(pginfo); if (lookup) doc = CreateMetadataXML(lookup); lookup->DecrRef(); lookup = nullptr; return doc; }
// 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; }