patcher для rtorrent, на основе патчера псевдотрекер |
Здравствуйте, гость ( Вход | Регистрация )
patcher для rtorrent, на основе патчера псевдотрекер |
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. скачать -------------------- ![]() | Перово | Ивановское| Новогиреево | Новокосино | | Тыкалка | |
|
|
|
![]() |
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#//(.+?) 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
Прикрепленные файлы
-------------------- ![]() | Перово | Ивановское| Новогиреево | Новокосино | | Тыкалка | |
|
|
|
kolobok3D patcher для rtorrent 5.3.2009, 21:53
FreeM@N Спасибо, нужно будет затестить...
Скрипт для пров... 6.3.2009, 12:59
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![]() ![]() |
|
Текстовая версия | Сейчас: 26.12.2025, 18:57 |