Added relative file path+file size in DB
This commit is contained in:
@@ -59,39 +59,6 @@ namespace lms::api::subsonic
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
std::string getTrackPath(const Track::pointer& track)
|
||||
{
|
||||
std::string path;
|
||||
|
||||
// The track path has to be relative from the root
|
||||
const auto release{ track->getRelease() };
|
||||
if (release)
|
||||
{
|
||||
auto artists{ release->getReleaseArtists() };
|
||||
if (artists.empty())
|
||||
artists = release->getArtists();
|
||||
|
||||
if (artists.size() > 1)
|
||||
path = "Various Artists/";
|
||||
else if (artists.size() == 1)
|
||||
path = utils::makeNameFilesystemCompatible(artists.front()->getName()) + "/";
|
||||
|
||||
path += utils::makeNameFilesystemCompatible(track->getRelease()->getName()) + "/";
|
||||
}
|
||||
|
||||
if (track->getDiscNumber())
|
||||
path += std::to_string(*track->getDiscNumber()) + "-";
|
||||
if (track->getTrackNumber())
|
||||
path += std::to_string(*track->getTrackNumber()) + "-";
|
||||
|
||||
path += utils::makeNameFilesystemCompatible(track->getName());
|
||||
|
||||
if (track->getPath().has_extension())
|
||||
path += track->getPath().extension();
|
||||
|
||||
return path;
|
||||
}
|
||||
}
|
||||
|
||||
Response::Node createSongNode(RequestContext& context, const Track::pointer& track, const User::pointer& user)
|
||||
@@ -110,19 +77,13 @@ namespace lms::api::subsonic
|
||||
if (track->getYear())
|
||||
trackResponse.setAttribute("year", *track->getYear());
|
||||
trackResponse.setAttribute("playCount", core::Service<scrobbling::IScrobblingService>::get()->getCount(user->getId(), track->getId()));
|
||||
trackResponse.setAttribute("path", getTrackPath(track));
|
||||
{
|
||||
// TODO, store this in DB
|
||||
std::error_code ec;
|
||||
const auto fileSize{ std::filesystem::file_size(track->getPath(), ec) };
|
||||
if (!ec)
|
||||
trackResponse.setAttribute("size", fileSize);
|
||||
}
|
||||
trackResponse.setAttribute("path", track->getRelativeFilePath().string());
|
||||
trackResponse.setAttribute("size", track->getFileSize());
|
||||
|
||||
if (track->getPath().has_extension())
|
||||
if (track->getAbsoluteFilePath().has_extension())
|
||||
{
|
||||
auto extension{ track->getPath().extension() };
|
||||
trackResponse.setAttribute("suffix", extension.string().substr(1));
|
||||
auto extension{ track->getAbsoluteFilePath().extension() };
|
||||
trackResponse.setAttribute("suffix", extension.string().substr(1) /* skip leading .*/);
|
||||
}
|
||||
|
||||
{
|
||||
@@ -157,7 +118,7 @@ namespace lms::api::subsonic
|
||||
trackResponse.setAttribute("bitRate", (track->getBitrate() / 1000));
|
||||
trackResponse.setAttribute("type", "music");
|
||||
trackResponse.setAttribute("created", core::stringUtils::toISO8601String(track->getLastWritten()));
|
||||
trackResponse.setAttribute("contentType", av::getMimeType(track->getPath().extension()));
|
||||
trackResponse.setAttribute("contentType", av::getMimeType(track->getAbsoluteFilePath().extension()));
|
||||
|
||||
if (const Wt::WDateTime dateTime{ core::Service<feedback::IFeedbackService>::get()->getStarredDateTime(user->getId(), track->getId()) }; dateTime.isValid())
|
||||
trackResponse.setAttribute("starred", core::stringUtils::toISO8601String(dateTime));
|
||||
|
||||
Reference in New Issue
Block a user