Change search limit

This commit is contained in:
Jonas Kvinge 2018-09-01 22:21:45 +02:00
parent cd0ee282c6
commit dcae67ac7b
2 changed files with 12 additions and 10 deletions

View File

@ -24,6 +24,7 @@
#include <functional> #include <functional>
#include <QObject> #include <QObject>
#include <QByteArray>
#include <QList> #include <QList>
#include <QVariant> #include <QVariant>
#include <QString> #include <QString>
@ -36,28 +37,26 @@
#include "core/closure.h" #include "core/closure.h"
#include "core/network.h" #include "core/network.h"
#include "core/logging.h"
#include "albumcoverfetcher.h" #include "albumcoverfetcher.h"
#include "coverprovider.h" #include "coverprovider.h"
#include "musicbrainzcoverprovider.h" #include "musicbrainzcoverprovider.h"
using std::count_if;
using std::mem_fun; using std::mem_fun;
namespace { const char *MusicbrainzCoverProvider::kReleaseSearchUrl = "https://musicbrainz.org/ws/2/release/";
const char *MusicbrainzCoverProvider::kAlbumCoverUrl = "https://coverartarchive.org/release/%1/front";
static const char *kReleaseSearchUrl = "https://musicbrainz.org/ws/2/release/";
static const char *kAlbumCoverUrl = "https://coverartarchive.org/release/%1/front";
} // namespace
MusicbrainzCoverProvider::MusicbrainzCoverProvider(QObject *parent): CoverProvider("MusicBrainz", true, parent), network_(new NetworkAccessManager(this)) {} MusicbrainzCoverProvider::MusicbrainzCoverProvider(QObject *parent): CoverProvider("MusicBrainz", true, parent), network_(new NetworkAccessManager(this)) {}
bool MusicbrainzCoverProvider::StartSearch(const QString &artist, const QString &album, int id) { bool MusicbrainzCoverProvider::StartSearch(const QString &artist, const QString &album, int id) {
// Find release information.
QUrl url(kReleaseSearchUrl);
QString query = QString("release:\"%1\" AND artist:\"%2\"").arg(album.trimmed().replace('"', "\\\"")).arg(artist.trimmed().replace('"', "\\\"")); QString query = QString("release:\"%1\" AND artist:\"%2\"").arg(album.trimmed().replace('"', "\\\"")).arg(artist.trimmed().replace('"', "\\\""));
QUrlQuery url_query; QUrlQuery url_query;
url_query.addQueryItem("query", query); url_query.addQueryItem("query", query);
url_query.addQueryItem("limit", "5"); url_query.addQueryItem("limit", "15");
QUrl url(kReleaseSearchUrl);
url.setQuery(url_query); url.setQuery(url_query);
QNetworkRequest request(url); QNetworkRequest request(url);
@ -75,7 +74,9 @@ void MusicbrainzCoverProvider::ReleaseSearchFinished(QNetworkReply *reply, int i
QList<QString> releases; QList<QString> releases;
QXmlStreamReader reader(reply); QByteArray data(reply->readAll());
//qLog(Debug) << data;
QXmlStreamReader reader(data);
while (!reader.atEnd()) { while (!reader.atEnd()) {
QXmlStreamReader::TokenType type = reader.readNext(); QXmlStreamReader::TokenType type = reader.readNext();
if (type == QXmlStreamReader::StartElement && reader.name() == "release") { if (type == QXmlStreamReader::StartElement && reader.name() == "release") {

View File

@ -39,7 +39,6 @@ class MusicbrainzCoverProvider : public CoverProvider {
public: public:
explicit MusicbrainzCoverProvider(QObject *parent = nullptr); explicit MusicbrainzCoverProvider(QObject *parent = nullptr);
// CoverProvider
virtual bool StartSearch(const QString &artist, const QString &album, int id); virtual bool StartSearch(const QString &artist, const QString &album, int id);
virtual void CancelSearch(int id); virtual void CancelSearch(int id);
@ -48,6 +47,8 @@ class MusicbrainzCoverProvider : public CoverProvider {
void ImageCheckFinished(int id); void ImageCheckFinished(int id);
private: private:
static const char *kReleaseSearchUrl;
static const char *kAlbumCoverUrl;
QNetworkAccessManager *network_; QNetworkAccessManager *network_;
QMultiMap<int, QNetworkReply *> image_checks_; QMultiMap<int, QNetworkReply *> image_checks_;
QMap<int, QString> cover_names_; QMap<int, QString> cover_names_;