
irctor-queue - Log RTorrent actions to a file

This program is meant to be called by RTorrent's event handlers. It logs actions to a log file based on the arguments it receives.
Optionally, when RTorrent tells it that a torrent has finished, irctor-queue can inspect the downloaded content and call unrar(1) in these situations:
POE::Component::IRC::Plugin::RTorrentStatus follows the log file created by this program and announces various events on IRC.

.rtorrent.rc must have the following lines in it.
/tmp/torrentlog is the log file it will write to.
Change it if you want to keep it elsewhere.
Note that irctor_finished needs to know where you keep your completed files (last argument).
# irctor-queue hooks, with unrar system.method.set_key = event.download.inserted_new,irctor_inserted_new,"execute=irctor-queue,/tmp/torrentlog,inserted_new,$d.get_name=,$d.get_size_bytes=1,$d.get_tied_to_file=1" system.method.set_key = event.download.hash_queued, irctor_hash_queued, "execute=irctor-queue,/tmp/torrentlog,hash_queued, $d.get_name=,$d.get_size_bytes=1,$d.get_completed_bytes=1,$d.get_tied_to_file=1,$d.get_complete=1,$d.get_down_total=1" system.method.set_key = event.download.finished, irctor_finished, "execute=irctor-queue,/tmp/torrentlog,finished, $d.get_name=,$d.get_base_filename=1,/home/leech/torrent/complete" system.method.set_key = event.download.erased, irctor_erased, "execute=irctor-queue,/tmp/torrentlog,erased, $d.get_name=,$d.get_size_bytes=1,$d.get_completed_bytes=1,$d.get_up_total=1,$d.get_ratio=1"
Note: If you don't get any "Finished" events, it's probably because you have check_hash = no in your RTorrent config. Remove it. If you have any other problems, you should add e.g. log.execute = /tmp/exec.log to store any errors RTorrent experiences when executing event hooks.
If wou want the unrar functionality, you must edit the irctor_finished line by adding a 1 argument to the end:
system.method.set_key = event.download.finished, irctor_finished, "execute=irctor-queue,/tmp/torrentlog,finished, $d.get_name=,$d.get_base_filename=1,/home/leech/torrent/complete,1"
If you have an RTorrent hook which moves completed downloads to some directory, make sure the name of that hook comes before (according to ASCII sorting) the name of the irctor_finished hook. This is necessary because RTorrent executes hooks in alphabetical order.
If an unrar operation fails we try to report the error message, but in some cases an empty message will be delivered. One such case is when unrar fails due to reaching the user's disk quota, because the error message will be delivered to the process' controlling terminal, which we don't catch (yet).

Hinrik Örn Sigurðsson, hinrik.sig@gmail.com

Copyright 2010 Hinrik Örn Sigurðsson
This program is free software, you can redistribute it and/or modify it under the same terms as Perl itself.