Extend the QVariantMap parsing to Gelbooru data

This commit is contained in:
Luca Beltrame 2015-08-27 19:36:00 +02:00
commit dc6236f00c
2 changed files with 70 additions and 20 deletions

View file

@ -46,7 +46,41 @@ void DanbooruPost::parseDanbooruDonmai(const QVariantMap &postData) {
m_size = postData.value("file_size").toInt();
m_rating = RATING_MAP.value(postData.value("rating").toString());
m_sampleUrl = postData.value("large_file_url").toUrl();
}
void DanbooruPost::parseDanbooruDonmai(const QXmlStreamAttributes &postData) {
m_tags = QSet<QString>::fromList(postData.value("tag_string").toString().split(' '));
m_id = postData.value("id").toString().toInt();
m_height = postData.value("image_height").toString().toInt();
m_width = postData.value("image_width").toString().toInt();
m_url = QUrl::fromUserInput(postData.value("file_url").toString());
m_thumbnailUrl = QUrl::fromUserInput(postData.value("preview_file_url").toString());
m_size = postData.value("file_size").toInt();
m_rating = RATING_MAP.value(postData.value("rating").toString());
m_sampleUrl = QUrl::fromUserInput(postData.value("large_file_url").toString());
// fixup for wrong URLs in danbooru input
m_url.setScheme("http");
m_thumbnailUrl.setScheme("http");
m_sampleUrl.setScheme("http");
}
void DanbooruPost::parseDanbooruKonachan(const QXmlStreamAttributes &postData) {
m_tags = QSet<QString>::fromList(postData.value("tags").toString().split(' '));
m_id = postData.value("id").toString().toInt();
m_height = postData.value("height").toString().toInt();
m_width = postData.value("width").toString().toInt();
m_url = QUrl::fromUserInput(postData.value("file_url").toString());
m_thumbnailUrl = QUrl::fromUserInput(postData.value("preview_url").toString());
m_sampleUrl = QUrl::fromUserInput(postData.value("sample_url").toString());
m_size = postData.value("file_size").toString().toInt();
m_rating = RATING_MAP.value(postData.value("rating").toString());
}
void DanbooruPost::parseDanbooruKonachan(const QVariantMap &postData) {
@ -63,6 +97,19 @@ void DanbooruPost::parseDanbooruKonachan(const QVariantMap &postData) {
m_sampleUrl = postData.value("sample_url").toUrl();
}
void DanbooruPost::parseGelbooru(const QVariantMap &postData) {
m_tags = QSet<QString>::fromList(postData.value("tags").toString().split(' '));
m_id = postData.value("id").toString().toInt();
m_height = postData.value("height").toString().toInt();
m_width = postData.value("width").toString().toInt();
m_url = postData.value("file_url").toUrl();
m_thumbnailUrl = postData.value("preview_url").toUrl();
m_size = 0; // No size information
m_rating = RATING_MAP.value(postData.value("rating").toString());
m_sampleUrl = postData.value("sample_url").toUrl();
}
DanbooruPost::DanbooruPost(QObject *parent): QObject(parent)
{
m_pixmap = QPixmap();
@ -88,6 +135,9 @@ DanbooruPost::DanbooruPost(QVariantMap postData,Danbooru::ApiType apiType, QPixm
case ApiType::OriginalDanbooru:
parseDanbooruDonmai(postData);
break;
case ApiType::Gelbooru:
parseGelbooru(postData);
break;
default:
parseDanbooruKonachan(postData);
break;
@ -115,22 +165,22 @@ DanbooruPost::DanbooruPost(QVariantMap postData,Danbooru::ApiType apiType, QPixm
//
// }
DanbooruPost::DanbooruPost(QXmlStreamAttributes &postData, QPixmap pixmap, QObject *parent):
DanbooruPost::DanbooruPost(QXmlStreamAttributes &postData, Danbooru::ApiType apiType, QPixmap pixmap, QObject *parent):
QObject(parent),
m_pixmap(pixmap)
{
m_tags = QSet<QString>::fromList(postData.value("tags").toString().split(' '));
m_id = postData.value("id").toString().toInt();
m_height = postData.value("height").toString().toInt();
m_width = postData.value("width").toString().toInt();
m_url = QUrl::fromUserInput(postData.value("file_url").toString());
m_thumbnailUrl = QUrl::fromUserInput(postData.value("preview_url").toString());
m_sampleUrl = QUrl::fromUserInput(postData.value("sample_url").toString());
m_size = postData.value("file_size").toString().toInt();
m_rating = RATING_MAP.value(postData.value("rating").toString());
switch(apiType) {
case ApiType::KonachanDanbooru:
parseDanbooruKonachan(postData);
break;
case ApiType::OriginalDanbooru:
parseDanbooruDonmai(postData);
break;
default:
parseDanbooruKonachan(postData);
break;
}
}
DanbooruPost::~DanbooruPost()