mirror of https://github.com/aria2/aria2
Add --pause-metadata option
This option pauses downloads created as a result of metadata download. There are 3 types of metadata downloads in aria2: (1) downloading .torrent file. (2) downloading torrent metadata using magnet link. (3) downloading metalink file. These metadata downloads will generate downloads using their metadata. This option pauses these subsequent downloads.pull/242/head
parent
2b02fac2d5
commit
e2932608fc
|
@ -232,6 +232,7 @@ OptionParser.new do |opt|
|
||||||
opt.on("--server-stat-of FILE"){|val| options["server-stat-of"]=val}
|
opt.on("--server-stat-of FILE"){|val| options["server-stat-of"]=val}
|
||||||
opt.on("--save-cookies FILE"){|val| options["save-cookies"]=val}
|
opt.on("--save-cookies FILE"){|val| options["save-cookies"]=val}
|
||||||
opt.on("--gid GID"){|val| options["gid"]=val}
|
opt.on("--gid GID"){|val| options["gid"]=val}
|
||||||
|
opt.on("--pause-metadata [BOOL]",["true","false"]){|val| options["pause-metadata"]=val||"true"}
|
||||||
|
|
||||||
opt.on("--server SERVER", "hostname of XML-RPC server. Default: localhost"){|val| options["server"]=val }
|
opt.on("--server SERVER", "hostname of XML-RPC server. Default: localhost"){|val| options["server"]=val }
|
||||||
opt.on("--port PORT", "port of XML-RPC server. Default: 6800"){|val| options["port"]=val }
|
opt.on("--port PORT", "port of XML-RPC server. Default: 6800"){|val| options["port"]=val }
|
||||||
|
|
|
@ -52,6 +52,7 @@
|
||||||
#include "DiskWriter.h"
|
#include "DiskWriter.h"
|
||||||
#include "AbstractSingleDiskAdaptor.h"
|
#include "AbstractSingleDiskAdaptor.h"
|
||||||
#include "BencodeDiskWriter.h"
|
#include "BencodeDiskWriter.h"
|
||||||
|
#include "RequestGroupMan.h"
|
||||||
|
|
||||||
namespace aria2 {
|
namespace aria2 {
|
||||||
|
|
||||||
|
@ -108,6 +109,16 @@ void BtPostDownloadHandler::getNextRequestGroups
|
||||||
if(mi) {
|
if(mi) {
|
||||||
setMetadataInfo(newRgs.begin(), newRgs.end(), mi);
|
setMetadataInfo(newRgs.begin(), newRgs.end(), mi);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
auto rgman = requestGroup->getRequestGroupMan();
|
||||||
|
|
||||||
|
if(rgman && rgman->getKeepRunning() &&
|
||||||
|
requestGroup->getOption()->getAsBool(PREF_PAUSE_METADATA)) {
|
||||||
|
for(auto& rg : newRgs) {
|
||||||
|
rg->setPauseRequested(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
groups.insert(groups.end(), newRgs.begin(), newRgs.end());
|
groups.insert(groups.end(), newRgs.begin(), newRgs.end());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -51,6 +51,7 @@
|
||||||
#include "download_helper.h"
|
#include "download_helper.h"
|
||||||
#include "fmt.h"
|
#include "fmt.h"
|
||||||
#include "FileEntry.h"
|
#include "FileEntry.h"
|
||||||
|
#include "RequestGroupMan.h"
|
||||||
|
|
||||||
namespace aria2 {
|
namespace aria2 {
|
||||||
|
|
||||||
|
@ -105,6 +106,16 @@ void MetalinkPostDownloadHandler::getNextRequestGroups
|
||||||
if(mi) {
|
if(mi) {
|
||||||
setMetadataInfo(newRgs.begin(), newRgs.end(), mi);
|
setMetadataInfo(newRgs.begin(), newRgs.end(), mi);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
auto rgman = requestGroup->getRequestGroupMan();
|
||||||
|
|
||||||
|
if(rgman && rgman->getKeepRunning() &&
|
||||||
|
requestGroup->getOption()->getAsBool(PREF_PAUSE_METADATA)) {
|
||||||
|
for(auto& rg : newRgs) {
|
||||||
|
rg->setPauseRequested(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
groups.insert(groups.end(), newRgs.begin(), newRgs.end());
|
groups.insert(groups.end(), newRgs.begin(), newRgs.end());
|
||||||
diskAdaptor->closeFile();
|
diskAdaptor->closeFile();
|
||||||
} catch(Exception& e) {
|
} catch(Exception& e) {
|
||||||
|
|
|
@ -679,6 +679,19 @@ std::vector<OptionHandler*> OptionHandlerFactory::createOptionHandlers()
|
||||||
op->setInitialOption(true);
|
op->setInitialOption(true);
|
||||||
handlers.push_back(op);
|
handlers.push_back(op);
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
OptionHandler* op(new BooleanOptionHandler
|
||||||
|
(PREF_PAUSE_METADATA,
|
||||||
|
TEXT_PAUSE_METADATA,
|
||||||
|
A2_V_FALSE,
|
||||||
|
OptionHandler::OPT_ARG));
|
||||||
|
op->addTag(TAG_ADVANCED);
|
||||||
|
op->addTag(TAG_RPC);
|
||||||
|
op->setInitialOption(true);
|
||||||
|
op->setChangeGlobalOption(true);
|
||||||
|
op->setChangeOptionForReserved(true);
|
||||||
|
handlers.push_back(op);
|
||||||
|
}
|
||||||
{
|
{
|
||||||
OptionHandler* op(new BooleanOptionHandler
|
OptionHandler* op(new BooleanOptionHandler
|
||||||
(PREF_QUIET,
|
(PREF_QUIET,
|
||||||
|
|
|
@ -50,6 +50,7 @@
|
||||||
#include "prefs.h"
|
#include "prefs.h"
|
||||||
#include "Option.h"
|
#include "Option.h"
|
||||||
#include "fmt.h"
|
#include "fmt.h"
|
||||||
|
#include "RequestGroupMan.h"
|
||||||
|
|
||||||
namespace aria2 {
|
namespace aria2 {
|
||||||
|
|
||||||
|
@ -107,6 +108,16 @@ void UTMetadataPostDownloadHandler::getNextRequestGroups
|
||||||
setMetadataInfo(newRgs.begin(), newRgs.end(),
|
setMetadataInfo(newRgs.begin(), newRgs.end(),
|
||||||
requestGroup->getMetadataInfo());
|
requestGroup->getMetadataInfo());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
auto rgman = requestGroup->getRequestGroupMan();
|
||||||
|
|
||||||
|
if(rgman && rgman->getKeepRunning() &&
|
||||||
|
requestGroup->getOption()->getAsBool(PREF_PAUSE_METADATA)) {
|
||||||
|
for(auto& rg : newRgs) {
|
||||||
|
rg->setPauseRequested(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
groups.insert(groups.end(), newRgs.begin(), newRgs.end());
|
groups.insert(groups.end(), newRgs.begin(), newRgs.end());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -363,6 +363,8 @@ PrefPtr PREF_ENABLE_COLOR = makePref("enable-color");
|
||||||
PrefPtr PREF_RPC_SECRET = makePref("rpc-secret");
|
PrefPtr PREF_RPC_SECRET = makePref("rpc-secret");
|
||||||
// values: 1*digit
|
// values: 1*digit
|
||||||
PrefPtr PREF_DSCP = makePref("dscp");
|
PrefPtr PREF_DSCP = makePref("dscp");
|
||||||
|
// values: true | false
|
||||||
|
PrefPtr PREF_PAUSE_METADATA = makePref("pause-metadata");
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* FTP related preferences
|
* FTP related preferences
|
||||||
|
|
|
@ -300,6 +300,8 @@ extern PrefPtr PREF_ENABLE_COLOR;
|
||||||
extern PrefPtr PREF_RPC_SECRET;
|
extern PrefPtr PREF_RPC_SECRET;
|
||||||
// values: 1*digit
|
// values: 1*digit
|
||||||
extern PrefPtr PREF_DSCP;
|
extern PrefPtr PREF_DSCP;
|
||||||
|
// values: true | false
|
||||||
|
extern PrefPtr PREF_PAUSE_METADATA;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* FTP related preferences
|
* FTP related preferences
|
||||||
|
|
|
@ -980,3 +980,14 @@
|
||||||
" commonly used values from RFC, network vendors'\n" \
|
" commonly used values from RFC, network vendors'\n" \
|
||||||
" documentation, Wikipedia or any other source,\n" \
|
" documentation, Wikipedia or any other source,\n" \
|
||||||
" use them as they are.")
|
" use them as they are.")
|
||||||
|
#define TEXT_PAUSE_METADATA \
|
||||||
|
_(" --pause-metadata[=true|false]\n" \
|
||||||
|
" Pause downloads created as a result of metadata\n" \
|
||||||
|
" download. There are 3 types of metadata\n" \
|
||||||
|
" downloads in aria2: (1) downloading .torrent\n" \
|
||||||
|
" file. (2) downloading torrent metadata using\n" \
|
||||||
|
" magnet link. (3) downloading metalink file.\n" \
|
||||||
|
" These metadata downloads will generate downloads\n" \
|
||||||
|
" using their metadata. This option pauses these\n" \
|
||||||
|
" subsequent downloads. This option is effective\n" \
|
||||||
|
" only when --enable-rpc=true is given.")
|
||||||
|
|
Loading…
Reference in New Issue