Added more resolutions

This commit is contained in:
Leonetienne 2021-03-13 14:58:07 +01:00
parent 2515001b63
commit f8c585a0dd
4 changed files with 87 additions and 17 deletions

View File

@ -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)
{

View File

@ -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>

View File

@ -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;
}

View File

@ -1,2 +1,2 @@
#pragma once
#define TUBIO_SERVER_VERSION (0.538)
#define TUBIO_SERVER_VERSION (0.539)