Extend the QVariantMap parsing to Gelbooru data
This commit is contained in:
parent
0ee1d034c7
commit
dc6236f00c
2 changed files with 70 additions and 20 deletions
|
@ -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()
|
||||
|
|
|
@ -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 &);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue