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;
|
||||
}
|
||||
|
||||
if ((iter.DoesExist("quality")) && (iter["quality"].GetDataType() == JDType::STRING))
|
||||
{
|
||||
newEntry.quality = GetDownloadQualityByName(iter["quality"].AsString);
|
||||
}
|
||||
|
||||
if ((iter.DoesExist("mode")) && (iter["mode"].GetDataType() == JDType::STRING))
|
||||
{
|
||||
std::string cachedStrMode = iter["mode"];
|
||||
@ -597,12 +602,18 @@ std::string DownloadManager::DownloadQualityToStringParams(DOWNLOAD_QUALITY qual
|
||||
{
|
||||
case DOWNLOAD_QUALITY::_BEST:
|
||||
return "bestvideo[ext=mp4]+bestaudio";
|
||||
case DOWNLOAD_QUALITY::_1440p:
|
||||
return "bestvideo[ext=mp4][height<=1440]+bestaudio";
|
||||
case DOWNLOAD_QUALITY::_1080p:
|
||||
return "bestvideo[ext=mp4][height<=1080]+bestaudio";
|
||||
case DOWNLOAD_QUALITY::_720p:
|
||||
return "bestvideo[ext=mp4][height<=720]+bestaudio";
|
||||
case DOWNLOAD_QUALITY::_480p:
|
||||
return "bestvideo[ext=mp4][height<=480]+bestaudio";
|
||||
case DOWNLOAD_QUALITY::_360p:
|
||||
return "bestvideo[ext=mp4][height<=360]+bestaudio";
|
||||
case DOWNLOAD_QUALITY::_240p:
|
||||
return "bestvideo[ext=mp4][height<=240]+bestaudio";
|
||||
case DOWNLOAD_QUALITY::_144p:
|
||||
return "bestvideo[ext=mp4][height<=144]+bestaudio";
|
||||
}
|
||||
@ -610,6 +621,53 @@ std::string DownloadManager::DownloadQualityToStringParams(DOWNLOAD_QUALITY qual
|
||||
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)
|
||||
{
|
||||
std::stringstream ss;
|
||||
@ -731,6 +789,7 @@ Downloader::DownloadEntry::DownloadEntry()
|
||||
download_url = "";
|
||||
status = DOWNLOAD_STATUS::QUEUED;
|
||||
mode = DOWNLOAD_MODE::AUDIO;
|
||||
quality = DOWNLOAD_QUALITY::INVALID;
|
||||
download_progress = 0;
|
||||
queued_timestamp = 0;
|
||||
|
||||
@ -751,6 +810,7 @@ JsonBlock DownloadEntry::GetAsJson()
|
||||
jb.Set(Ele("downloaded_filename", downloaded_filename));
|
||||
jb.Set(Ele("download_url", download_url));
|
||||
jb.Set(Ele("queued_timestamp", (long long int)queued_timestamp));
|
||||
jb.Set(Ele("quality", DownloadManager::DownloadQualityToName(quality)));
|
||||
|
||||
switch (mode)
|
||||
{
|
||||
|
@ -26,10 +26,14 @@ namespace Downloader
|
||||
enum class DOWNLOAD_QUALITY
|
||||
{
|
||||
_BEST, // best quality
|
||||
_1440p, // 1440p
|
||||
_1080p, // 1080p
|
||||
_720p, // 720p
|
||||
_480p, // 480p
|
||||
_360p, // 360p
|
||||
_144p // 144p
|
||||
_240p, // 240p
|
||||
_144p, // 144p
|
||||
INVALID
|
||||
};
|
||||
|
||||
class DownloadEntry
|
||||
@ -111,6 +115,20 @@ namespace Downloader
|
||||
/// <returns></returns>
|
||||
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:
|
||||
static void Save();
|
||||
static void Load();
|
||||
@ -119,8 +137,8 @@ namespace Downloader
|
||||
/// <summary>
|
||||
/// Will return a youtube-dl quality string based on 'quality'
|
||||
/// </summary>
|
||||
/// <param name="quality"></param>
|
||||
/// <returns></returns>
|
||||
/// <param name="quality">The download quality to get the parameter from</param>
|
||||
/// <returns>The youtube-dl quality parameter</returns>
|
||||
static std::string DownloadQualityToStringParams(DOWNLOAD_QUALITY quality);
|
||||
|
||||
/// <summary>
|
||||
|
@ -96,6 +96,7 @@ bool RestQueryHandler::QueueDownload(const JsonBlock& request, JsonBlock& respon
|
||||
}
|
||||
|
||||
// Process parameters
|
||||
// Process download mode
|
||||
DOWNLOAD_MODE mode;
|
||||
if (modeParam == "video") mode = DOWNLOAD_MODE::VIDEO;
|
||||
else if (modeParam == "audio") mode = DOWNLOAD_MODE::AUDIO;
|
||||
@ -106,20 +107,11 @@ bool RestQueryHandler::QueueDownload(const JsonBlock& request, JsonBlock& respon
|
||||
return false;
|
||||
}
|
||||
|
||||
DOWNLOAD_QUALITY quality;
|
||||
if (qualityParam == "best")
|
||||
quality = DOWNLOAD_QUALITY::_BEST;
|
||||
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 {
|
||||
// Process download quality
|
||||
DOWNLOAD_QUALITY quality = DownloadManager::GetDownloadQualityByName(qualityParam);
|
||||
if (quality == DOWNLOAD_QUALITY::INVALID) {
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -1,2 +1,2 @@
|
||||
#pragma once
|
||||
#define TUBIO_SERVER_VERSION (0.538)
|
||||
#define TUBIO_SERVER_VERSION (0.539)
|
||||
|
Loading…
x
Reference in New Issue
Block a user