X-Git-Url: https://git.sur5r.net/?p=minitube;a=blobdiff_plain;f=src%2Fytjs%2Fytjssearch.cpp;h=b6413e31b69296a2c0f9927e05ce6a755367afc6;hp=c5a5031ff1a87adb511333748d78a26f1dcf09cd;hb=be5ee6ccd9b29c9d5ca59e4a3d4adf53bac6bc8d;hpb=92723c9ba6a5553e1b136692d99f3bf76b9d5d1c diff --git a/src/ytjs/ytjssearch.cpp b/src/ytjs/ytjssearch.cpp index c5a5031..b6413e3 100644 --- a/src/ytjs/ytjssearch.cpp +++ b/src/ytjs/ytjssearch.cpp @@ -31,6 +31,28 @@ QString parseChannelId(const QString &channelUrl) { return QString(); } +QDateTime parsePublishedText(const QString &s) { + int num = 0; + const auto parts = s.splitRef(' '); + for (const auto &part : parts) { + num = part.toInt(); + if (num > 0) break; + } + if (num == 0) return QDateTime(); + + auto now = QDateTime::currentDateTimeUtc(); + if (s.contains("day")) { + return now.addDays(-num); + } else if (s.contains("week")) { + return now.addDays(-num * 7); + } else if (s.contains("month")) { + return now.addMonths(-num); + } else if (s.contains("year")) { + return now.addDays(-num * 365); + } + return QDateTime(); +} + } // namespace YTJSSearch::YTJSSearch(SearchParams *searchParams, QObject *parent) @@ -141,6 +163,12 @@ void YTJSSearch::loadVideos(int max, int startIndex) { auto obj = doc.object(); + /* + QFile jsonFile("/Users/flavio/test.json"); + jsonFile.open(QFile::WriteOnly); + jsonFile.write(doc.toJson()); + */ + nextpageRef = obj["nextpageRef"].toString(); const auto items = obj["items"].toArray(); @@ -171,6 +199,9 @@ void YTJSSearch::loadVideos(int max, int startIndex) { int duration = parseDuration(i["duration"].toString()); video->setDuration(duration); + auto published = parsePublishedText(i["uploaded_at"].toString()); + if (published.isValid()) video->setPublished(published); + auto authorObj = i["author"]; QString channelName = authorObj["name"].toString(); video->setChannelTitle(channelName);