1 #include "yt3listparser.h"
5 YT3ListParser::YT3ListParser(const QByteArray &bytes) {
6 QJsonDocument doc = QJsonDocument::fromJson(bytes);
7 QJsonObject obj = doc.object();
9 nextPageToken = obj[QLatin1String("nextPageToken")].toString();
11 const QJsonArray items = obj[QLatin1String("items")].toArray();
12 videos.reserve(items.size());
13 for (const QJsonValue &v : items) {
14 QJsonObject item = v.toObject();
19 void YT3ListParser::parseItem(const QJsonObject &item) {
20 Video *video = new Video();
22 QJsonValue id = item[QLatin1String("id")];
24 video->setId(id.toString());
26 QString videoId = id.toObject()[QLatin1String("videoId")].toString();
27 video->setId(videoId);
30 QJsonObject snippet = item[QLatin1String("snippet")].toObject();
32 bool isLiveBroadcastContent =
33 snippet[QLatin1String("liveBroadcastContent")].toString() != QLatin1String("none");
34 if (isLiveBroadcastContent) {
39 QString publishedAt = snippet[QLatin1String("publishedAt")].toString();
40 QDateTime publishedDateTime = QDateTime::fromString(publishedAt, Qt::ISODate);
41 video->setPublished(publishedDateTime);
43 video->setChannelId(snippet[QLatin1String("channelId")].toString());
45 video->setTitle(snippet[QLatin1String("title")].toString());
46 video->setDescription(snippet[QLatin1String("description")].toString());
48 QJsonObject thumbnails = snippet[QLatin1String("thumbnails")].toObject();
49 QLatin1String url("url");
50 video->setThumbnailUrl(thumbnails[QLatin1String("medium")].toObject()[url].toString());
51 video->setMediumThumbnailUrl(thumbnails[QLatin1String("high")].toObject()[url].toString());
52 video->setLargeThumbnailUrl(thumbnails[QLatin1String("standard")].toObject()[url].toString());
54 video->setChannelTitle(snippet[QLatin1String("channelTitle")].toString());
56 // These are only for "videos" requests
58 QJsonValue contentDetails = item[QLatin1String("contentDetails")];
59 if (contentDetails.isObject()) {
60 QString isoPeriod = contentDetails.toObject()[QLatin1String("duration")].toString();
61 int duration = DataUtils::parseIsoPeriod(isoPeriod);
62 video->setDuration(duration);
65 QJsonValue statistics = item[QLatin1String("statistics")];
66 if (statistics.isObject()) {
67 int viewCount = statistics.toObject()[QLatin1String("viewCount")].toString().toInt();
68 video->setViewCount(viewCount);