想要从 rutorrent/rtorrent 转移到 deluge,但保留我所有的 torrent 标签,我通过修改一些 rutorrents php 文件并使用一些自定义 javascript 来解决这个问题。
答案1
该解决方案使用 rutorrent 附带的“源”插件。
首先,我改变了 rutorrent 的默认行为,将 .torrent 保存到指定目录,而不是在浏览器中提供下载: (将“/media/sdf1/home/torrents/”替换为您创建的用于放置 .torrent 文件的目录的绝对路径)
/rutorrent/php/Torrent.php
public function send( $filename = null )
{
if(is_null( $filename ))
$filename = $this->info['name'].'.torrent';
if(isset($_SERVER['HTTP_USER_AGENT']) && strstr($_SERVER['HTTP_USER_AGENT'],'MSIE'))
$filename = rawurlencode($filename);
//header( 'Content-Disposition: attachment; filename="'.$filename.'"' );
//cachedEcho( $this->__toString(), 'application/x-bittorrent', true );
$fp = fopen("/media/sdf1/home/torrents/".$filename, 'w');
fwrite($fp, $this->__toString());
fclose($fp);
}
那么这一位是可选的,只是防止在发送函数没有返回任何内容时引发错误,尽管它仍然可以工作。
/rutorrent/插件/source/action.php
if(isset($_REQUEST['hash']))
{
$torrent = rTorrent::getSource($_REQUEST['hash']);
if($torrent)
$torrent->send();
}
//header("HTTP/1.0 302 Moved Temporarily");
//header("Location: ".$_SERVER['PHP_SELF'].'?result=0');
现在,实际的脚本(在 javascript 中)会遍历 rutorrent 中可见的种子列表,因此单击所需的标签,然后运行此代码,可以在 js 文件中运行,也可以像我一样通过 firebug js 控制台运行。请注意,它只能处理“首屏”可见的种子,您必须向下滚动并重新运行它,以处理在一个屏幕高度内不可见的所有种子“页面”,但如果您最大化屏幕尺寸和窗格尺寸,您将获得尽可能多的内容。(如果有重复,请不要担心,这不会影响任何事情)
//can only do visible torrents, so have to scroll and execute again
var torrents = new Array();
$("#List .stable-body tr").each(function(i){
torrents[i] = $( this ).attr("id");
})
var count = torrents.length;
var i = 0;
console.log( torrents );
function request(torrent){
if(i == count){
console.log( i+'/'+count );
console.log( "DONE" );
return;
}
$.get( "plugins/source/action.php", { hash: torrent}, function( data ) {
i++;
request(torrents[i]);
});
console.log( i+'/'+count );
}
request(torrents[0]);
现在该视图的 .torrent 文件将位于指定文件夹中。移动它们、添加它们、标记它们,然后对其他视图/标签重复此操作。