mirror of
https://github.com/transmission/transmission
synced 2025-02-20 13:16:53 +00:00
(trunk) #1796 "run script after torrent completion" -- (1) add to transmission-remote. (2) remove cli's custom script handler and have it use libtransmission instead.
This commit is contained in:
parent
ad27c9d58e
commit
3ff784ad28
3 changed files with 85 additions and 79 deletions
13
cli/cli.c
13
cli/cli.c
|
@ -47,7 +47,6 @@ static sig_atomic_t gotsig = 0;
|
|||
static sig_atomic_t manualUpdate = 0;
|
||||
|
||||
static const char * torrentPath = NULL;
|
||||
static const char * finishCall = NULL;
|
||||
static const char * sourceFile = NULL;
|
||||
static const char * comment = NULL;
|
||||
|
||||
|
@ -137,14 +136,6 @@ escape( char * out,
|
|||
*out = '\0';
|
||||
}
|
||||
|
||||
static void
|
||||
torrentCompletenessChanged( tr_torrent * torrent UNUSED,
|
||||
tr_completeness completeness UNUSED,
|
||||
void * user_data UNUSED )
|
||||
{
|
||||
system( finishCall );
|
||||
}
|
||||
|
||||
static tr_bool waitingOnWeb;
|
||||
|
||||
static void
|
||||
|
@ -453,7 +444,6 @@ main( int argc,
|
|||
#ifndef WIN32
|
||||
signal( SIGHUP, sigHandler );
|
||||
#endif
|
||||
tr_torrentSetCompletenessCallback( tor, torrentCompletenessChanged, NULL );
|
||||
tr_torrentStart( tor );
|
||||
|
||||
if( verify )
|
||||
|
@ -548,7 +538,8 @@ parseCommandLine( tr_benc * d, int argc, const char ** argv )
|
|||
break;
|
||||
case 'D': tr_bencDictAddBool( d, TR_PREFS_KEY_DSPEED_ENABLED, FALSE );
|
||||
break;
|
||||
case 'f': finishCall = optarg;
|
||||
case 'f': tr_bencDictAddStr( d, TR_PREFS_KEY_SCRIPT_TORRENT_DONE_FILENAME, optarg );
|
||||
tr_bencDictAddBool( d, TR_PREFS_KEY_SCRIPT_TORRENT_DONE_ENABLED, TRUE );
|
||||
break;
|
||||
case 'g': /* handled above */
|
||||
break;
|
||||
|
|
145
daemon/remote.c
145
daemon/remote.c
|
@ -191,74 +191,76 @@ getUsage( void )
|
|||
|
||||
static tr_option opts[] =
|
||||
{
|
||||
{ 'a', "add", "Add torrent files by filename or URL", "a", 0, NULL },
|
||||
{ 970, "alt-speed", "Use the alternate Limits", "as", 0, NULL },
|
||||
{ 971, "no-alt-speed", "Don't use the alternate Limits", "AS", 0, NULL },
|
||||
{ 972, "alt-speed-downlimit", "max alternate download speed (in KiB/s)", "asd", 1, "<speed>" },
|
||||
{ 973, "alt-speed-uplimit", "max alternate upload speed (in KiB/s)", "asu", 1, "<speed>" },
|
||||
{ 974, "alt-speed-scheduler", "Use the scheduled on/off times", "asc", 0, NULL },
|
||||
{ 975, "no-alt-speed-scheduler","Don't use the scheduled on/off times", "ASC", 0, NULL },
|
||||
{ 976, "alt-speed-time-begin", "Time to start using the alt speed limits (in hhmm)", NULL, 1, "<time>" },
|
||||
{ 977, "alt-speed-time-end", "Time to stop using the alt speed limits (in hhmm)", NULL, 1, "<time>" },
|
||||
{ 978, "alt-speed-days", "Numbers for any/all days of the week - eg. \"1-7\"", NULL, 1, "<days>" },
|
||||
{ 963, "blocklist-update", "Blocklist update", NULL, 0, NULL },
|
||||
{ 'c', "incomplete-dir", "Where to store new torrents until they're complete", "c", 1, "<dir>" },
|
||||
{ 'C', "no-incomplete-dir", "Don't store incomplete torrents in a different location", "C", 0, NULL },
|
||||
{ 'b', "debug", "Print debugging information", "b", 0, NULL },
|
||||
{ 'd', "downlimit", "Set the max download speed in KiB/s for the current torrent(s) or globally", "d", 1, "<speed>" },
|
||||
{ 'D', "no-downlimit", "Disable max download speed for the current torrent(s) or globally", "D", 0, NULL },
|
||||
{ 910, "encryption-required", "Encrypt all peer connections", "er", 0, NULL },
|
||||
{ 911, "encryption-preferred", "Prefer encrypted peer connections", "ep", 0, NULL },
|
||||
{ 912, "encryption-tolerated", "Prefer unencrypted peer connections", "et", 0, NULL },
|
||||
{ 'f', "files", "List the current torrent(s)' files", "f", 0, NULL },
|
||||
{ 'g', "get", "Mark files for download", "g", 1, "<files>" },
|
||||
{ 'G', "no-get", "Mark files for not downloading", "G", 1, "<files>" },
|
||||
{ 'i', "info", "Show the current torrent(s)' details", "i", 0, NULL },
|
||||
{ 920, "session-info", "Show the session's details", "si", 0, NULL },
|
||||
{ 921, "session-stats", "Show the session's statistics", "st", 0, NULL },
|
||||
{ 'l', "list", "List all torrents", "l", 0, NULL },
|
||||
{ 960, "move", "Move current torrent's data to a new folder", NULL, 1, "<path>" },
|
||||
{ 961, "find", "Tell Transmission where to find a torrent's data", NULL, 1, "<path>" },
|
||||
{ 'm', "portmap", "Enable portmapping via NAT-PMP or UPnP", "m", 0, NULL },
|
||||
{ 'M', "no-portmap", "Disable portmapping", "M", 0, NULL },
|
||||
{ 'n', "auth", "Set authentication info", "n", 1, "<user:pass>" },
|
||||
{ 'N', "netrc", "Set authentication info from a .netrc file", "N", 1, "<filename>" },
|
||||
{ 'o', "dht", "Enable distributed hash tables (DHT)", "o", 0, NULL },
|
||||
{ 'O', "no-dht", "Disable distributed hash tables (DHT)", "O", 0, NULL },
|
||||
{ 'p', "port", "Port for incoming peers (Default: " TR_DEFAULT_PEER_PORT_STR ")", "p", 1, "<port>" },
|
||||
{ 962, "port-test", "Port testing", "pt", 0, NULL },
|
||||
{ 'P', "random-port", "Random port for incomping peers", "P", 0, NULL },
|
||||
{ 900, "priority-high", "Set the files' priorities as high", "ph", 1, "<files>" },
|
||||
{ 901, "priority-normal", "Set the files' priorities as normal", "pn", 1, "<files>" },
|
||||
{ 902, "priority-low", "Set the files' priorities as low", "pl", 1, "<files>" },
|
||||
{ 'r', "remove", "Remove the current torrent(s)", "r", 0, NULL },
|
||||
{ 930, "peers", "Set the maximum number of peers for the current torrent(s) or globally", "pr", 1, "<max>" },
|
||||
{ 'R', "remove-and-delete", "Remove the current torrent(s) and delete local data", NULL, 0, NULL },
|
||||
{ 950, "seedratio", "Let the current torrent(s) seed until a specific ratio", "sr", 1, "ratio" },
|
||||
{ 951, "seedratio-default", "Let the current torrent(s) use the global seedratio settings", "srd", 0, NULL },
|
||||
{ 952, "no-seedratio", "Let the current torrent(s) seed regardless of ratio", "SR", 0, NULL },
|
||||
{ 953, "global-seedratio", "All torrents, unless overridden by a per-torrent setting, should seed until a specific ratio", "gsr", 1, "ratio" },
|
||||
{ 954, "no-global-seedratio", "All torrents, unless overridden by a per-torrent setting, should seed regardless of ratio", "GSR", 0, NULL },
|
||||
{ 's', "start", "Start the current torrent(s)", "s", 0, NULL },
|
||||
{ 'S', "stop", "Stop the current torrent(s)", "S", 0, NULL },
|
||||
{ 't', "torrent", "Set the current torrent(s)", "t", 1, "<torrent>" },
|
||||
{ 990, "start-paused", "Start added torrents paused", NULL, 0, NULL },
|
||||
{ 991, "no-start-paused", "Start added torrents unpaused", NULL, 0, NULL },
|
||||
{ 992, "trash-torrent", "Delete torrents after adding", NULL, 0, NULL },
|
||||
{ 993, "no-trash-torrent", "Do not delete torrents after adding", NULL, 0, NULL },
|
||||
{ 984, "honor-session", "Make the current torrent(s) honor the session limits", "hl", 0, NULL },
|
||||
{ 985, "no-honor-session", "Make the current torrent(s) not honor the session limits", "HL", 0, NULL },
|
||||
{ 'u', "uplimit", "Set the max upload speed in KiB/s for the current torrent(s) or globally", "u", 1, "<speed>" },
|
||||
{ 'U', "no-uplimit", "Disable max upload speed for the current torrent(s) or globally", "U", 0, NULL },
|
||||
{ 'v', "verify", "Verify the current torrent(s)", "v", 0, NULL },
|
||||
{ 'V', "version", "Show version number and exit", "V", 0, NULL },
|
||||
{ 'w', "download-dir", "When adding a new torrent, set its download folder. Otherwise, set the default download folder", "w", 1, "<path>" },
|
||||
{ 'x', "pex", "Enable peer exchange (PEX)", "x", 0, NULL },
|
||||
{ 'X', "no-pex", "Disable peer exchange (PEX)", "X", 0, NULL },
|
||||
{ 'z', "lds", "Enable local peer discovery (LPD)", "z", 0, NULL },
|
||||
{ 'Z', "no-lds", "Disable local peer discovery (LPD)", "Z", 0, NULL },
|
||||
{ 940, "peer-info", "List the current torrent(s)' peers", "pi", 0, NULL },
|
||||
{ 0, NULL, NULL, NULL, 0, NULL }
|
||||
{ 'a', "add", "Add torrent files by filename or URL", "a", 0, NULL },
|
||||
{ 970, "alt-speed", "Use the alternate Limits", "as", 0, NULL },
|
||||
{ 971, "no-alt-speed", "Don't use the alternate Limits", "AS", 0, NULL },
|
||||
{ 972, "alt-speed-downlimit", "max alternate download speed (in KiB/s)", "asd", 1, "<speed>" },
|
||||
{ 973, "alt-speed-uplimit", "max alternate upload speed (in KiB/s)", "asu", 1, "<speed>" },
|
||||
{ 974, "alt-speed-scheduler", "Use the scheduled on/off times", "asc", 0, NULL },
|
||||
{ 975, "no-alt-speed-scheduler", "Don't use the scheduled on/off times", "ASC", 0, NULL },
|
||||
{ 976, "alt-speed-time-begin", "Time to start using the alt speed limits (in hhmm)", NULL, 1, "<time>" },
|
||||
{ 977, "alt-speed-time-end", "Time to stop using the alt speed limits (in hhmm)", NULL, 1, "<time>" },
|
||||
{ 978, "alt-speed-days", "Numbers for any/all days of the week - eg. \"1-7\"", NULL, 1, "<days>" },
|
||||
{ 963, "blocklist-update", "Blocklist update", NULL, 0, NULL },
|
||||
{ 'c', "incomplete-dir", "Where to store new torrents until they're complete", "c", 1, "<dir>" },
|
||||
{ 'C', "no-incomplete-dir", "Don't store incomplete torrents in a different location", "C", 0, NULL },
|
||||
{ 'b', "debug", "Print debugging information", "b", 0, NULL },
|
||||
{ 'd', "downlimit", "Set the max download speed in KiB/s for the current torrent(s) or globally", "d", 1, "<speed>" },
|
||||
{ 'D', "no-downlimit", "Disable max download speed for the current torrent(s) or globally", "D", 0, NULL },
|
||||
{ 910, "encryption-required", "Encrypt all peer connections", "er", 0, NULL },
|
||||
{ 911, "encryption-preferred", "Prefer encrypted peer connections", "ep", 0, NULL },
|
||||
{ 912, "encryption-tolerated", "Prefer unencrypted peer connections", "et", 0, NULL },
|
||||
{ 'f', "files", "List the current torrent(s)' files", "f", 0, NULL },
|
||||
{ 'g', "get", "Mark files for download", "g", 1, "<files>" },
|
||||
{ 'G', "no-get", "Mark files for not downloading", "G", 1, "<files>" },
|
||||
{ 'i', "info", "Show the current torrent(s)' details", "i", 0, NULL },
|
||||
{ 920, "session-info", "Show the session's details", "si", 0, NULL },
|
||||
{ 921, "session-stats", "Show the session's statistics", "st", 0, NULL },
|
||||
{ 'l', "list", "List all torrents", "l", 0, NULL },
|
||||
{ 960, "move", "Move current torrent's data to a new folder", NULL, 1, "<path>" },
|
||||
{ 961, "find", "Tell Transmission where to find a torrent's data", NULL, 1, "<path>" },
|
||||
{ 'm', "portmap", "Enable portmapping via NAT-PMP or UPnP", "m", 0, NULL },
|
||||
{ 'M', "no-portmap", "Disable portmapping", "M", 0, NULL },
|
||||
{ 'n', "auth", "Set authentication info", "n", 1, "<user:pass>" },
|
||||
{ 'N', "netrc", "Set authentication info from a .netrc file", "N", 1, "<filename>" },
|
||||
{ 'o', "dht", "Enable distributed hash tables (DHT)", "o", 0, NULL },
|
||||
{ 'O', "no-dht", "Disable distributed hash tables (DHT)", "O", 0, NULL },
|
||||
{ 'p', "port", "Port for incoming peers (Default: " TR_DEFAULT_PEER_PORT_STR ")", "p", 1, "<port>" },
|
||||
{ 962, "port-test", "Port testing", "pt", 0, NULL },
|
||||
{ 'P', "random-port", "Random port for incomping peers", "P", 0, NULL },
|
||||
{ 900, "priority-high", "Set the files' priorities as high", "ph", 1, "<files>" },
|
||||
{ 901, "priority-normal", "Set the files' priorities as normal", "pn", 1, "<files>" },
|
||||
{ 902, "priority-low", "Set the files' priorities as low", "pl", 1, "<files>" },
|
||||
{ 'r', "remove", "Remove the current torrent(s)", "r", 0, NULL },
|
||||
{ 930, "peers", "Set the maximum number of peers for the current torrent(s) or globally", "pr", 1, "<max>" },
|
||||
{ 'R', "remove-and-delete", "Remove the current torrent(s) and delete local data", NULL, 0, NULL },
|
||||
{ 800, "torrent-done-script", "Specify a script to run when a torrent finishes", NULL, 1, "<filename>" },
|
||||
{ 801, "no-torrent-done-script", "Don't run a script when torrnets finish", NULL, 0, NULL },
|
||||
{ 950, "seedratio", "Let the current torrent(s) seed until a specific ratio", "sr", 1, "ratio" },
|
||||
{ 951, "seedratio-default", "Let the current torrent(s) use the global seedratio settings", "srd", 0, NULL },
|
||||
{ 952, "no-seedratio", "Let the current torrent(s) seed regardless of ratio", "SR", 0, NULL },
|
||||
{ 953, "global-seedratio", "All torrents, unless overridden by a per-torrent setting, should seed until a specific ratio", "gsr", 1, "ratio" },
|
||||
{ 954, "no-global-seedratio", "All torrents, unless overridden by a per-torrent setting, should seed regardless of ratio", "GSR", 0, NULL },
|
||||
{ 's', "start", "Start the current torrent(s)", "s", 0, NULL },
|
||||
{ 'S', "stop", "Stop the current torrent(s)", "S", 0, NULL },
|
||||
{ 't', "torrent", "Set the current torrent(s)", "t", 1, "<torrent>" },
|
||||
{ 990, "start-paused", "Start added torrents paused", NULL, 0, NULL },
|
||||
{ 991, "no-start-paused", "Start added torrents unpaused", NULL, 0, NULL },
|
||||
{ 992, "trash-torrent", "Delete torrents after adding", NULL, 0, NULL },
|
||||
{ 993, "no-trash-torrent", "Do not delete torrents after adding", NULL, 0, NULL },
|
||||
{ 984, "honor-session", "Make the current torrent(s) honor the session limits", "hl", 0, NULL },
|
||||
{ 985, "no-honor-session", "Make the current torrent(s) not honor the session limits", "HL", 0, NULL },
|
||||
{ 'u', "uplimit", "Set the max upload speed in KiB/s for the current torrent(s) or globally", "u", 1, "<speed>" },
|
||||
{ 'U', "no-uplimit", "Disable max upload speed for the current torrent(s) or globally", "U", 0, NULL },
|
||||
{ 'v', "verify", "Verify the current torrent(s)", "v", 0, NULL },
|
||||
{ 'V', "version", "Show version number and exit", "V", 0, NULL },
|
||||
{ 'w', "download-dir", "When adding a new torrent, set its download folder. Otherwise, set the default download folder", "w", 1, "<path>" },
|
||||
{ 'x', "pex", "Enable peer exchange (PEX)", "x", 0, NULL },
|
||||
{ 'X', "no-pex", "Disable peer exchange (PEX)", "X", 0, NULL },
|
||||
{ 'z', "lds", "Enable local peer discovery (LPD)", "z", 0, NULL },
|
||||
{ 'Z', "no-lds", "Disable local peer discovery (LPD)", "Z", 0, NULL },
|
||||
{ 940, "peer-info", "List the current torrent(s)' peers", "pi", 0, NULL },
|
||||
{ 0, NULL, NULL, NULL, 0, NULL }
|
||||
};
|
||||
|
||||
static void
|
||||
|
@ -327,6 +329,8 @@ getOptMode( int val )
|
|||
case 'X': /* no-pex */
|
||||
case 'z': /* lds */
|
||||
case 'Z': /* no-lds */
|
||||
case 800: /* torrent-done-script */
|
||||
case 801: /* no-torrent-done-script */
|
||||
case 970: /* alt-speed */
|
||||
case 971: /* no-alt-speed */
|
||||
case 972: /* alt-speed-downlimit */
|
||||
|
@ -1778,6 +1782,11 @@ processArgs( const char * host, int port, int argc, const char ** argv )
|
|||
|
||||
switch( c )
|
||||
{
|
||||
case 800: tr_bencDictAddStr( args, TR_PREFS_KEY_SCRIPT_TORRENT_DONE_FILENAME, optarg );
|
||||
tr_bencDictAddBool( args, TR_PREFS_KEY_SCRIPT_TORRENT_DONE_ENABLED, TRUE );
|
||||
break;
|
||||
case 801: tr_bencDictAddBool( args, TR_PREFS_KEY_SCRIPT_TORRENT_DONE_ENABLED, FALSE );
|
||||
break;
|
||||
case 970: tr_bencDictAddBool( args, TR_PREFS_KEY_ALT_SPEED_ENABLED, TRUE );
|
||||
break;
|
||||
case 971: tr_bencDictAddBool( args, TR_PREFS_KEY_ALT_SPEED_ENABLED, FALSE );
|
||||
|
|
|
@ -101,6 +101,12 @@ to stop using the alt speed limits (in hhmm).
|
|||
Set the number of
|
||||
.Ar days
|
||||
on which to enable the speed scheduler, using a list such as "2,4-6".
|
||||
.It Fl -torrent-done-script Ar filename
|
||||
Specify a
|
||||
.Ar file
|
||||
to run each time a torrent finishes
|
||||
.It Fl -no-torrent-done-script
|
||||
Don't run any script when a torrent finishes
|
||||
.It Fl c Fl -incomplete-dir Ar dir
|
||||
When adding new torrents, store their contents in
|
||||
.Ar directory
|
||||
|
|
Loading…
Reference in a new issue