KTorrent: Movendo dados em um script de shell

4

Estou tentando fazer um script para minha pasta mágica que moverá os arquivos para um diretório de propagação sem que o KTorrent perca a noção de onde os dados estão, semelhante à ação do menu de contexto "Mover Dados" no aplicativo. Eu procurei a API do dbus e é isso que eu tenho até agora:

for x in 'qdbus org.ktorrent.ktorrent /core org.ktorrent.core.torrents'; do
    name='qdbus org.ktorrent.ktorrent /torrent/$x org.ktorrent.torrent.name'
    if [ "$name" = "$1" ]; then
        # Tell KTorrent to move the data to the seeding directory
    fi
done

O problema é que não consigo encontrar nada em A API para fazer isso, ou até mesmo para definir o novo local depois de movê-lo manualmente.

Eu joguei com a idéia de fazer isso manipulando diretamente a GUI para ativar a ação do menu de contexto (se eu pudesse chegar tão longe, eu ficaria satisfeito) e encontrei isto:

qdbus org.ktorrent.ktorrent /ktorrent/MainWindow_1 org.kde.KMainWindow.activateAction view_move_data

Que faz o que eu quero, mas sempre para o torrent atualmente selecionado, e eu não consigo nem descobrir o primeiro passo para selecionar o torrent que eu realmente quero mover.

Alguma idéia?

    
por mcs 15.06.2012 / 06:16

1 resposta

1

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:

link

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
    
por 05.07.2012 / 06:23