void dumpAllLookups(RetsMetadata * metadata, MetadataResource * resource) { string resourceName = resource->GetResourceID(); MetadataLookupList classes = metadata->GetAllLookups(resourceName); MetadataLookupList::iterator i; for (i = classes.begin(); i != classes.end(); i++) { MetadataLookup * lookup = *i; cout << "Resource name: " << resourceName << " [" << resource->GetStandardName() << "]" << endl; cout << "Lookup name: " << lookup->GetLookupName() << " (" << lookup->GetVisibleName() << ")"; if (!lookup->GetMetadataEntryID().empty()) { cout << " MetadataEntryID: " << lookup->GetMetadataEntryID(); } cout << endl; dumpAllLookupTypes(metadata, lookup); cout << endl; } }
bool MetadataDownload::findBestMatch(MetadataLookupList list, QString originaltitle) { QStringList titles; // Build a list of all the titles for (MetadataLookupList::const_iterator i = list.begin(); i != list.end(); ++i) { titles.append((*i)->GetTitle()); } // Apply Levenshtein distance algorithm to determine closest match QString bestTitle = nearestName(originaltitle, titles); // If no "best" was chosen, give up. if (bestTitle.isEmpty()) { LOG(VB_GENERAL, LOG_ERR, QString("No adequate match or multiple " "matches found for %1. Update manually.") .arg(originaltitle)); return false; } LOG(VB_GENERAL, LOG_INFO, QString("Best Title Match For %1: %2") .arg(originaltitle).arg(bestTitle)); // Grab the one item that matches the besttitle (IMPERFECT) for (MetadataLookupList::const_iterator i = list.begin(); i != list.end(); ++i) { if ((*i)->GetTitle() == bestTitle) { MetadataLookup *newlookup = (*i); newlookup->SetStep(kLookupData); prependLookup(newlookup); return true; } } return false; }
QDomDocument CreateMetadataXML(MetadataLookupList list) { QDomDocument doc("MythMetadataXML"); QDomElement root = doc.createElement("metadata"); doc.appendChild(root); for (MetadataLookupList::const_iterator i = list.begin(); i != list.end(); ++i) { CreateMetadataXMLItem(*i, root, doc); } return doc; }