Import data from mtgjson's allsets.xml

* add multiverse id to cards.xml
* remove pictures urls from cards.xml
TBD:
* fix/clean oracle’s gui
* add support in cockatrice
This commit is contained in:
Fabio Bas
2014-06-16 00:27:33 +02:00
parent 0d3ec71e8f
commit f3a57d5506
5 changed files with 193 additions and 268 deletions

View File

@@ -1,44 +1,34 @@
#ifndef ORACLEIMPORTER_H
#define ORACLEIMPORTER_H
#include <carddatabase.h>
#include <QHttp>
#include <QMap>
class QBuffer;
class QXmlStreamReader;
#include <carddatabase.h>
class SetToDownload {
private:
QString shortName, longName, url;
QString shortName, longName;
bool import;
QVariant cards;
public:
const QString &getShortName() const { return shortName; }
const QString &getLongName() const { return longName; }
const QString &getUrl() const { return url; }
const QVariant &getCards() const { return cards; }
bool getImport() const { return import; }
void setImport(bool _import) { import = _import; }
SetToDownload(const QString &_shortName, const QString &_longName, const QString &_url, bool _import)
: shortName(_shortName), longName(_longName), url(_url), import(_import) { }
SetToDownload(const QString &_shortName, const QString &_longName, const QVariant &_cards, bool _import)
: shortName(_shortName), longName(_longName), cards(_cards), import(_import) { }
};
class OracleImporter : public CardDatabase {
Q_OBJECT
private:
QList<SetToDownload> allSets, setsToDownload;
QString pictureUrl, pictureUrlHq, pictureUrlSt, setUrl;
QList<SetToDownload> allSets;
QVariantMap setsMap;
QString dataDir;
int setIndex;
int reqId;
QBuffer *buffer;
QHttp *http;
QString getPictureUrl(QString url, int cardId, QString name, const QString &setName) const;
void downloadNextFile();
bool readSetsFromXml(QXmlStreamReader &xml);
CardInfo *addCard(const QString &setName, QString cardName, bool isToken, int cardId, const QString &cardCost, const QString &cardType, const QString &cardPT, int cardLoyalty, const QStringList &cardText);
private slots:
void httpRequestFinished(int requestId, bool error);
void readResponseHeader(const QHttpResponseHeader &responseHeader);
signals:
void setIndexChanged(int cardsImported, int setIndex, const QString &nextSetName);
void dataReadProgress(int bytesRead, int totalBytes);
@@ -46,8 +36,8 @@ public:
OracleImporter(const QString &_dataDir, QObject *parent = 0);
bool readSetsFromByteArray(const QByteArray &data);
bool readSetsFromFile(const QString &fileName);
int startDownload();
int importTextSpoiler(CardSet *set, const QByteArray &data);
int startImport();
int importTextSpoiler(CardSet *set, const QVariant &data);
QList<SetToDownload> &getSets() { return allSets; }
const QString &getDataDir() const { return dataDir; }
};