hellanzb XML-RPC
hellanzb is a fully functional XML-RPC server (and client). Most of the remote calls listed in hellanzb.py --help are done via XML RPC: hellanzb runs a client process that talks to the downloader process
The XML-RPC server supports the XML-RPC introspection API (it's self documenting).
The XML-RPC server is passworded via HTTP AUTH. The username is hardcoded to 'hellanzb' while the password is set in hellanzb.conf (defaults to 'changeme'). The URL would be something like: http://hellanzb:changeme@localhost:8760/
An example of using introspection:
Python 2.4.2 (#2, Oct 5 2005, 22:27:51)
[GCC 2.95.4 20020320 [FreeBSD]] on freebsd4
Type "help", "copyright", "credits" or "license" for more information.
>>> from xmlrpclib import ServerProxy
>>> hellanzbServer = ServerProxy('http://hellanzb:changeme@localhost:8760/')
>>> hellanzbServer.system.listMethods()
['status', 'setrarpass', 'enqueuenewzbin', 'force', 'continue', 'process', 'dequeue', 'clear', 'move', 'list', 'up', 'asciiart', 'next', 'down', 'enqueue', 'pause', 'shutdown', 'cancel', 'last', 'maxrate', 'aolsay', 'system.methodHelp', 'system.listMethods', 'system.methodSignature']
>>> hellanzbServer.system.methodSignature('enqueuenewzbin')
[['struct', 'string'], ['struct', 'int']]
>>> hellanzbServer.system.methodHelp('enqueuenewzbin')
' Download the NZB with the specified NZB ID from www.newzbin.com, and enqueue it '
>>> from pprint import pprint
>>> responseStruct = hellanzbServer.enqueuenewzbin(9991199)
>>> pprint responseStruct
{'currently_downloading': [],
'currently_processing': [{'id': 1,
'nzbName': 'The_Advantage-berkeley_live'}],
'eta': 0,
'is_paused': False,
'log_entries': [{'INFO': 'Parsed: 54 posts (5 files, skipping 2 on disk files & 2 par files)'},
{'INFO': 'Transferred 4.1MB in 14s at 287.1KB/s'},
{'INFO': ''},
{'INFO': 'BearShare: Verifying via par group: BearShare4.cbr*.{par2,PAR2}..'},
{'INFO': 'BearShare: Finished par verify (1 par group, took: 0s)'},
{'INFO': 'BearShare: Unraring BearShare4.cbr..'},
{'INFO': 'BearShare: Finished unraring (1 rar group, took: 1s)'},
{'INFO': 'BearShare: Finished processing (took: 2s)'},
{'INFO': 'The_Advantage-berkeley_live: Finished par verify (1 par group, took:58s)'},
{'INFO': 'The_Advantage-berkeley_live: Unraring The Advantage art.rar..'},
{'INFO': 'The_Advantage-berkeley_live: Finished unraring (1 rar group, took: 1s)'},
{'INFO': 'The_Advantage-berkeley_live: Decompressing 4 files via 2 threads..'},
{'INFO': 'The_Advantage-berkeley_live: Decompressing to wav: CD101- Mega Man.flac'},
{'INFO': 'The_Advantage-berkeley_live: Decompressing to wav: CD102- Z (pt. 1).flac'},
{'INFO': 'Downloading newzbin NZB: 9991199 '}],
'maxrate': 0,
'percent_complete': 0,
'queued': [],
'queued_mb': 0,
'rate': 0,
'time': <DateTime u'20060210T16:54:52' at 829a0ac>,
'total_dl_files': 20,
'total_dl_mb': 733,
'total_dl_nzbs': 4,
'total_dl_segments': 1055,
'uptime': '00:43',
'version': '0.9-trunk'}
>>> for x in hellanzbServer.system.listMethods():
... print x
... print hellanzbServer.system.methodSignature(x)
... print hellanzbServer.system.methodHelp(x)
...
force
[['struct', 'string'], ['struct', 'int']]
Force hellanzb to begin downloading the NZB with the specified ID immediately,
interrupting the current download
process
[['struct', 'string'], ['struct', 'string', 'string']]
Post process the specified directory. The -p option is preferable -- it will do this
for you, or use the current process if this XML-RPC call fails
dequeue
[['list', 'string'], ['list', 'int']]
Remove the NZB with specified ID from the queue
move
[['list', 'string', 'string'], ['list', 'int', 'int']]
Move the NZB with the specified ID to the specified index in the queue
down
[['list', 'string'], ['list', 'int'], ['list', 'string', 'string'], ['list', 'int', 'int']]
Move the NZB with the specified ID down in the queue. The optional second argument
specifies the number of spaces to shift by (Default: 1)
cancel
[['struct']]
Cancel the current download and move the current NZB to Hellanzb.TEMP_DIR
shutdown
[['boolean']]
Shutdown hellanzb. Will quietly kill any post processing threads that may exist
asciiart
[['string']]
Return a random ascii art
aolsay
[['string']]
Return a random aolsay (from Da5id's aolsay.scr)
setrarpass
[['struct', 'int', 'string'], ['struct', 'string', 'string']]
Set the rarPassword for the NZB with the specified ID
enqueueurl
[['struct', 'string']]
Download the NZB at the specified URL, and enqueue it
next
[['list', 'string'], ['list', 'int']]
Move the NZB with the specified ID to the beginning of the queue
maxrate
[['int'], ['int', 'string'], ['int', 'int']]
Return the Hellanzb.MAX_RATE (maximum download rate) value. Specify a second argument
to change the value -- a value of zero denotes no maximum rate
status
[['struct']]
Return hellanzb's current status text
enqueuenewzbin
[['struct', 'string'], ['struct', 'int']]
Download the NZB with the specified NZB ID from www.newzbin.com, and enqueue it
enqueue
[['struct', 'string'], ['struct', 'string', 'string']]
Add the specified NZB file to the end of the queue
pause
[['struct']]
Pause downloading
last
[['list', 'string'], ['list', 'int']]
Move the NZB with the specified ID to the end of the queue
clear
[['struct'], ['struct', 'boolean']]
Clear the current nzb queue. Specify True as the second argument to clear anything
currently downloading as well (like the cancel call)
list
[['list'], ['list', 'boolean']]
List the NZBs in the queue, along with their NZB IDs. Specify True as the second
argument to exclude the NZB ID in the listing. Returns a list of structs (nzbid -> nzbName). Excluding the NZB IDs returns a list of nzbName strings
up
[['list', 'string'], ['list', 'int'], ['list', 'string', 'string'], ['list', 'int', 'int']]
Move the NZB with the specified ID up in the queue. The optional second argument
specifies the number of spaces to shift by (Default: 1)
continue
[['struct']]
Continue downloading after being paused
system.methodHelp
[['string', 'string']]
Return a documentation string describing the use of the given method.
system.listMethods
[['array']]
Return a list of the method names implemented by this server.
system.methodSignature
[['array', 'string'], ['string', 'string']]
Return a list of type signatures.
Each type signature is a list of the form [rtype, type1, type2, ...]
where rtype is the return type and typeN is the type of the Nth
argument. If no signature information is available, the empty
string is returned.
Calls typically take both strings and ints where appropriate, for example the enqueuenewzbin call shown above
Calls typically return one of:
- boolean, if they completed successfully or not
- list (of items in the queue)
- struct (the status struct shown above)
The method signatures can be determined from the introspection docs. For more information on XML-RPC introspection go here: http://ldp.kernelnotes.de/HOWTO/XML-RPC-HOWTO/xmlrpc-howto-interfaces.html
XML-RPC TODO: better introspection docs
