-
Notifications
You must be signed in to change notification settings - Fork 0
/
entryfetch.h
100 lines (86 loc) · 2.34 KB
/
entryfetch.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#ifndef ENTRYFETCH_H
#define ENTRYFETCH_H
#include <QObject>
#include <QNetworkAccessManager>
#include <QPointer>
#include <QNetworkReply>
#include <QRegularExpression>
#define COMPOS_PATH "/home/sandsmark/tg/entries18/"
struct DownloadJob {
QUrl url;
QString filePath;
};
struct Entry {
QUrl url;
QString fileExtension;
QString filetype;
QString compoName;
QString author;
QString entryName;
bool isValid() {
if (!url.isValid()) {
qWarning() << "invalid url" << url;
return false;
}
if (fileExtension.isEmpty()) {
qWarning() << "empty file extension";
return false;
}
if (filetype.isEmpty()) {
qWarning() << "empty file type";
return false;
}
if (compoName.isEmpty()) {
qWarning() << "empty compo name";
return false;
}
if (author.isEmpty()) {
qWarning() << "empty author";
return false;
}
if (entryName.isEmpty()) {
qWarning() << "empty entry name";
return false;
}
return true;
}
QString filePath() {
QString ret(entryName + " by " + author);
ret.replace(QRegularExpression("\\W"), " ");
ret = ret.simplified();
ret.replace(" ", "_");
ret += "." + fileExtension;
// ret.replace("/", "_");
return COMPOS_PATH + compoName + "/" + ret;
// return compoName + "/" + entryName.replace(" ", ".") + ".2017." + compoName + "-" + author.replace(" ", ".") + "." + fileExtension;
}
};
struct Compo {
QString name;
QString id;
QString genre;
bool isValid() { return !name.isEmpty() && !id.isEmpty() && !genre.isEmpty(); }
};
class EntryFetch : public QObject
{
Q_OBJECT
public:
explicit EntryFetch(QObject *parent = 0);
virtual ~EntryFetch();
signals:
public slots:
void fetchCompos();
private slots:
void onComposFetched();
void fetchNextCompo();
void onCompoFetched(QNetworkReply *entryReply, const Compo compo);
void fetchNextEntry();
private:
QNetworkAccessManager m_nam;
QPointer<QNetworkReply> m_entriesReply;
QList<Compo> m_compos;
QList<Entry> m_entries;
// QMap<QString, Compo> m_compos;
QMultiMap<QString, QString> m_extensions;
};
#endif // ENTRYFETCH_H