From kde-commits Fri Jan 01 01:56:37 2016 From: Aaron Seigo Date: Fri, 01 Jan 2016 01:56:37 +0000 To: kde-commits Subject: [sprinter-plugins] youtube: youtube works again, though pagination is horribly broken Message-Id: X-MARC-Message: https://marc.info/?l=kde-commits&m=145161341213160 Git commit 70c12e609c2595cffc06e21c7108acbe6302a562 by Aaron Seigo. Committed on 01/01/2016 at 01:55. Pushed by aseigo into branch 'master'. youtube works again, though pagination is horribly broken need to figure out how to deal with / map the next/prev page tokens will do so if sprinter actually gets used. M +13 -33 youtube/youtube.cpp http://commits.kde.org/sprinter-plugins/70c12e609c2595cffc06e21c7108acbe630= 2a562 diff --git a/youtube/youtube.cpp b/youtube/youtube.cpp index 8cfb77c..e0f8460 100644 --- a/youtube/youtube.cpp +++ b/youtube/youtube.cpp @@ -33,8 +33,8 @@ = static const QString shortTrigger =3D QObject::tr("yt "); static const QString longTrigger =3D QObject::tr("video "); -// three vars are page size, offset and query (1, 2, 3, 4 resp) -static const QString url =3D "http://gdata.youtube.com/feeds/api/videos?ma= x-results=3D%1&start-index=3D%2&alt=3Djson&q=3D%4"; +static const QString url =3D "https://www.googleapis.com/youtube/v3/search= ?part=3Dsnippet&key=3DAIzaSyB_g6odwktie-uqTPQui9Bt9RnbcvkAeGE&maxResults=3D= %1&q=3D%2"; +static const QString s_baseUrl =3D "https://www.youtube.com/watch?v=3D"; = YoutubeSessionData::YoutubeSessionData(Sprinter::Runner *runner) : Sprinter::RunnerSessionData(runner), @@ -71,8 +71,9 @@ void YoutubeSessionData::startQuery(const QString &query,= const Sprinter::QueryC } = QNetworkRequest request(url.arg(QString::number(resultsPageSize()), - QString::number(resultsOffset() + 1), +// QString::number(resultsOffset() + 1), query)); + qDebug() << "request!" << request.url(); QNetworkAccessManager *network =3D new QNetworkAccessManager(this); QNetworkReply *reply =3D network->get(request); connect(reply, SIGNAL(finished()), this, SLOT(queryFinished())); @@ -108,45 +109,24 @@ void YoutubeSessionData::queryFinished() QJsonObject obj =3D doc.object(); = QVector matches; - const QJsonArray entries =3D obj["feed"].toObject()["entry"].t= oArray(); - for (QJsonArray::const_iterator it =3D entries.begin(); - it !=3D entries.end(); - ++it) { + const QJsonArray entries =3D obj["items"].toArray(); + for (QJsonArray::const_iterator it =3D entries.begin(); it != =3D entries.end(); ++it) { const QJsonObject entry =3D (*it).toObject(); if (entry.isEmpty()) { continue; } = - const QJsonObject media =3D entry["media$group"].toObject(= ); - const QString title =3D media["media$title"].toObject()["$= t"].toString(); - const QString desc =3D entry["content"].toObject()["$t"].t= oString(); - int seconds =3D media["yt$duration"].toObject()["seconds"]= .toString().toInt(); - const QString author =3D entry["author"].toArray().first()= .toObject()["name"].toObject()["$t"].toString(); - const QString url =3D entry["link"].toArray().first().toOb= ject()["href"].toString(); - const QString thumbnailUrl =3D media["media$thumbnail"].to= Array().first().toObject()["url"].toString(); - - QString time; - if (seconds < 60) { - time =3D "00:" + QString(seconds > 9 ? "" : "0") + QSt= ring::number(seconds); - } else if (seconds < 60*60) { - int minutes =3D seconds / 60; - seconds =3D seconds % 60; - time =3D QString::number(minutes) + ":" + - (seconds > 9 ? "" : "0") + QString::number(seco= nds); - } else { - int minutes =3D seconds / 60; - int hours =3D minutes / 60; - minutes =3D minutes % 60; - seconds =3D seconds % 60; - time =3D QString::number(hours) + ":" + - (minutes > 9 ? "" : "0") + QString::number(minu= tes) + ":" + - (seconds > 9 ? "" : "0") + QString::number(seco= nds); - } + const QJsonObject media =3D entry["snippet"].toObject(); + const QString title =3D media["title"].toString(); + const QString desc =3D media["description"].toString(); + const QString author =3D media["channelTitle"].toString(); + const QString url =3D s_baseUrl + entry["id"].toObject()["= videoId"].toString(); + const QString thumbnailUrl =3D media["thumbnails"].toObjec= t()["high"].toObject()["url"].toString(); = // qDebug() << "=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D"; // qDebug() << title << seconds << time << desc << thumbna= ilUrl; Sprinter::QueryMatch match; - match.setTitle(tr("%1 (%2, %3)").arg(title, author, time)); + match.setTitle(tr("%1 (%2)").arg(title, author)); match.setText(desc); match.setType(Sprinter::QuerySession::VideoType); match.setSource(Sprinter::QuerySession::FromNetworkService= );