Пример #1
0
void DlnaYouTubeVideo::setUrl(const QUrl &url)
{
    m_videoUrlInProgress = false;

    QRegularExpression youtubeUrl("^http.*watch\\?v=(.*)$");
    QRegularExpressionMatch match = youtubeUrl.match(url.toString());
    if (match.hasMatch())
    {
        m_url = url;
        m_videoUrlInProgress = true;
        QString videoId = match.captured(1);
        emit getVideoUrl(videoId);
    }
    else
    {
        qWarning() << "ERROR, invalid URL" << url;
    }
}
Пример #2
0
void YoutubeSearchClient::search(QString query)
{
    QUrl url("https://www.googleapis.com/youtube/v3/search");
    QUrlQuery urlQuery;
    urlQuery.addQueryItem("q", query);
    urlQuery.addQueryItem("part","snippet");
    urlQuery.addQueryItem("type","video");
    urlQuery.addQueryItem("key","AIzaSyCKUqjCWD_DZa2amJUVLg8hKYEheB5IOLI");
    urlQuery.addQueryItem("maxResults","50");
    url.setQuery(urlQuery);

    QNetworkRequest request(url);
    QNetworkReply *response = m_mng.get(request);

    QObject::connect(response, &QNetworkReply::finished, [=](){
        QUrl youtubeUrl("https://www.youtube.com/watch");
        QJsonDocument doc = QJsonDocument::fromJson(response->readAll());
        response->deleteLater();
        auto items = doc.object()["items"].toArray();
        QVariantList results;
        for(const auto &element: items) {
            auto object = element.toObject();
            QString id = object["id"].toObject()["videoId"].toString();
            QString title = object["snippet"].toObject()["title"].toString();
            QString thumb = object["snippet"].toObject()["thumbnails"].toObject()["medium"].toObject()["url"].toString();

            QUrlQuery urlQuery;

            urlQuery.addQueryItem("v", id);
            youtubeUrl.setQuery(urlQuery);

            QVariant result;
            result.setValue(new SearchResult(this, youtubeUrl.toDisplayString(), title, thumb));

            results << result;
        }
        emit searchResultReady(query, results);
    });
}