Subsonic API: handle parameter timeOffset
This commit is contained in:
@@ -65,7 +65,8 @@ namespace API::Subsonic
|
|||||||
|
|
||||||
// Optional params
|
// Optional params
|
||||||
std::optional<std::size_t> maxBitRate{ getParameterAs<std::size_t>(context.parameters, "maxBitRate") };
|
std::optional<std::size_t> maxBitRate{ getParameterAs<std::size_t>(context.parameters, "maxBitRate") };
|
||||||
std::optional<std::string> format{ getParameterAs<std::string>(context.parameters, "format") };
|
const std::optional<std::string> format{ getParameterAs<std::string>(context.parameters, "format") };
|
||||||
|
const std::optional<std::size_t> timeOffset{ getParameterAs<std::size_t>(context.parameters, "timeOffset") };
|
||||||
bool estimateContentLength{ getParameterAs<bool>(context.parameters, "estimateContentLength").value_or(false) };
|
bool estimateContentLength{ getParameterAs<bool>(context.parameters, "estimateContentLength").value_or(false) };
|
||||||
|
|
||||||
StreamParameters parameters;
|
StreamParameters parameters;
|
||||||
@@ -75,7 +76,7 @@ namespace API::Subsonic
|
|||||||
auto transaction{ context.dbSession.createSharedTransaction() };
|
auto transaction{ context.dbSession.createSharedTransaction() };
|
||||||
|
|
||||||
{
|
{
|
||||||
auto track{ Track::find(context.dbSession, id) };
|
const auto track{ Track::find(context.dbSession, id) };
|
||||||
if (!track)
|
if (!track)
|
||||||
throw RequestedDataNotFoundError{};
|
throw RequestedDataNotFoundError{};
|
||||||
|
|
||||||
@@ -103,6 +104,7 @@ namespace API::Subsonic
|
|||||||
transcodeParameters.bitrate = bitRate * 1000;
|
transcodeParameters.bitrate = bitRate * 1000;
|
||||||
transcodeParameters.format = userTranscodeFormatToAvFormat(user->getSubsonicTranscodeFormat());
|
transcodeParameters.format = userTranscodeFormatToAvFormat(user->getSubsonicTranscodeFormat());
|
||||||
transcodeParameters.stripMetadata = false; // We want clients to use metadata (offline use, replay gain, etc.)
|
transcodeParameters.stripMetadata = false; // We want clients to use metadata (offline use, replay gain, etc.)
|
||||||
|
transcodeParameters.offset = std::chrono::seconds{ timeOffset ? *timeOffset : 0 };
|
||||||
|
|
||||||
parameters.transcodeParameters = std::move(transcodeParameters);
|
parameters.transcodeParameters = std::move(transcodeParameters);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user