Simplify generating queries in lyrics providers
This commit is contained in:
parent
057482a3e5
commit
aeb36e8665
|
@ -55,26 +55,15 @@ AuddLyricsProvider::AuddLyricsProvider(QObject *parent) : LyricsProvider("AudD",
|
||||||
|
|
||||||
bool AuddLyricsProvider::StartSearch(const QString &artist, const QString &album, const QString &title, quint64 id) {
|
bool AuddLyricsProvider::StartSearch(const QString &artist, const QString &album, const QString &title, quint64 id) {
|
||||||
|
|
||||||
QString search(artist + " " + title);
|
const ParamList params = ParamList() << Param("api_token", QByteArray::fromBase64(kAPITokenB64))
|
||||||
|
<< Param("q", QString(artist + " " + title));
|
||||||
typedef QPair<QString, QString> Arg;
|
|
||||||
typedef QList<Arg> ArgList;
|
|
||||||
|
|
||||||
typedef QPair<QByteArray, QByteArray> EncodedArg;
|
|
||||||
typedef QList<EncodedArg> EncodedArgList;
|
|
||||||
|
|
||||||
ArgList args = ArgList();
|
|
||||||
args.append(Arg("api_token", QByteArray::fromBase64(kAPITokenB64)));
|
|
||||||
args.append(Arg("q", search));
|
|
||||||
|
|
||||||
QUrlQuery url_query;
|
QUrlQuery url_query;
|
||||||
QUrl url(kUrlSearch);
|
for (const Param ¶m : params) {
|
||||||
|
url_query.addQueryItem(QUrl::toPercentEncoding(param.first), QUrl::toPercentEncoding(param.second));
|
||||||
for (const Arg &arg : args) {
|
|
||||||
EncodedArg encoded_arg(QUrl::toPercentEncoding(arg.first), QUrl::toPercentEncoding(arg.second));
|
|
||||||
url_query.addQueryItem(encoded_arg.first, encoded_arg.second);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QUrl url(kUrlSearch);
|
||||||
url.setQuery(url_query);
|
url.setQuery(url_query);
|
||||||
QNetworkReply *reply = network_->get(QNetworkRequest(url));
|
QNetworkReply *reply = network_->get(QNetworkRequest(url));
|
||||||
NewClosure(reply, SIGNAL(finished()), this, SLOT(HandleSearchReply(QNetworkReply*, quint64, QString, QString)), reply, id, artist, title);
|
NewClosure(reply, SIGNAL(finished()), this, SLOT(HandleSearchReply(QNetworkReply*, quint64, QString, QString)), reply, id, artist, title);
|
||||||
|
|
|
@ -47,27 +47,21 @@ ChartLyricsProvider::ChartLyricsProvider(QObject *parent) : LyricsProvider("Char
|
||||||
|
|
||||||
bool ChartLyricsProvider::StartSearch(const QString &artist, const QString &album, const QString &title, quint64 id) {
|
bool ChartLyricsProvider::StartSearch(const QString &artist, const QString &album, const QString &title, quint64 id) {
|
||||||
|
|
||||||
typedef QPair<QString, QString> Param;
|
const ParamList params = ParamList() << Param("artist", artist)
|
||||||
typedef QList<Param> ParamList;
|
<< Param("song", title);
|
||||||
|
|
||||||
typedef QPair<QByteArray, QByteArray> EncodedParam;
|
|
||||||
typedef QList<EncodedParam> EncodedParamList;
|
|
||||||
|
|
||||||
ParamList params = ParamList() << Param("artist", artist)
|
|
||||||
<< Param("song", title);
|
|
||||||
|
|
||||||
QUrlQuery url_query;
|
QUrlQuery url_query;
|
||||||
QUrl url(kUrlSearch);
|
|
||||||
|
|
||||||
for (const Param ¶m : params) {
|
for (const Param ¶m : params) {
|
||||||
EncodedParam encoded_param(QUrl::toPercentEncoding(param.first), QUrl::toPercentEncoding(param.second));
|
url_query.addQueryItem(QUrl::toPercentEncoding(param.first), QUrl::toPercentEncoding(param.second));
|
||||||
url_query.addQueryItem(encoded_param.first, encoded_param.second);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QUrl url(kUrlSearch);
|
||||||
url.setQuery(url_query);
|
url.setQuery(url_query);
|
||||||
QNetworkReply *reply = network_->get(QNetworkRequest(url));
|
QNetworkReply *reply = network_->get(QNetworkRequest(url));
|
||||||
NewClosure(reply, SIGNAL(finished()), this, SLOT(HandleSearchReply(QNetworkReply*, quint64, QString, QString)), reply, id, artist, title);
|
NewClosure(reply, SIGNAL(finished()), this, SLOT(HandleSearchReply(QNetworkReply*, quint64, QString, QString)), reply, id, artist, title);
|
||||||
|
|
||||||
|
//qLog(Debug) << "ChartLyrics: Sending request for" << url;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,18 +33,21 @@ struct LyricsSearchResult;
|
||||||
class LyricsProvider : public QObject {
|
class LyricsProvider : public QObject {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit LyricsProvider(const QString &name, QObject *parent);
|
explicit LyricsProvider(const QString &name, QObject *parent);
|
||||||
|
|
||||||
|
typedef QPair<QString, QString> Param;
|
||||||
|
typedef QList<Param> ParamList;
|
||||||
|
|
||||||
QString name() const { return name_; }
|
QString name() const { return name_; }
|
||||||
|
|
||||||
virtual bool StartSearch(const QString &artist, const QString &album, const QString &title, quint64 id) = 0;
|
virtual bool StartSearch(const QString &artist, const QString &album, const QString &title, quint64 id) = 0;
|
||||||
virtual void CancelSearch(quint64 id) {}
|
virtual void CancelSearch(quint64 id) {}
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void SearchFinished(quint64 id, const QList<LyricsSearchResult>& results);
|
void SearchFinished(quint64 id, const QList<LyricsSearchResult>& results);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QString name_;
|
QString name_;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue