Желая перейти с rutorrent/rtorrent на deluge, но сохранить все мои метки торрентов, я разработал этот способ, изменив некоторые из php-файлов rutorrents и используя некоторый пользовательский javascript.
1 ответ
Это решение использует плагин 'source', упакованный с 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);
}
Тогда этот бит является необязательным, просто предотвращает появление ошибки, когда функция send send ничего не возвращает, хотя все еще работает.
/rutorrent/plugins/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 для этого представления будут в указанной папке. Переместите их, добавьте их, пометьте их, затем повторите для других представлений / меток.