Mac OS - Launch script on torrent completion

Ask for help and report issues with the Mac OS X version of Transmission
Post Reply
crendore
Posts: 3
Joined: Fri Oct 09, 2020 11:21 pm

Mac OS - Launch script on torrent completion

Post by crendore »

There are several threads on this board about this topic, but most of them are 10+ years old, and incorrect. For example:
viewtopic.php?t=10636

And rather than gravedig that thread or any of the others i'm starting a new thread. I am trying to figure out if it is possible to launch a script automatically when torrents complete downloading.
most threads will suggest modifying

Code: Select all

~/Library/Preferences/org.m0k.transmission.plist
And adding two new keys:

Code: Select all

script-torrent-done-enabled Boolean Yes
script-torrent-done-filename String "/path/to/your/script.sh";
I believe this is incorrect because all the other keys in this plist are camel case not hyphen separated, I believe the keys should be like this:

Code: Select all

ScriptTorrentDoneEnabled Boolean Yes
ScriptTorrentDoneFilename  String "/path/to/your/script.sh";
But even with this change I am not seeing any results when torrents complete my script does not run. Does anyone have this working successfully?
crendore
Posts: 3
Joined: Fri Oct 09, 2020 11:21 pm

Re: Mac OS - Launch script on torrent completion

Post by crendore »

OK I gave up on trying to get this shell script to trigger from transmission, here's a more ghetto solution to auto unrar completed torrents using python and crontab.

You'll need to install

Code: Select all

 pip install transmission-rpc
main script: transmission.py

Code: Select all

from transmission_rpc import Client
import subprocess, os, time

#use a better username and password this is just an example
rpc_client = Client(username="user", password="pass")

def extract_archives(torrent):
	directory = f'{torrent.downloadDir}/{torrent.name}/'
	if os.path.isdir(directory):
		for file in os.listdir(directory):
			if file.endswith(".part"):
				# download not complete yet!
				return False
		for file in os.listdir(directory):
			if file.endswith(".rar"):
				subprocess.Popen(['/usr/local/bin/unrar', 'e', '-o-', file], cwd=directory)
				return True
	else: 
		return True

# load existing torrents from previous run
existing_torrents = []
with open('existing_torrents', 'r') as existing_torrents_file:
	existing_torrents = [line.rstrip() for line in existing_torrents_file] 

# look for any new torrents, extract if completed
for torrent in rpc_client.get_torrents():
	if torrent.hashString not in existing_torrents:
		if torrent.status != "downloading":
			# extract torrents that started in the last 24 hours that haven't been extracted yet
			if torrent.addedDate > (time.time() - 24 * 60 * 60):
				if extract_archives(torrent):
					existing_torrents.append(torrent.hashString)
			else:
				existing_torrents.append(torrent.hashString)

with open('existing_torrents', 'w') as existing_torrents_file:		
	existing_torrents_file.write("\n".join(existing_torrents))
crontab entry:

Code: Select all

* * * * * cd  /path/to/the/place/you/saved/the/script/ && /path/to/your/python/virtual/environment/bin/python /path/to/the/place/you/saved/the/script/transmission.py > /path/to/the/place/you/saved/the/script/autounrar.log
mike.dld
Transmission Developer
Posts: 290
Joined: Wed Dec 25, 2013 10:56 pm

Re: Mac OS - Launch script on torrent completion

Post by mike.dld »

Preferences dialog -> Transfers -> Management tab -> Call Script: When download completes: (at the bottom of the dialog)
crendore
Posts: 3
Joined: Fri Oct 09, 2020 11:21 pm

Re: Mac OS - Launch script on torrent completion

Post by crendore »

Well shit...i feel really dumb now.

Thanks!
mbacollege
Posts: 1
Joined: Thu Oct 22, 2020 5:28 am

Re: Mac OS - Launch script on torrent completion

Post by mbacollege »

BEST MBA COLLEGE IN NCR
www.abes.ac.in
To take the year 2020 to such a level that it is an equal partner of the other leading institutions of the world to provide leadership to the international education system and is rated as one of the top world institutions which produces world-class competent and dedicated technical and managerial human resource embedded in traditional Indian values and positive attitudes.
Post Reply