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