-
Notifications
You must be signed in to change notification settings - Fork 1
/
youtubeapimanager.h
119 lines (87 loc) · 3.13 KB
/
youtubeapimanager.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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
#ifndef YOUTUBEAPIMANAGER_H
#define YOUTUBEAPIMANAGER_H
#include <QObject>
#include <QNetworkReply>
class QQmlEngine;
class QJSEngine;
class YoutubeAPIManagerPrivate;
class YoutubeAPIManager : public QObject
{
Q_OBJECT
Q_ENUMS(OrderFilter)
Q_ENUMS(DurationFilter)
public:
enum OrderFilter
{
ORDER_VIEWCOUNT,
ORDER_RELEVANCE,
ORDER_DATE,
ORDER_RATING
};
enum DurationFilter
{
DURATION_ANY,
DURATION_SHORT,
DURATION_MEDIUM,
DURATION_LONG
};
static YoutubeAPIManager* singleton();
static void declareQML();
void setAPIKey(const QString& key);
void shutdown();
void removeTimer(QNetworkReply *reply);
Q_INVOKABLE void setMusicOnlyFilter(const bool& onlyMusic);
Q_INVOKABLE void setOrderFilter(OrderFilter orderFilter);
Q_INVOKABLE void setDurationFilter(DurationFilter durationFilter);
signals:
void searchSuccess(const QString& documentString);
void searchFailed();
void suggestionSuccess(const QString& id, const QString& title, const QString& thumbnail, const QString& duration);
void suggestionFailed();
void videoUrlFailed(const QString& id);
void videoUrlSuccess(const QString& id, const QString& url);
void videoDurationFailed();
void videoDurationSuccess(const QString& id, const QString& duration);
void youtubeDLUpdateFailed();
void youtubeDLUpdateSuccess();
public slots:
void ignoreSSLErrors(QNetworkReply *reply, QList<QSslError> errors);
Q_INVOKABLE void search(const QString& search, const QString& nextPageToken = "");
Q_INVOKABLE void suggestion(const QString& id, const QStringList excludeSuggestionIDs);
Q_INVOKABLE void videoUrl(const QString& videoID);
Q_INVOKABLE void videoDuration(const QString& videoID);
Q_INVOKABLE void updateYoutubeDL();
private slots:
void searchFinished();
void searchError(QNetworkReply::NetworkError error);
void searchTimeout();
void searchVideosDuration(const QString& videosIDs);
void searchVideosDurationFinished();
void searchVideosDurationError(QNetworkReply::NetworkError error);
void searchVideosDurationTimeout();
void suggestionFinished();
void suggestionError(QNetworkReply::NetworkError error);
void suggestionTimeout();
void suggestionVideoDuration(const QString& id, const QString &title, const QString &thumbnail);
void suggestionVideoDurationFinished();
void suggestionVideoDurationError(QNetworkReply::NetworkError error);
void suggestionVideoDurationTimeout();
void videoUrlFinished();
void videoUrlError();
void videoDurationFinished();
void youtubeDLUpdateFinished();
void youtubeDLUpdateError();
private:
explicit YoutubeAPIManager(QObject *parent = 0);
virtual ~YoutubeAPIManager();
static YoutubeAPIManager *_singleton;
Q_DECLARE_PRIVATE(YoutubeAPIManager)
YoutubeAPIManagerPrivate * const d_ptr;
};
static QObject *qmlYoutubeAPIManagerSingleton(QQmlEngine *engine, QJSEngine *scriptEngine)
{
Q_UNUSED(engine)
Q_UNUSED(scriptEngine)
return YoutubeAPIManager::singleton();
}
#endif // YOUTUBEAPIMANAGER_H