mirror of
https://github.com/nzbget/nzbget.git
synced 2026-04-24 06:46:56 -04:00
added built-in unpack: 1) rar and 7-zip formats are supported (via external Unrar and 7-Zip executables); 2) new options <Unpack>, <UnpackPauseQueue>, <UnpackCleanupDisk>, <UnrarCmd>, <SevenZipCmd>; 3) web-interface now shows progress and estimated time during unpack (rar only; for 7-Zip progress is not available due to limitations of 7-Zip) 4) when built-in unpack is enabled, the post-processing script is called after unpack and possibly par-check/repair (if needed); 5) for nzb-files containing multiple collections (par-sets) the post-processing script is called only once, after the last par-set; 6) new parameter <NZBPP_UNPACKSTATUS> passed to post-processing script; 7) if the option <AllowReProcess> is enabled the post-processing-script is called after each par-set (as in previous versions); 8) example post-processing script updated: removed unrar-code, added check for unpack status; 9) new field <UnpackStatus> in result of RPC-method <history>; 10) history-dialog in web-interface shows three status: par-status, unpack-status, script-status; 11) with two built-in special post-processing parameters <*Unpack:> and <*Unpack:Password> the unpack can be disabled for individual nzb-file or the password can be set; 12) built-in special post-processing parameters can be set via web-interface on page <PP-Parameters> (when built-in unpack is enabled).
This commit is contained in:
40
Options.cpp
40
Options.cpp
@@ -171,6 +171,11 @@ static const char* OPTION_MERGENZB = "MergeNzb";
|
||||
static const char* OPTION_PARTIMELIMIT = "ParTimeLimit";
|
||||
static const char* OPTION_KEEPHISTORY = "KeepHistory";
|
||||
static const char* OPTION_ACCURATERATE = "AccurateRate";
|
||||
static const char* OPTION_UNPACK = "Unpack";
|
||||
static const char* OPTION_UNPACKCLEANUPDISK = "UnpackCleanupDisk";
|
||||
static const char* OPTION_UNRARCMD = "UnrarCmd";
|
||||
static const char* OPTION_SEVENZIPCMD = "SevenZipCmd";
|
||||
static const char* OPTION_UNPACKPAUSEQUEUE = "UnpackPauseQueue";
|
||||
|
||||
// obsolete options
|
||||
static const char* OPTION_POSTLOGKIND = "PostLogKind";
|
||||
@@ -431,6 +436,11 @@ Options::Options(int argc, char* argv[])
|
||||
m_bAccurateRate = false;
|
||||
m_EMatchMode = mmID;
|
||||
m_tResumeTime = 0;
|
||||
m_bUnpack = false;
|
||||
m_bUnpackCleanupDisk = false;
|
||||
m_szUnrarCmd = NULL;
|
||||
m_szSevenZipCmd = NULL;
|
||||
m_bUnpackPauseQueue = false;
|
||||
|
||||
// Option "ConfigFile" will be initialized later, but we want
|
||||
// to see it at the top of option list, so we add it first
|
||||
@@ -603,6 +613,14 @@ Options::~Options()
|
||||
{
|
||||
free(m_szAddNZBFilename);
|
||||
}
|
||||
if (m_szUnrarCmd)
|
||||
{
|
||||
free(m_szUnrarCmd);
|
||||
}
|
||||
if (m_szSevenZipCmd)
|
||||
{
|
||||
free(m_szSevenZipCmd);
|
||||
}
|
||||
|
||||
for (NameList::iterator it = m_EditQueueNameList.begin(); it != m_EditQueueNameList.end(); it++)
|
||||
{
|
||||
@@ -731,6 +749,16 @@ void Options::InitDefault()
|
||||
SetOption(OPTION_PARTIMELIMIT, "0");
|
||||
SetOption(OPTION_KEEPHISTORY, "7");
|
||||
SetOption(OPTION_ACCURATERATE, "no");
|
||||
SetOption(OPTION_UNPACK, "no");
|
||||
SetOption(OPTION_UNPACKCLEANUPDISK, "no");
|
||||
#ifdef WIN32
|
||||
SetOption(OPTION_UNRARCMD, "unrar.exe");
|
||||
SetOption(OPTION_SEVENZIPCMD, "7z.exe");
|
||||
#else
|
||||
SetOption(OPTION_UNRARCMD, "unrar");
|
||||
SetOption(OPTION_SEVENZIPCMD, "7z");
|
||||
#endif
|
||||
SetOption(OPTION_UNPACKPAUSEQUEUE, "no");
|
||||
}
|
||||
|
||||
void Options::InitOptFile()
|
||||
@@ -858,6 +886,8 @@ void Options::InitOptions()
|
||||
m_szLockFile = strdup(GetOption(OPTION_LOCKFILE));
|
||||
m_szDaemonUserName = strdup(GetOption(OPTION_DAEMONUSERNAME));
|
||||
m_szLogFile = strdup(GetOption(OPTION_LOGFILE));
|
||||
m_szUnrarCmd = strdup(GetOption(OPTION_UNRARCMD));
|
||||
m_szSevenZipCmd = strdup(GetOption(OPTION_SEVENZIPCMD));
|
||||
|
||||
m_iDownloadRate = (int)(ParseFloatValue(OPTION_DOWNLOADRATE) * 1024);
|
||||
m_iConnectionTimeout = ParseIntValue(OPTION_CONNECTIONTIMEOUT, 10);
|
||||
@@ -912,6 +942,9 @@ void Options::InitOptions()
|
||||
m_bMergeNzb = (bool)ParseEnumValue(OPTION_MERGENZB, BoolCount, BoolNames, BoolValues);
|
||||
m_bAccurateRate = (bool)ParseEnumValue(OPTION_ACCURATERATE, BoolCount, BoolNames, BoolValues);
|
||||
m_bSecureControl = (bool)ParseEnumValue(OPTION_SECURECONTROL, BoolCount, BoolNames, BoolValues);
|
||||
m_bUnpack = (bool)ParseEnumValue(OPTION_UNPACK, BoolCount, BoolNames, BoolValues);
|
||||
m_bUnpackCleanupDisk = (bool)ParseEnumValue(OPTION_UNPACKCLEANUPDISK, BoolCount, BoolNames, BoolValues);
|
||||
m_bUnpackPauseQueue = (bool)ParseEnumValue(OPTION_UNPACKPAUSEQUEUE, BoolCount, BoolNames, BoolValues);
|
||||
|
||||
const char* OutputModeNames[] = { "loggable", "logable", "log", "colored", "color", "ncurses", "curses" };
|
||||
const int OutputModeValues[] = { omLoggable, omLoggable, omLoggable, omColored, omColored, omNCurses, omNCurses };
|
||||
@@ -2350,6 +2383,13 @@ void Options::CheckOptions()
|
||||
{
|
||||
m_bDirectWrite = false;
|
||||
}
|
||||
|
||||
if (m_bUnpack && m_bAllowReProcess)
|
||||
{
|
||||
LocateOptionSrcPos(OPTION_ALLOWREPROCESS);
|
||||
ConfigError("Options \"%s\" and \"%s\" cannot be both active at the same time", OPTION_UNPACK, OPTION_ALLOWREPROCESS);
|
||||
m_bAllowReProcess = false;
|
||||
}
|
||||
}
|
||||
|
||||
void Options::ParseFileIDList(int argc, char* argv[], int optind)
|
||||
|
||||
Reference in New Issue
Block a user