IPB

Здравствуйте, гость ( Вход | Регистрация )

patcher для rtorrent, на основе патчера псевдотрекер
kolobok3D
сообщение 5.3.2009, 21:53
Сообщение #1


Участник
**

Группа: Пользователи
Сообщений: 27
Регистрация: 22.2.2009
Пользователь №: 569



Версия 1.1
Конфиг:
Код
/usr/local/scripts/tr_patcher/>more patcher.conf
# Директория, за которой следит patcher.
fdirectory = /data/rtorrent/torrents

# Директория, в которую patcher скидывает торренты после добавления ретрекеров.
tdirectory = /data/rtorrent/.torrents

# Директория session из конфига rTorrent
sdirectory = /data/rtorrent/.session

# Город
gorod = 2

# Провайдер
prov = 1


Опции запуска:
Код
Проверяет папку fdirectory на наличие торрентов, патчит найденные и сохраняет в tdirectory.
./patcher.pl -p


Код
Патчит уже добавленныe в rTorrent торренты (перед запуском нужно остановить rTorrent).
./patcher.pl -c


Код
Обновляет список ретрекеров и проверяет их доступность.
./patcher.p -u


При первом запуске автоматически обновляет список ретрекеров и проверяет их доступность.

Для работы нужен перл собранный с поддержкой threads и модули LWP::Simple Text::Iconv.
скачать


--------------------

| Перово | Ивановское| Новогиреево | Новокосино |
| Тыкалка |
Перейти в начало страницы
 
+Цитировать сообщение
 
Начать новую тему
Ответов
kolobok3D
сообщение 14.3.2009, 18:49
Сообщение #2


Участник
**

Группа: Пользователи
Сообщений: 27
Регистрация: 22.2.2009
Пользователь №: 569



Спасибо за идею, но я поступил немного подругому:
Все в операции выполняет 1 скрипт.
т.к. у меня FreeBSD и запускаю я rtorrent вот так:
Код
#!/bin/sh
export HOME=/home/kolobok/
/usr/bin/su -m kolobok -c '/usr/local/bin/screen -dmS rt /usr/local/bin/rtorrent -n -o import=/usr/local/etc/rtorrent.conf'

чтобы пропатчить активные торренты, приходится останавливать торрент вручную, патчить и опять вручную запускать.
активные торренты патчатся командой:
Код
/путь_к_патчеру/patcher.pl current

обновление ретрекеров:
Код
/путь_к_патчеру/patcher.pl update


patcher.conf:
Код
## Деректория, которую шедулит патчер и берет новые торренты.
fdirectory = /data/share/torrents/

## Директория, в которую патчер отдает пропатченые торренты rtorrent'у.
tdirectory = /data/.torrents/

## Директория, где rtorrent хранит торренты
sdirectory = /data/.session/

## Город (2 - Москва)
gorod = 2

## Номер провайдера в городе (1 - Корбина(Москва))
prov = 1


patcher.pl:
CODE
#!/usr/bin/perl

$cur_dir = `dirname $0`;
$cur_dir =~ s/\n//;
$opt = @ARGV[0];
require "$cur_dir/tf.pl";

open (CONFIG, "$cur_dir/patcher.conf") || die "Cannot open file $cur_dirpatcher.conf: $!";
while (<CONFIG>) {
my $comment = '#';
if(/^$comment/) {
}
else {
my ($param,$arg) = split("=",$_);
chomp $param;
chomp $arg;
$param =~ s/\s//g;
$arg =~ s/\s//g;
if ($param eq "fdirectory") {
$fdirectory = $arg;
}
if ($param eq "tdirectory") {
$tdirectory = $arg;
}
if ($param eq "sdirectory") {
$sdirectory = $arg;
}
if ($param eq "gorod") {
$gorod = $arg;
}
if ($param eq "prov") {
$prov = $arg;
}

}
}
close (CONFIG);

$isp="$gorod+$prov";

