Disable automatic conversions from 8-bit strings

This commit is contained in:
Jonas Kvinge
2024-04-11 02:56:01 +02:00
parent 58944993b8
commit 0c6872b352
310 changed files with 2501 additions and 2332 deletions

View File

@@ -47,14 +47,16 @@
#include "tidalbaserequest.h"
#include "tidalrequest.h"
constexpr char TidalRequest::kResourcesUrl[] = "https://resources.tidal.com";
constexpr int TidalRequest::kMaxConcurrentArtistsRequests = 3;
constexpr int TidalRequest::kMaxConcurrentAlbumsRequests = 3;
constexpr int TidalRequest::kMaxConcurrentSongsRequests = 3;
constexpr int TidalRequest::kMaxConcurrentArtistAlbumsRequests = 3;
constexpr int TidalRequest::kMaxConcurrentAlbumSongsRequests = 3;
constexpr int TidalRequest::kMaxConcurrentAlbumCoverRequests = 1;
constexpr int TidalRequest::kFlushRequestsDelay = 200;
namespace {
constexpr char kResourcesUrl[] = "https://resources.tidal.com";
constexpr int kMaxConcurrentArtistsRequests = 3;
constexpr int kMaxConcurrentAlbumsRequests = 3;
constexpr int kMaxConcurrentSongsRequests = 3;
constexpr int kMaxConcurrentArtistAlbumsRequests = 3;
constexpr int kMaxConcurrentAlbumSongsRequests = 3;
constexpr int kMaxConcurrentAlbumCoverRequests = 1;
constexpr int kFlushRequestsDelay = 200;
} // namespace
TidalRequest::TidalRequest(TidalService *service, TidalUrlHandler *url_handler, Application *app, SharedPtr<NetworkAccessManager> network, QueryType query_type, QObject *parent)
: TidalBaseRequest(service, network, parent),
@@ -248,9 +250,9 @@ void TidalRequest::FlushArtistsRequests() {
Request request = artists_requests_queue_.dequeue();
ParamList parameters;
if (query_type_ == QueryType::SearchArtists) parameters << Param("query", search_text_);
if (request.limit > 0) parameters << Param("limit", QString::number(request.limit));
if (request.offset > 0) parameters << Param("offset", QString::number(request.offset));
if (query_type_ == QueryType::SearchArtists) parameters << Param(QStringLiteral("query"), search_text_);
if (request.limit > 0) parameters << Param(QStringLiteral("limit"), QString::number(request.limit));
if (request.offset > 0) parameters << Param(QStringLiteral("offset"), QString::number(request.offset));
QNetworkReply *reply = nullptr;
if (query_type_ == QueryType::Artists) {
reply = CreateRequest(QStringLiteral("users/%1/favorites/artists").arg(service_->user_id()), parameters);
@@ -296,9 +298,9 @@ void TidalRequest::FlushAlbumsRequests() {
Request request = albums_requests_queue_.dequeue();
ParamList parameters;
if (query_type_ == QueryType::SearchAlbums) parameters << Param("query", search_text_);
if (request.limit > 0) parameters << Param("limit", QString::number(request.limit));
if (request.offset > 0) parameters << Param("offset", QString::number(request.offset));
if (query_type_ == QueryType::SearchAlbums) parameters << Param(QStringLiteral("query"), search_text_);
if (request.limit > 0) parameters << Param(QStringLiteral("limit"), QString::number(request.limit));
if (request.offset > 0) parameters << Param(QStringLiteral("offset"), QString::number(request.offset));
QNetworkReply *reply = nullptr;
if (query_type_ == QueryType::Albums) {
reply = CreateRequest(QStringLiteral("users/%1/favorites/albums").arg(service_->user_id()), parameters);
@@ -344,9 +346,9 @@ void TidalRequest::FlushSongsRequests() {
Request request = songs_requests_queue_.dequeue();
ParamList parameters;
if (query_type_ == QueryType::SearchSongs) parameters << Param("query", search_text_);
if (request.limit > 0) parameters << Param("limit", QString::number(request.limit));
if (request.offset > 0) parameters << Param("offset", QString::number(request.offset));
if (query_type_ == QueryType::SearchSongs) parameters << Param(QStringLiteral("query"), search_text_);
if (request.limit > 0) parameters << Param(QStringLiteral("limit"), QString::number(request.limit));
if (request.offset > 0) parameters << Param(QStringLiteral("offset"), QString::number(request.offset));
QNetworkReply *reply = nullptr;
if (query_type_ == QueryType::Songs) {
reply = CreateRequest(QStringLiteral("users/%1/favorites/tracks").arg(service_->user_id()), parameters);
@@ -584,7 +586,7 @@ void TidalRequest::FlushArtistAlbumsRequests() {
const ArtistAlbumsRequest request = artist_albums_requests_queue_.dequeue();
ParamList parameters;
if (request.offset > 0) parameters << Param("offset", QString::number(request.offset));
if (request.offset > 0) parameters << Param(QStringLiteral("offset"), QString::number(request.offset));
QNetworkReply *reply = CreateRequest(QStringLiteral("artists/%1/albums").arg(request.artist.artist_id), parameters);
QObject::connect(reply, &QNetworkReply::finished, this, [this, reply, request]() { ArtistAlbumsReplyReceived(reply, request.artist, request.offset); });
replies_ << reply;
@@ -692,7 +694,7 @@ void TidalRequest::AlbumsReceived(QNetworkReply *reply, const Artist &artist_req
if (service_->album_explicit() && obj_item.contains(QStringLiteral("explicit"))) {
album.album_explicit = obj_item[QStringLiteral("explicit")].toVariant().toBool();
if (album.album_explicit && !album.album.isEmpty()) {
album.album.append(" (Explicit)");
album.album.append(QStringLiteral(" (Explicit)"));
}
}
}
@@ -717,7 +719,7 @@ void TidalRequest::AlbumsReceived(QNetworkReply *reply, const Artist &artist_req
if (service_->album_explicit() && obj_album.contains(QStringLiteral("explicit"))) {
album.album_explicit = obj_album[QStringLiteral("explicit")].toVariant().toBool();
if (album.album_explicit && !album.album.isEmpty()) {
album.album.append(" (Explicit)");
album.album.append(QStringLiteral(" (Explicit)"));
}
}
}
@@ -859,7 +861,7 @@ void TidalRequest::FlushAlbumSongsRequests() {
AlbumSongsRequest request = album_songs_requests_queue_.dequeue();
ParamList parameters;
if (request.offset > 0) parameters << Param("offset", QString::number(request.offset));
if (request.offset > 0) parameters << Param(QStringLiteral("offset"), QString::number(request.offset));
QNetworkReply *reply = CreateRequest(QStringLiteral("albums/%1/tracks").arg(request.album.album_id), parameters);
replies_ << reply;
QObject::connect(reply, &QNetworkReply::finished, this, [this, reply, request]() { AlbumSongsReplyReceived(reply, request.artist, request.album, request.offset); });
@@ -1095,7 +1097,7 @@ void TidalRequest::ParseSong(Song &song, const QJsonObject &json_obj, const Arti
return;
}
QString album_title = obj_album[QStringLiteral("title")].toString();
if (album.album_explicit) album_title.append(" (Explicit)");
if (album.album_explicit) album_title.append(QStringLiteral(" (Explicit)"));
if (!allow_streaming) {
Warn(QStringLiteral("Song %1 %2 %3 is not allowStreaming").arg(artist, album_title, title));
@@ -1125,7 +1127,7 @@ void TidalRequest::ParseSong(Song &song, const QJsonObject &json_obj, const Arti
if (obj_album.contains(QStringLiteral("cover"))) {
const QString cover = obj_album[QStringLiteral("cover")].toString().replace(QLatin1String("-"), QLatin1String("/"));
if (!cover.isEmpty()) {
cover_url.setUrl(QStringLiteral("%1/images/%2/%3.jpg").arg(kResourcesUrl, cover, coversize_));
cover_url.setUrl(QStringLiteral("%1/images/%2/%3.jpg").arg(QLatin1String(kResourcesUrl), cover, coversize_));
}
}
@@ -1277,8 +1279,8 @@ void TidalRequest::AlbumCoverReceived(QNetworkReply *reply, const QString &album
}
QString mimetype = reply->header(QNetworkRequest::ContentTypeHeader).toString();
if (mimetype.contains(';')) {
mimetype = mimetype.left(mimetype.indexOf(';'));
if (mimetype.contains(QLatin1Char(';'))) {
mimetype = mimetype.left(mimetype.indexOf(QLatin1Char(';')));
}
if (!ImageUtils::SupportedImageMimeTypes().contains(mimetype, Qt::CaseInsensitive) && !ImageUtils::SupportedImageFormats().contains(mimetype, Qt::CaseInsensitive)) {
Error(QStringLiteral("Unsupported mimetype for image reader %1 for %2").arg(mimetype, url.toString()));
@@ -1287,7 +1289,7 @@ void TidalRequest::AlbumCoverReceived(QNetworkReply *reply, const QString &album
return;
}
QByteArray data = reply->readAll();
const QByteArray data = reply->readAll();
if (data.isEmpty()) {
Error(QStringLiteral("Received empty image data for %1").arg(url.toString()));
if (album_covers_requests_sent_.contains(album_id)) album_covers_requests_sent_.remove(album_id);