Um exemplo rápido e sujo usando o código do projeto pyinotify [http://github.com/seb-m/pyinotify]
Você precisará alterar o WATCHED_DIR para o diretório que contém os arquivos ODT. Lembre-se também de instalar o unoconv primeiro.
# Notifier example from tutorial
#
# See: http://github.com/seb-m/pyinotify/wiki/Tutorial
#
# odtwatcher.py
import os
import pyinotify
import subprocess
WATCHED_DIR = '/tmp/test'
wm = pyinotify.WatchManager() # Watch Manager
mask = pyinotify.IN_MODIFY
class EventHandler(pyinotify.ProcessEvent):
def process_IN_MODIFY(self, event):
fname = event.pathname
if os.path.splitext(fname)[1] == '.odt':
print 'MODIFIED: ', fname
args = ['unoconv', '-f', 'pdf', fname]
try:
subprocess.Popen(args)
except OSError as e:
print 'Could not convert file %s to PDF. Error %s' % (fname, str(e))
if __name__ == '__main__':
handler = EventHandler()
notifier = pyinotify.Notifier(wm, handler)
wdd = wm.add_watch(WATCHED_DIR, mask, rec=True)
notifier.loop()
Salve isso como odtwatcher.py e execute-o em segundo plano
python odtwatcher.py &