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
сообщение 7.3.2009, 1:39
Сообщение #2


Участник
**

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



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

## Директория, за которой наблюдает rtorrent.
tdirectory = /data/.torrents/

## Директория, в которую складываются не пропатченые торренты после обработки патчером.
odirectory = /data/share/torrents/.old/

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

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


patcher.pl(теперь его править не нужно):
CODE
#!/usr/bin/perl

require "/root/scripts/tf.pl";

open (CONFIG, "/root/scripts/patcher.conf") or die "Cannot open file: $!";
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 "odirectory") {
$odirectory = $arg;
}
if ($param eq "gorod") {
$gorod = $arg;
}
if ($param eq "prov") {
$prov = $arg;
}
}
}
close (CONFIG);

$isp="$gorod\+$prov";

opendir (TRR, "$fdirectory") || die "$!";
@tr = grep { !/^\.{1,2}$/ && (-f "$fdirectory"."/".$_) && /.torrent$/i } readdir TRR;
closedir TRR;

open(RTR, "/root/scripts/retrackers.txt") || die "$!";
my @retrackers=<RTR>;
close RTR;

if (!defined @tr) {
exit 0;
} else {
foreach $tr(@tr) {
chomp $tr;
$torrentfile = "$fdirectory/$tr";
$torrent = new TF ("$torrentfile");
$size = $torrent->length();
if ($size == 0) {
$filesref = $torrent->files();
@files = @{$filesref};
foreach (@files) {
%file = %{$_};
$size = $size + $file{'length'};
}
}
$comment = $torrent->publisherurl();
# $comment =~ s/([^A-Za-z0-9])/sprintf("%%%02X", ord($1))/seg;
$a = $torrent->announce();
@list = ([($a)]);
foreach $retracker (@retrackers) {
chomp $retracker;
$b="$retracker?name=&size=$size&comment=$comment&isp=$isp";
@list=(@list, [($b)]);
}
$torrent->announcelist(@list);
$torrent->save("$tdirectory/$tr");
system("mv -f \"$fdirectory$tr\" \"$odirectory$tr\"");
}
}


+ подкрутил тестер ретрекеров.
test.pl:
CODE
#!/usr/bin/perl
use LWP::Simple;
use IO::Socket;
use Config::IniFiles;
use POSIX;
use strict;
use Text::Iconv;
no utf8;

my $gorod;
my $prov;
open (CONFIG, "/root/scripts/patcher.conf") or die "Cannot open file: $!";
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 "gorod") {
$gorod = $arg;
}
if ($param eq "prov") {
$prov = $arg;
}
}
}
close (CONFIG);
my $u2k=new Text::Iconv("utf-16","koi8-r//translit");
my $list=$u2k->convert(get "http://re-tracker.ru/trackerssimple.ini");

open (INI, ">/root/scripts/trackerssimple.ini");
print INI "$list";
close (INI);

my $subject = Config::IniFiles->new( -file => '/root/scripts/trackerssimple.ini' );
my $gorod = $subject->val("Город", "$gorod");
my $prov = $subject->val("Провайдеры $gorod", "$prov");

my @values = $subject->Parameters("Ретрекеры $gorod $prov");
my @list;
foreach (@values) {
my $retracker = $subject->val("Ретрекеры $gorod $prov", $_);
if ($retracker=~ m!(http://[^/]+/[^\s]+)!ig) {
push(@list, $&);
}
}
@list = sort(@list);
my $p="";
my $out="";
binmode STDOUT,":bytes";
for my $t(@list) {
next if $t eq $p;
$p=$t;
$t=~m#//(.+?)sad.gif\d+)/#;
my $s=new IO::Socket::INET(PeerAddr=>$1,PeerPort=>$2,Timeout=>2);
if($s) {
$out .= "$t\n";
close $s;
}
}
open (RTR, ">/root/scripts/retrackers.txt");
print RTR "$out";
close (RTR);

В крон допустим каждую ночь:
Код
crontab -e
0       0       *       *       *       /root/scripts/test.pl


В файле tf.pl по прежнему почма.
У меня впринципе все работает, но мож будут проблемы с кодировкой.
Код
~/scripts/>uname -a
FreeBSD gw.home.net 7.1-RELEASE-p1 FreeBSD 7.1-RELEASE-p1 #2: Sun Feb 22 22:36:03 MSK 2009     kolobok@gw.home.net:/usr/obj/usr/src/sys/GW  i386
Причина редактирования: codebox

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


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

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

Сообщений в этой теме
- 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


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

 



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