OpenSubsonic: changed the originalReleaseDate field format, fixes #400

This commit is contained in:
emeric
2024-01-10 23:38:48 +01:00
parent 5882e61886
commit a1001b296a
26 changed files with 390 additions and 174 deletions
+4 -7
View File
@@ -30,6 +30,7 @@
#include "responses/Artist.hpp"
#include "responses/DiscTitle.hpp"
#include "responses/ItemDate.hpp"
#include "responses/ItemGenre.hpp"
#include "SubsonicId.hpp"
@@ -58,8 +59,8 @@ namespace API::Subsonic
albumNode.setAttribute("created", StringUtils::toISO8601String(release->getLastWritten()));
albumNode.setAttribute("id", idToString(release->getId()));
albumNode.setAttribute("coverArt", idToString(release->getId()));
if (const Wt::WDate releaseDate{ release->getReleaseDate() }; releaseDate.isValid())
albumNode.setAttribute("year", releaseDate.year());
if (const auto year{ release->getYear() })
albumNode.setAttribute("year", *year);
auto artists{ release->getReleaseArtists() };
if (artists.empty())
@@ -149,11 +150,7 @@ namespace API::Subsonic
albumNode.addArrayChild("artists", createArtistNode(artist));
albumNode.setAttribute("displayArtist", release->getArtistDisplayName());
{
const Wt::WDate originalReleaseDate{ release->getOriginalReleaseDate() };
albumNode.setAttribute("originalReleaseDate", originalReleaseDate.isValid() ? StringUtils::toISO8601String(originalReleaseDate) : "");
}
albumNode.addChild("originalReleaseDate", createItemDateNode(release->getOriginalDate(), release->getOriginalYear()));
{
bool isCompilation{};
@@ -0,0 +1,43 @@
/*
* Copyright (C) 2023 Emeric Poupon
*
* This file is part of LMS.
*
* LMS is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* LMS is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with LMS. If not, see <http://www.gnu.org/licenses/>.
*/
#include "responses/Genre.hpp"
#include "database/Cluster.hpp"
namespace API::Subsonic
{
Response::Node createItemDateNode(const Wt::WDate& date, std::optional<int> year)
{
Response::Node itemDateNode;
if (date.isValid())
{
itemDateNode.setAttribute("year", date.year());
itemDateNode.setAttribute("month", date.month());
itemDateNode.setAttribute("day", date.day());
}
else if (year)
{
itemDateNode.setAttribute("year", *year);
}
return itemDateNode;
}
}
@@ -0,0 +1,28 @@
/*
* Copyright (C) 2024 Emeric Poupon
*
* This file is part of LMS.
*
* LMS is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* LMS is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with LMS. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include <Wt/WDate.h>
#include "SubsonicResponse.hpp"
namespace API::Subsonic
{
Response::Node createItemDateNode(const Wt::WDate& date, std::optional<int> year);
}