Eu encontrei uma solução melhor para o meu problema. Em vez de ter meus downloads concluídos movidos para um diretório específico e, em seguida, movidos de volta quando termino com eles, criei um script do KTorrent que captura o sinal finalizado e cria um link simbólico para os arquivos no arquivo. diretório que eu quero vê-los dentro Quando eu terminar com eles, eu posso apenas apagar o link simbólico e nunca ter que mover os dados reais, o que é muito mais eficiente de qualquer maneira.
Eu criei o script e a fonte de pacote disponíveis aqui:
mas vou postar o conteúdo do script principal aqui apenas no caso.
#!/usr/bin/env kross
# -*- coding: utf-8 -*-
import KTorrent
import KTScriptingPlugin
import Kross
import os
import socket
class FileLinker:
def __init__(self):
self.link_dir = KTScriptingPlugin.readConfigEntry("downloads","completedDir",os.path.expanduser("~/"))+"/"
if self.link_dir.startswith("file://"):
self.link_dir = self.link_dir[7:]
KTorrent.log("linkDir is "+self.link_dir)
KTorrent.connect("torrentAdded(const QString &)",self.torrentAdded)
tors = KTorrent.torrents()
# bind to signals for each torrent
for t in tors:
self.torrentAdded(t)
def torrentFinished(self,tor):
KTorrent.log("Symlinking "+tor.pathOnDisk()+" to "+self.link_dir+tor.name())
os.symlink(""+tor.pathOnDisk(),""+self.link_dir+tor.name())
def connectSignals(self,tor):
KTorrent.log("connectSignals " + tor.name())
tor.connect("finished(QObject* )",self.torrentFinished)
def torrentAdded(self,ih):
tor = KTorrent.torrent(ih)
self.connectSignals(tor)
# load settings
linker = FileLinker()
def unload():
global linker
del linker