Extend the QVariantMap parsing to Gelbooru data

This commit is contained in:
Luca Beltrame 2015-08-27 19:36:00 +02:00
parent 0ee1d034c7
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()

View file

@ -114,8 +114,10 @@ private:
static const QMap< QString, Rating > initRatingMap();
void parseDanbooruKonachan(const QVariantMap &postData);
void parseDanbooruKonachan(const QXmlStreamAttributes &postData);
void parseDanbooruDonmai(const QVariantMap &postData);
void parseGelbooru(QXmlStreamAttributes &postData);
void parseDanbooruDonmai(const QXmlStreamAttributes &postData);
void parseGelbooru(const QVariantMap &postData);
public:
@ -132,9 +134,10 @@ public:
* @param parent A pointer to the parent QObject.
*
**/
/*
explicit DanbooruPost(QVariantMap postData, QPixmap pixmap = QPixmap(),
QObject *parent = 0);*/
explicit DanbooruPost(QVariantMap postData, Danbooru::ApiType apiType=ApiType::KonachanDanbooru,
QPixmap pixmap = QPixmap(),
QObject *parent=0);
explicit DanbooruPost(QObject *parent = 0);
@ -152,12 +155,9 @@ public:
* @param parent A pointer to the parent QObject.
*
**/
explicit DanbooruPost(QXmlStreamAttributes &postData,
explicit DanbooruPost(QXmlStreamAttributes &postData, Danbooru::ApiType apiType=ApiType::KonachanDanbooru,
QPixmap pixmap = QPixmap(), QObject *parent = 0);
explicit DanbooruPost(QVariantMap postData, Danbooru::ApiType apiType=ApiType::KonachanDanbooru,
QPixmap pixmap = QPixmap(),
QObject *parent=0);
bool operator==(const DanbooruPost &);