ResultItem::resultList getRSSArticles(const QString &feedtitle, ArticleType type) { ResultItem::resultList ret; MSqlQuery query(MSqlQuery::InitCon()); query.prepare("SELECT title, description, url, " "thumbnail, mediaURL, author, date, time, " "rating, filesize, player, playerargs, download, " "downloadargs, width, height, language, " "downloadable, countries, season, episode " "FROM internetcontentarticles " "WHERE feedtitle = :FEEDTITLE AND podcast = 1 " "AND type = :TYPE ORDER BY date DESC;"); query.bindValue(":FEEDTITLE", feedtitle); query.bindValue(":TYPE", type); if (!query.exec() || !query.isActive()) { MythDB::DBError("RSS find in db", query); return ret; } while (query.next()) { QString title = query.value(0).toString(); QString desc = query.value(1).toString(); QString URL = query.value(2).toString(); QString thumbnail = query.value(3).toString(); QString mediaURL = query.value(4).toString(); QString author = query.value(5).toString(); QDateTime date = query.value(6).toDateTime(); QString time = query.value(7).toString(); QString rating = query.value(8).toString(); off_t filesize = query.value(9).toULongLong(); QString player = query.value(10).toString(); QStringList playerargs = query.value(11).toString().split(" "); QString download = query.value(12).toString(); QStringList downloadargs = query.value(13).toString().split(" "); uint width = query.value(14).toUInt(); uint height = query.value(15).toUInt(); QString language = query.value(16).toString(); bool downloadable = query.value(17).toBool(); QStringList countries = query.value(18).toString().split(" "); uint season = query.value(19).toUInt(); uint episode = query.value(20).toUInt(); ret.append(new ResultItem(title, QString(), desc, URL, thumbnail, mediaURL, author, date, time, rating, filesize, player, playerargs, download, downloadargs, width, height, language, downloadable, countries, season, episode, false)); } return ret; }
void GrabberScript::parseDBTree(const QString &feedtitle, const QString &path, const QString &pathThumb, QDomElement& domElem, const ArticleType &type) { QMutexLocker locker(&m_lock); Parse parse; ResultItem::resultList articles; // File Handling QDomElement fileitem = domElem.firstChildElement("item"); while (!fileitem.isNull()) { // Fill the article list... articles.append(parse.ParseItem(fileitem)); fileitem = fileitem.nextSiblingElement("item"); } while (!articles.isEmpty()) { // Insert the articles in the DB... insertTreeArticleInDB(feedtitle, path, pathThumb, articles.takeFirst(), type); } // Directory Handling QDomElement diritem = domElem.firstChildElement("directory"); while (!diritem.isNull()) { QDomElement subfolder = diritem; QString dirname = diritem.attribute("name"); QString dirthumb = diritem.attribute("thumbnail"); dirname.replace("/", "|"); QString pathToUse; if (path.isEmpty()) pathToUse = dirname; else pathToUse = QString("%1/%2").arg(path).arg(dirname); parseDBTree(feedtitle, pathToUse, dirthumb, subfolder, type); diritem = diritem.nextSiblingElement("directory"); } }