if ($opt eq update) {
use LWP::Simple;
use IO::Socket;
use Config::IniFiles;
use Text::Iconv;

$u2k=new Text::Iconv("utf-16","koi8-r//translit");
$list=$u2k->convert(get "http://re-tracker.ru/trackerssimple.ini");
open (INI, ">/tmp/trackerssimple.ini");
print INI "$list";
close (INI);
$subject = Config::IniFiles->new( -file => '/tmp/trackerssimple.ini' );
$gorod = $subject->val("Город", "$gorod");
$prov = $subject->val("Провайдеры $gorod", "$prov");
@values = $subject->Parameters("Ретрекеры $gorod $prov");
foreach (@values) {
$retracker = $subject->val("Ретрекеры $gorod $prov", $_);
if ($retracker=~ m!(http://[^/]+/[^\s]+)!ig) {
push(@list, $&);
}
}
@list = sort(@list);
binmode STDOUT,":bytes";
for $t(@list) {
next if $t eq $p;
$p=$t;
$t=~m#//(.+?)sad.gif\d+)/#;
$s=new IO::Socket::INET(PeerAddr=>$1,PeerPort=>$2,Timeout=>2);
if($s) {
$out .= "$t\n";
close $s;
}
open (RTR, ">/tmp/retrackers.txt");
print RTR "$out";
close (RTR);
}
exit 0;
}

open(RTR, "/tmp/retrackers.txt") || die "Cannot open file retrackers.txt: $!";
my @retrackers=<RTR>;
close RTR;

sub patch {
$torrent = new TF ("$torrentfile");
$a = $torrent->announce();
@list = ([($a)]);
foreach $retracker (@retrackers) {
chomp $retracker;
$b="$retracker";
if ($retracker eq "http:\/\/re-tracker.ru:mega_shok.gif\/announce.php") {
$size = $torrent->length();
if ($size == 0) {
$filesref = $torrent->files();
@files = @{$filesref};
foreach (@files) {
%file = %{$_};
$size = $size + $file{'length'};
}
}
$comment = $torrent->publisherurl();
if (!defined $comment) {
$comment = $torrent->comment();
}
# $comment =~ s/([^A-Za-z0-9])/sprintf("%%%02X", ord($1))/seg;
$b="$retracker?name=&size=$size&comment=$comment&isp=$isp";
}
@list=(@list, [($b)]);
}
$torrent->announcelist(@list);
}

if ($opt eq current) {
opendir (TRR, "$sdirectory") || die "Cannot open $sdirectory: $!";
@tr = grep { !/^\.{1,2}$/ && (-f "$sdirectory"."/".$_) && /.torrent$/i } readdir TRR;
closedir TRR;
if (!defined @tr) {
exit 0;
} else {
foreach $tr(@tr) {
chomp $tr;
$torrentfile = "$sdirectory/$tr";
patch $torrentfile;
$torrent->save("$sdirectory/$tr");
}
}
} else {
opendir (TRR, "$fdirectory") || die "Cannot open $sdirectory: $!";
@tr = grep { !/^\.{1,2}$/ && (-f "$fdirectory"."/".$_) && /.torrent$/i } readdir TRR;
closedir TRR;
if (!defined @tr) {
exit 0;
} else {
foreach $tr(@tr) {
chomp $tr;
$torrentfile = "$fdirectory/$tr";
patch $torrentfile;
$torrent->save("$tdirectory/$tr");
system ("rm -f \"$fdirectory/$tr\"");
}
}
}
exit 0;

перед первым запуском нужно выполнить:
Код
/путь_к_патчеру/patcher.pl update

потом от root выполнить crontab -e и добавить следующие записи:
Код
*/1      *       *       *       *       /путь_к_патчеру/patcher.pl
0        0       *       *       *       /путь_к_патчеру/patcher.pl update


+ исправил добавление comment для nnm-club.ru
+ список ретрекеров открывается 1 раз
+ теперь не сохраняются торренты в odirectory
+ данные статистики добавляются только для re-tracker.ru
Причина редактирования: codebox

Прикрепленные файлы
Прикрепленный файл  patcher.tar.gz ( 3.92 килобайт ) Кол-во скачиваний: 29
 


--------------------

| Перово | Ивановское| Новогиреево | Новокосино |
| Тыкалка |
Перейти в начало страницы
 
+Цитировать сообщение

Сообщений в этой теме
- kolobok3D   patcher для rtorrent   5.3.2009, 21:53
- - FreeM@N   Спасибо, нужно будет затестить... Скрипт для пров...   6.3.2009, 12:59
- - kolobok3D   Ну получилось что-то patcher.conf: Код## Деректори...   7.3.2009, 1:39
- - FreeM@N   Какие-либо проблемы замечены? А зачем столько дире...   13.3.2009, 1:54
- - kolobok3D   "fdirectory = /data/share/torrents/" шед...   13.3.2009, 10:23
- - FreeM@N   Ура! Оно заработало! Не так как хотелось ...   14.3.2009, 1:21
- - kolobok3D   Спасибо за идею, но я поступил немного подругому: ...   14.3.2009, 18:49
- - FreeM@N   А что, так даже лучше Единственно что - если фай...   14.3.2009, 23:34
- - kabachok   какой во фре нужен модуль для use LWP::Simple; ? н...   15.3.2009, 21:14
- - kolobok3D   FreeBSD Кодmake -C /usr/ports/www/p5-libwww instal...   17.3.2009, 5:50
- - FreeM@N   Как показала практика retrackers.txt лучше хранить...   20.3.2009, 1:25
- - FreeM@N   Ещё чуток поковырял patcher.pl...поправил пару оши...   22.3.2009, 20:15
- - kolobok3D   как то так.... Кодif ($opt eq "update...   10.4.2009, 23:55
|- - FreeM@N   Цитата(kolobok3D @ 10.4.2009, 23:55) как ...   11.4.2009, 11:59
- - drAX   А не могли бы вы выложить актуальную версию патчер...   18.5.2009, 14:58
|- - FreeM@N   Цитата(drAX @ 18.5.2009, 15:58) А не могл...   18.5.2009, 22:27
- - fat.hamster   1) для юзеров "ниже среднего" в линухе (...   2.6.2009, 17:09
|- - FreeM@N   Цитата(fat.hamster @ 2.6.2009, 18:09) ......   3.6.2009, 0:08
- - Dekabrist   Почемуто не могу скачать...   4.6.2009, 5:23
- - fat.hamster   Цитата(FreeM@N @ 3.6.2009, 0:08) Попробуй...   30.6.2009, 17:26
|- - FreeM@N   Цитата(fat.hamster @ 30.6.2009, 18:26) .....   30.6.2009, 17:43
|- - Vanzent   А можно как-то сделать так, что бы пачер не забива...   20.7.2009, 21:58
|- - FreeM@N   Цитата(Vanzent @ 20.7.2009, 22:58) А можн...   21.7.2009, 10:47
- - kolobok3D   Обновил первый пост   25.7.2009, 0:09
|- - FreeM@N   Цитата(kolobok3D @ 25.7.2009, 1:09) Обнов...   25.7.2009, 0:24
|- - kolobok3D   Цитата(FreeM@N @ 25.7.2009, 1:24) А как с...   25.7.2009, 0:49
- - drAX   Цитата(Vanzent @ 20.7.2009, 22:58) А можн...   26.10.2009, 2:42
- - Dyr   Да лехко! Можете посмотреть на мой патчер и по...   24.11.2009, 13:46
- - drAX   Цитата(Dyr @ 24.11.2009, 14:46) Да лехко...   26.11.2009, 13:25
- - banec   Цитата(Dyr @ 24.11.2009, 13:46) Да лехко...   27.11.2015, 16:30


Ответить в данную темуНачать новую тему
18 чел. читают эту тему (гостей: 18, скрытых пользователей: 0)
Пользователей: 0

 



RSS Текстовая версия Сейчас: 1.11.2024, 2:42
Top.Mail.Ru