KTorrent:在 shell 脚本中移动数据

我正在尝试为我的魔法文件夹制作一份手稿,它将文档移动到种子目录,而不会将 KTorrent 放错信息所在的位置,类似于应用程序中的“移动数据”上下文菜单活动。 我已经围绕 dbus API 进行了研究,这就是我到目前为止所拥有的:

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

问题是我在 API 中找不到任何东西来做到这一点,甚至在手动重新定位后设置新位置。

我很喜欢通过直接调整到 GUI 来激活上下文食物选择活动的建议(如果我能得到那么多,我肯定会很高兴),并且还发现了这一点:

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

对于当前选择的洪流,它始终满足我的愿望,我什至无法找到选择我真正打算移动的洪流的第一步。

任何类型的建议?

4
2022-06-07 14:40:39
资源 分享
答案: 1

我找到了一个更好的选择来解决我的问题。 我没有将完成的下载移动到详细信息目录并在完成后返回,而是制作了一个 KTorrent 脚本来捕获完成的信号并产生一个符号链接到我想在其中查看它们的目录中的文件。当我使用它们时,我可以简单地删除符号链接,而无需重新定位实际信息,无论如何这更有效。

我已经制作了打包的手稿,并且在这里也可以轻松获得源代码:

http://schmunsler.no-ip.org/code/shared/file_linker/

不过这里我把原稿的素材上传到这里,只是举例。

#!/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
1
2022-06-07 19:37:26
资源