Added more resolutions
This commit is contained in:
parent
2515001b63
commit
f8c585a0dd
@ -577,6 +577,11 @@ std::vector<DownloadEntry> DownloadManager::ParseJsonArrayToEntries(const JasonP
|
|||||||
newEntry.queued_timestamp = iter["queued_timestamp"].AsInt;
|
newEntry.queued_timestamp = iter["queued_timestamp"].AsInt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((iter.DoesExist("quality")) && (iter["quality"].GetDataType() == JDType::STRING))
|
||||||
|
{
|
||||||
|
newEntry.quality = GetDownloadQualityByName(iter["quality"].AsString);
|
||||||
|
}
|
||||||
|
|
||||||
if ((iter.DoesExist("mode")) && (iter["mode"].GetDataType() == JDType::STRING))
|
if ((iter.DoesExist("mode")) && (iter["mode"].GetDataType() == JDType::STRING))
|
||||||
{
|
{
|
||||||
std::string cachedStrMode = iter["mode"];
|
std::string cachedStrMode = iter["mode"];
|
||||||
@ -597,12 +602,18 @@ std::string DownloadManager::DownloadQualityToStringParams(DOWNLOAD_QUALITY qual
|
|||||||
{
|
{
|
||||||
case DOWNLOAD_QUALITY::_BEST:
|
case DOWNLOAD_QUALITY::_BEST:
|
||||||
return "bestvideo[ext=mp4]+bestaudio";
|
return "bestvideo[ext=mp4]+bestaudio";
|
||||||
|
case DOWNLOAD_QUALITY::_1440p:
|
||||||
|
return "bestvideo[ext=mp4][height<=1440]+bestaudio";
|
||||||
case DOWNLOAD_QUALITY::_1080p:
|
case DOWNLOAD_QUALITY::_1080p:
|
||||||
return "bestvideo[ext=mp4][height<=1080]+bestaudio";
|
return "bestvideo[ext=mp4][height<=1080]+bestaudio";
|
||||||
case DOWNLOAD_QUALITY::_720p:
|
case DOWNLOAD_QUALITY::_720p:
|
||||||
return "bestvideo[ext=mp4][height<=720]+bestaudio";
|
return "bestvideo[ext=mp4][height<=720]+bestaudio";
|
||||||
|
case DOWNLOAD_QUALITY::_480p:
|
||||||
|
return "bestvideo[ext=mp4][height<=480]+bestaudio";
|
||||||
case DOWNLOAD_QUALITY::_360p:
|
case DOWNLOAD_QUALITY::_360p:
|
||||||
return "bestvideo[ext=mp4][height<=360]+bestaudio";
|
return "bestvideo[ext=mp4][height<=360]+bestaudio";
|
||||||
|
case DOWNLOAD_QUALITY::_240p:
|
||||||
|
return "bestvideo[ext=mp4][height<=240]+bestaudio";
|
||||||
case DOWNLOAD_QUALITY::_144p:
|
case DOWNLOAD_QUALITY::_144p:
|
||||||
return "bestvideo[ext=mp4][height<=144]+bestaudio";
|
return "bestvideo[ext=mp4][height<=144]+bestaudio";
|
||||||
}
|
}
|
||||||
@ -610,6 +621,53 @@ std::string DownloadManager::DownloadQualityToStringParams(DOWNLOAD_QUALITY qual
|
|||||||
return std::string();
|
return std::string();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string DownloadManager::DownloadQualityToName(DOWNLOAD_QUALITY quality)
|
||||||
|
{
|
||||||
|
switch (quality)
|
||||||
|
{
|
||||||
|
case DOWNLOAD_QUALITY::_BEST:
|
||||||
|
return "Best";
|
||||||
|
case DOWNLOAD_QUALITY::_1440p:
|
||||||
|
return "1440p";
|
||||||
|
case DOWNLOAD_QUALITY::_1080p:
|
||||||
|
return "1080p";
|
||||||
|
case DOWNLOAD_QUALITY::_720p:
|
||||||
|
return "720p";
|
||||||
|
case DOWNLOAD_QUALITY::_480p:
|
||||||
|
return "480p";
|
||||||
|
case DOWNLOAD_QUALITY::_360p:
|
||||||
|
return "360p";
|
||||||
|
case DOWNLOAD_QUALITY::_240p:
|
||||||
|
return "240p";
|
||||||
|
case DOWNLOAD_QUALITY::_144p:
|
||||||
|
return "144p";
|
||||||
|
}
|
||||||
|
|
||||||
|
return std::string();
|
||||||
|
}
|
||||||
|
|
||||||
|
DOWNLOAD_QUALITY DownloadManager::GetDownloadQualityByName(const std::string& qualityName)
|
||||||
|
{
|
||||||
|
if (qualityName == "best")
|
||||||
|
return DOWNLOAD_QUALITY::_BEST;
|
||||||
|
else if (qualityName == "1440p")
|
||||||
|
return DOWNLOAD_QUALITY::_1440p;
|
||||||
|
else if (qualityName == "1080p")
|
||||||
|
return DOWNLOAD_QUALITY::_1080p;
|
||||||
|
else if (qualityName == "720p")
|
||||||
|
return DOWNLOAD_QUALITY::_720p;
|
||||||
|
else if (qualityName == "480p")
|
||||||
|
return DOWNLOAD_QUALITY::_480p;
|
||||||
|
else if (qualityName == "360p")
|
||||||
|
return DOWNLOAD_QUALITY::_360p;
|
||||||
|
else if (qualityName == "240p")
|
||||||
|
return DOWNLOAD_QUALITY::_240p;
|
||||||
|
else if (qualityName == "144p")
|
||||||
|
return DOWNLOAD_QUALITY::_144p;
|
||||||
|
|
||||||
|
return DOWNLOAD_QUALITY::INVALID;
|
||||||
|
}
|
||||||
|
|
||||||
void DownloadManager::FetchInformation(std::string url, std::string tubId)
|
void DownloadManager::FetchInformation(std::string url, std::string tubId)
|
||||||
{
|
{
|
||||||
std::stringstream ss;
|
std::stringstream ss;
|
||||||
@ -731,6 +789,7 @@ Downloader::DownloadEntry::DownloadEntry()
|
|||||||
download_url = "";
|
download_url = "";
|
||||||
status = DOWNLOAD_STATUS::QUEUED;
|
status = DOWNLOAD_STATUS::QUEUED;
|
||||||
mode = DOWNLOAD_MODE::AUDIO;
|
mode = DOWNLOAD_MODE::AUDIO;
|
||||||
|
quality = DOWNLOAD_QUALITY::INVALID;
|
||||||
download_progress = 0;
|
download_progress = 0;
|
||||||
queued_timestamp = 0;
|
queued_timestamp = 0;
|
||||||
|
|
||||||
@ -751,6 +810,7 @@ JsonBlock DownloadEntry::GetAsJson()
|
|||||||
jb.Set(Ele("downloaded_filename", downloaded_filename));
|
jb.Set(Ele("downloaded_filename", downloaded_filename));
|
||||||
jb.Set(Ele("download_url", download_url));
|
jb.Set(Ele("download_url", download_url));
|
||||||
jb.Set(Ele("queued_timestamp", (long long int)queued_timestamp));
|
jb.Set(Ele("queued_timestamp", (long long int)queued_timestamp));
|
||||||
|
jb.Set(Ele("quality", DownloadManager::DownloadQualityToName(quality)));
|
||||||
|
|
||||||
switch (mode)
|
switch (mode)
|
||||||
{
|
{
|
||||||
|
@ -26,10 +26,14 @@ namespace Downloader
|
|||||||
enum class DOWNLOAD_QUALITY
|
enum class DOWNLOAD_QUALITY
|
||||||
{
|
{
|
||||||
_BEST, // best quality
|
_BEST, // best quality
|
||||||
|
_1440p, // 1440p
|
||||||
_1080p, // 1080p
|
_1080p, // 1080p
|
||||||
_720p, // 720p
|
_720p, // 720p
|
||||||
|
_480p, // 480p
|
||||||
_360p, // 360p
|
_360p, // 360p
|
||||||
_144p // 144p
|
_240p, // 240p
|
||||||
|
_144p, // 144p
|
||||||
|
INVALID
|
||||||
};
|
};
|
||||||
|
|
||||||
class DownloadEntry
|
class DownloadEntry
|
||||||
@ -111,6 +115,20 @@ namespace Downloader
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
static bool RemoveFromCacheByID(std::string id);
|
static bool RemoveFromCacheByID(std::string id);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Will return a name of a download quality. Like, '1080p' or 'best' for example
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="quality">The quality to get the name from</param>
|
||||||
|
/// <returns>The name of the download quality</returns>
|
||||||
|
static std::string DownloadQualityToName(DOWNLOAD_QUALITY quality);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Will return a download quality object based on a name, like '1080p' or 'best' for example
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="qualityName"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
static DOWNLOAD_QUALITY GetDownloadQualityByName(const std::string& qualityName);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static void Save();
|
static void Save();
|
||||||
static void Load();
|
static void Load();
|
||||||
@ -119,8 +137,8 @@ namespace Downloader
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Will return a youtube-dl quality string based on 'quality'
|
/// Will return a youtube-dl quality string based on 'quality'
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="quality"></param>
|
/// <param name="quality">The download quality to get the parameter from</param>
|
||||||
/// <returns></returns>
|
/// <returns>The youtube-dl quality parameter</returns>
|
||||||
static std::string DownloadQualityToStringParams(DOWNLOAD_QUALITY quality);
|
static std::string DownloadQualityToStringParams(DOWNLOAD_QUALITY quality);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -96,6 +96,7 @@ bool RestQueryHandler::QueueDownload(const JsonBlock& request, JsonBlock& respon
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Process parameters
|
// Process parameters
|
||||||
|
// Process download mode
|
||||||
DOWNLOAD_MODE mode;
|
DOWNLOAD_MODE mode;
|
||||||
if (modeParam == "video") mode = DOWNLOAD_MODE::VIDEO;
|
if (modeParam == "video") mode = DOWNLOAD_MODE::VIDEO;
|
||||||
else if (modeParam == "audio") mode = DOWNLOAD_MODE::AUDIO;
|
else if (modeParam == "audio") mode = DOWNLOAD_MODE::AUDIO;
|
||||||
@ -106,20 +107,11 @@ bool RestQueryHandler::QueueDownload(const JsonBlock& request, JsonBlock& respon
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
DOWNLOAD_QUALITY quality;
|
// Process download quality
|
||||||
if (qualityParam == "best")
|
DOWNLOAD_QUALITY quality = DownloadManager::GetDownloadQualityByName(qualityParam);
|
||||||
quality = DOWNLOAD_QUALITY::_BEST;
|
if (quality == DOWNLOAD_QUALITY::INVALID) {
|
||||||
else if (qualityParam == "1080p")
|
|
||||||
quality = DOWNLOAD_QUALITY::_1080p;
|
|
||||||
else if (qualityParam == "720p")
|
|
||||||
quality = DOWNLOAD_QUALITY::_720p;
|
|
||||||
else if (qualityParam == "360p")
|
|
||||||
quality = DOWNLOAD_QUALITY::_360p;
|
|
||||||
else if (qualityParam == "144p")
|
|
||||||
quality = DOWNLOAD_QUALITY::_144p;
|
|
||||||
else {
|
|
||||||
responseCode = HTTP_STATUS_CODE::BAD_REQUEST;
|
responseCode = HTTP_STATUS_CODE::BAD_REQUEST;
|
||||||
responseBody.CloneFrom(RestResponseTemplates::GetByCode(HTTP_STATUS_CODE::BAD_REQUEST, "Parameter 'quality' is of wrong value. Choose either 'best', '1080p', '720p', '360p', or '144p'."));
|
responseBody.CloneFrom(RestResponseTemplates::GetByCode(HTTP_STATUS_CODE::BAD_REQUEST, "Parameter 'quality' is of wrong value. Choose either 'best', '1440p', '1080p', '720p', '480p', '360p', '240p', or '144p'."));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#define TUBIO_SERVER_VERSION (0.538)
|
#define TUBIO_SERVER_VERSION (0.539)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user