]> git.sur5r.net Git - minitube/blob - src/yt/invidious/ivchannel.cpp
New upstream version 3.8
[minitube] / src / yt / invidious / ivchannel.cpp
1 #include "ivchannel.h"
2
3 #include "http.h"
4 #include "httputils.h"
5 #include "invidious.h"
6
7 IVChannel::IVChannel(const QString &id, QObject *parent) : QObject(parent) {
8     QUrl url = Invidious::instance().method("channels/");
9     if (url.isEmpty()) {
10         emit error("No baseUrl");
11         return;
12     }
13
14     url.setPath(url.path() + id);
15
16     auto *reply = Invidious::cachedHttp().get(url);
17     connect(reply, &HttpReply::data, this, [this](auto data) {
18         QJsonDocument doc = QJsonDocument::fromJson(data);
19         const QJsonObject obj = doc.object();
20
21         displayName = obj["author"].toString();
22         description = obj["descriptionHtml"].toString();
23
24         const auto thumbnails = obj["authorThumbnails"].toArray();
25         for (const auto &thumbnail : thumbnails) {
26             if (thumbnail["width"].toInt() >= 300) {
27                 thumbnailUrl = thumbnail["url"].toString();
28                 break;
29             }
30         }
31         qDebug() << displayName << description << thumbnailUrl;
32
33         emit loaded();
34     });
35     connect(reply, &HttpReply::error, this, [this](auto message) {
36         Invidious::instance().initServers();
37         emit error(message);
38     });
39 }