PeopleMap ParsePeople(QDomElement people) { PeopleMap ret; QDomElement person = people.firstChildElement("person"); if (!person.isNull()) { while (!person.isNull()) { if (person.hasAttribute("job")) { QString jobstring = person.attribute("job"); PeopleType type; if (jobstring.toLower() == "actor") type = kPersonActor; else if (jobstring.toLower() == "author") type = kPersonAuthor; else if (jobstring.toLower() == "producer") type = kPersonProducer; else if (jobstring.toLower() == "executive producer") type = kPersonExecProducer; else if (jobstring.toLower() == "director") type = kPersonDirector; else if (jobstring.toLower() == "cinematographer") type = kPersonCinematographer; else if (jobstring.toLower() == "composer") type = kPersonComposer; else if (jobstring.toLower() == "editor") type = kPersonEditor; else if (jobstring.toLower() == "casting") type = kPersonCastingDirector; else if (jobstring.toLower() == "artist") type = kPersonArtist; else if (jobstring.toLower() == "album artist") type = kPersonAlbumArtist; else if (jobstring.toLower() == "guest star") type = kPersonGuestStar; else type = kPersonActor; PersonInfo info; if (person.hasAttribute("name")) info.name = person.attribute("name"); if (person.hasAttribute("character")) info.role = person.attribute("character"); if (person.hasAttribute("thumb")) info.thumbnail = person.attribute("thumb"); if (person.hasAttribute("url")) info.url = person.attribute("url"); ret.insert(type,info); } person = person.nextSiblingElement("person"); } } return ret; }
PeopleMap ParsePeople(QDomElement people) { PeopleMap ret; QDomElement person = people.firstChildElement("person"); if (!person.isNull()) { while (!person.isNull()) { if (person.hasAttribute("job")) { QString jobstring = person.attribute("job"); PeopleType type; if (jobstring.toLower() == "actor") type = ACTOR; else if (jobstring.toLower() == "author") type = AUTHOR; else if (jobstring.toLower() == "producer") type = PRODUCER; else if (jobstring.toLower() == "executive producer") type = EXECPRODUCER; else if (jobstring.toLower() == "director") type = DIRECTOR; else if (jobstring.toLower() == "cinematographer") type = CINEMATOGRAPHER; else if (jobstring.toLower() == "composer") type = COMPOSER; else if (jobstring.toLower() == "editor") type = EDITOR; else if (jobstring.toLower() == "casting") type = CASTINGDIRECTOR; else if (jobstring.toLower() == "artist") type = ARTIST; else if (jobstring.toLower() == "album artist") type = ALBUMARTIST; else if (jobstring.toLower() == "guest star") type = GUESTSTAR; else type = ACTOR; PersonInfo info; if (person.hasAttribute("name")) info.name = person.attribute("name"); if (person.hasAttribute("character")) info.role = person.attribute("character"); if (person.hasAttribute("thumb")) info.thumbnail = person.attribute("thumb"); if (person.hasAttribute("url")) info.url = person.attribute("url"); ret.insert(type,info); } person = person.nextSiblingElement("person"); } } return ret; }
MetadataLookup* ParseMetadataMovieNFO(const QDomElement& item, MetadataLookup *lookup) { if (!lookup) return new MetadataLookup(); uint year = 0, runtime = 0, runtimesecs = 0, season = 0, episode = 0; QString title, subtitle, tagline, description, inetref, trailer, certification; float userrating = 0; QDate releasedate; QStringList categories; PeopleMap people; ArtworkMap artwork; // Get the easy parses QString titletmp; if (item.tagName() == "movie") title = Parse::UnescapeHTML(item.firstChildElement("title").text()); else if (item.tagName() == "episodedetails") subtitle = Parse::UnescapeHTML(item.firstChildElement("title").text()); userrating = item.firstChildElement("rating").text().toFloat(); year = item.firstChildElement("year").text().toUInt(); season = item.firstChildElement("season").text().toUInt(); episode = item.firstChildElement("episode").text().toUInt(); description = Parse::UnescapeHTML(item.firstChildElement("plot").text()); tagline = Parse::UnescapeHTML(item.firstChildElement("tagline").text()); inetref = item.firstChildElement("id").text(); trailer = item.firstChildElement("trailer").text(); certification = item.firstChildElement("mpaa").text(); categories.append(item.firstChildElement("genre").text()); QString tmpDate = item.firstChildElement("releasedate").text(); if (!tmpDate.isEmpty()) releasedate = QDate::fromString(tmpDate, "yyyy-MM-dd"); else if (year > 0) releasedate = QDate::fromString(QString::number(year), "yyyy"); runtime = item.firstChildElement("runtime").text() .remove(QRegExp("[A-Za-z]")) .trimmed().toUInt(); runtimesecs = runtime * 60; QDomElement actor = item.firstChildElement("actor"); if (!actor.isNull()) { while (!actor.isNull()) { PersonInfo info; info.name = actor.firstChildElement("name").text(); info.role = actor.firstChildElement("role").text(); info.thumbnail = actor.firstChildElement("thumb").text(); people.insert(kPersonActor, info); actor = actor.nextSiblingElement("actor"); } } QString director = item.firstChildElement("director").text(); if (!director.isEmpty()) { PersonInfo info; info.name = director; people.insert(kPersonDirector, info); } return new MetadataLookup(lookup->GetType(), lookup->GetSubtype(), lookup->GetData(), lookup->GetStep(), lookup->GetAutomatic(), lookup->GetHandleImages(), lookup->GetAllowOverwrites(), lookup->GetAllowGeneric(), lookup->GetPreferDVDOrdering(), lookup->GetHost(), lookup->GetFilename(), title, categories, userrating, subtitle, tagline, description, season, episode, certification, year, releasedate, runtime, runtimesecs, inetref, people, trailer, artwork, DownloadMap()); }