-1

Желая перейти с rutorrent/rtorrent на deluge, но сохранить все мои метки торрентов, я разработал этот способ, изменив некоторые из php-файлов rutorrents и используя некоторый пользовательский javascript.

1 ответ1

-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 для этого представления будут в указанной папке. Переместите их, добавьте их, пометьте их, затем повторите для других представлений / меток.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .