]> git.sur5r.net Git - minitube/blob - src/invidious/ivvideolist.cpp
New upstream version 3.5
[minitube] / src / invidious / ivvideolist.cpp
1 #include "ivvideolist.h"
2
3 #include "http.h"
4 #include "httputils.h"
5 #include "invidious.h"
6 #include "ivlistparser.h"
7 #include "video.h"
8
9 IVVideoList::IVVideoList(const QString &req, const QString &name, QObject *parent)
10     : VideoSource(parent), name(name), req(req) {}
11
12 void IVVideoList::loadVideos(int max, int startIndex) {
13     aborted = false;
14
15     QUrl url(Invidious::instance().baseUrl() + req);
16
17     auto *reply = Invidious::cachedHttp().get(url);
18     connect(reply, &HttpReply::data, this, [this](auto data) {
19         QJsonDocument doc = QJsonDocument::fromJson(data);
20         const QJsonArray items = doc.array();
21         IVListParser parser(items);
22         const QVector<Video *> &videos = parser.getVideos();
23         qDebug() << "CAOCAO" << req << name << videos.size();
24
25         emit gotVideos(videos);
26         emit finished(videos.size());
27     });
28     connect(reply, &HttpReply::error, this, [this](auto message) {
29         Invidious::instance().initServers();
30         emit error(message);
31     });
32 }
33
34 void IVVideoList::abort() {
35     aborted = true;
36 }