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. скачать -------------------- | Перово | Ивановское| Новогиреево | Новокосино | | Тыкалка | |
|
|
6.3.2009, 12:59
Сообщение
#2
|
|
Активный участник Группа: Главные Админы Сообщений: 661 Регистрация: 15.12.2008 Из: Москва Пользователь №: 15 |
Спасибо, нужно будет затестить...
Скрипт для проверки ретрекеров выглядит примерно вот так: Это немного модифицированная версия скрипта ShurShur CODE #!/usr/bin/perl
use LWP::Simple; use IO::Socket; use POSIX; # no Text::Iconv on Windows #use Text::Iconv; use strict; no utf8; # hack: remove zero bytes from ASCII characters in UTF-16 sub conv { my ($s)_; $s=~tr/\0//d; return $s; } # extract urls with Text::Iconv #my $u2k=new Text::Iconv("utf-16","koi8-r//translit"); #my @list=sort grep {/http:/} split /[\n\s]+/,$u2k->convert(get "http://iphonez.su/torrent/trackers.ini"); # extract urls with hack #my @list=sort grep {/http:/} split /[\n\s]+/,conv(get "http://re-tracker.ru/trackerssimple.ini"); my $subject = conv(get "http://re-tracker.ru/trackerssimple.ini"); my @list; while ($subject =~ m!(http://[^/]+/[^\s]+)!ig) { push(@list, $&); # $result = $& } @list = sort(@list); my $p=""; my $out=""; binmode STDOUT,":bytes"; for my $t(@list) { # print "$t\n"; next if $t eq $p; $p=$t; $t=~m#//(.+?)\d+)/#; my $s=new IO::Socket::INET(PeerAddr=>$1,PeerPort=>$2,Timeout=>2); if($s) { $out .= "$t\n"; print "GOOD $t\n"; close $s; } else { print "FAIL $t\n"; } } print "MY:\n\n$out"; -------------------- |
|
|
7.3.2009, 1:39
Сообщение
#3
|
|
Участник Группа: Пользователи Сообщений: 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#//(.+?)\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
Прикрепленные файлы
-------------------- | Перово | Ивановское| Новогиреево | Новокосино | | Тыкалка | |
|
|
13.3.2009, 1:54
Сообщение
#4
|
|
Активный участник Группа: Главные Админы Сообщений: 661 Регистрация: 15.12.2008 Из: Москва Пользователь №: 15 |
Какие-либо проблемы замечены?
А зачем столько директорий кстате? Одной обойтись не получится (например той, где rtorrent хранит торенты)? -------------------- |
|
|
13.3.2009, 10:23
Сообщение
#5
|
|
Участник Группа: Пользователи Сообщений: 27 Регистрация: 22.2.2009 Пользователь №: 569 |
"fdirectory = /data/share/torrents/" шедулит скрипт и передает в
"tdirectory = /data/.torrents/" которую шедулит rtorrent, а "odirectory = /data/share/torrents/.old/" просто для удобства. -------------------- | Перово | Ивановское| Новогиреево | Новокосино | | Тыкалка | |
|
|
14.3.2009, 1:21
Сообщение
#6
|
|
Активный участник Группа: Главные Админы Сообщений: 661 Регистрация: 15.12.2008 Из: Москва Пользователь №: 15 |
Ура! Оно заработало!
Не так как хотелось но увы...при работе с rtorrent по XML-RPC он не обновляет спиок трекеров... Итак немного пошаманив получил скрипт который запускается (ну всмысле если его в крон назначить то он будет запускаться ) раз в сутки, обновляет список трекеров (если нужно), останавливает rtorrent, патчит торенты в директории сессий и снова его запускает При этом скрипту важно знать только одну директорию - где rtorrent хранит сессии и не важно где лежат сами скрипты (главное чтобы все в одной директории). Главный скрипт, который всем "рулит": start.sh CODE #!/bin/sh # Current working dir;) CWD=$(cd $(dirname $0); pwd -P)/ # Our config file CONFIG=$CWD/patcher.conf TRACKERS_INI=$CWD/trackerssimple.ini # Get rtorrent session save directory SESSION_DIR=$(cat "$CONFIG" | grep sdirectory | awk '{print $3}') # If list of trackers don`t exists - download end check it if [ ! -f $TRACKERS_INI ]; then $CWD"test.pl" fi # Time of last modification in timestamp format MODDATE=$(stat -c %Y "$TRACKERS_INI") MODDATE=${MODDATE%% *} # Current date at the same format CUR_DATE=$(date +%s) # Difference between mod. and cur. time in seconds UPDATE=$(($CUR_DATE-$MODDATE)) # Recheck list only once at twenty-four hours period if [ "$UPDATE" -gt "86400" ]; then $CWD"test.pl" fi ## Prepare! # I am use one of this start-stop scripts: # http://libtorrent.rakshasa.no/wiki/RTorren...onSystemStartup /etc/init.d/rtorrent stop sleep 15 # Patch it! ls $SESSION_DIR | grep '.torrent$' | awk '{print "'$CWD'patcher.pl '$SESSION_DIR/'"$1}' | sh sleep 2 # That`s all, start rtorrent /etc/init.d/rtorrent start Скрипт нужно запускать от root ибо он рабоатет с остановкой/запуском служб... Добавлен ещё один параметр настройки (sdirectory), останые директории в моём варианте не используются но исходная работоспособность патчера не нарушена (надеюсь): patcher.conf CODE ## Деректория, откуда берутся не пропатченые торренты. fdirectory = /data/share/torrents/ ## Директория, за которой наблюдает rtorrent. tdirectory = /data/.torrents/ ## Директория, где rtorrent хранит торренты sdirectory = /home/freeman/TORRENTS/.session ## Директория, в которую складываются не пропатченые торренты после обработки патчером. odirectory = /data/share/torrents/.old/ ## Город (2 - Москва) gorod = 2 ## Номер провайдера в городе (1 - Корбина(Москва)) prov = 1 И модификация патчера (там надо ещё как-то сделать чтобы трекеры не считывались какждый раз, но как это сделать я не знаю ибо на перле не програмлю ): patcher.pl CODE #!/usr/bin/perl my $cur_dir = `dirname $0`; $cur_dir =~ s/\n//; require "$cur_dir/tf.pl"; my $single = @ARGV[0]; open (CONFIG, "$cur_dir/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"; if(!$single) { opendir (TRR, "$fdirectory") || die "$!"; @tr = grep { !/^\.{1,2}$/ && (-f "$fdirectory"."/".$_) && /.torrent$/i } readdir TRR; closedir TRR; } sub patch { open(RTR, "$cur_dir/retrackers.txt") || die "$!"; my @retrackers=<RTR>; close RTR; my ($tr) = @_; $torrent = new TF ("$tr"); $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("$tr"); } if ($single) { chomp $single; patch $single; } else { if (!defined @tr) { exit 0; } else { foreach $tr(@tr) { chomp $tr; $torrentfile = "$fdirectory/$tr"; patch $torrentfile; system("mv -f \"$fdirectory$tr\" \"$odirectory$tr\""); } } } И конечно же все говорят большое спасибо: kolobok3D ShurShur ЛЕНЬ и другим...
Прикрепленные файлы
-------------------- |
|
|
14.3.2009, 18:49
Сообщение
#7
|
|
Участник Группа: Пользователи Сообщений: 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#//(.+?)\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:\/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
Прикрепленные файлы
-------------------- | Перово | Ивановское| Новогиреево | Новокосино | | Тыкалка | |
|
|
14.3.2009, 23:34
Сообщение
#8
|
|
Активный участник Группа: Главные Админы Сообщений: 661 Регистрация: 15.12.2008 Из: Москва Пользователь №: 15 |
А что, так даже лучше
Единственно что - если файла ретрекеров нету или он пустой то лучше запустить update атоматически -------------------- |
|
|
15.3.2009, 21:14
Сообщение
#9
|
|
Новичок Группа: Пользователи Сообщений: 2 Регистрация: 15.3.2009 Пользователь №: 832 |
какой во фре нужен модуль для use LWP::Simple; ? никак найти не могу.
|
|
|
17.3.2009, 5:50
Сообщение
#10
|
|
Участник Группа: Пользователи Сообщений: 27 Регистрация: 22.2.2009 Пользователь №: 569 |
FreeBSD
Код make -C /usr/ports/www/p5-libwww install clean
make -C /usr/ports/converters/p5-Text-Iconv install clean make -C /usr/ports/devel/p5-Config-IniFiles install clean -------------------- | Перово | Ивановское| Новогиреево | Новокосино | | Тыкалка | |
|
|
20.3.2009, 1:25
Сообщение
#11
|
|
Активный участник Группа: Главные Админы Сообщений: 661 Регистрация: 15.12.2008 Из: Москва Пользователь №: 15 |
Как показала практика retrackers.txt лучше хранить как было в первоначальном варианте - в директории с patcher.pl, т.к. /tmp/ имеет свойство чиститься...при перезапуске или по иным причинам.
Не удобно вобщем так -------------------- |
|
|
22.3.2009, 20:15
Сообщение
#12
|
|
Активный участник Группа: Главные Админы Сообщений: 661 Регистрация: 15.12.2008 Из: Москва Пользователь №: 15 |
Ещё чуток поковырял patcher.pl...поправил пару ошибок и сделал чтобы в начало ini файла вставлялась секция [description] т.к. Config::IniFiles->new почему-то стал ругатся на то что файл ini начинается не с секции, а с каментов, вобщем вот такое в итоге получилось:
CODE #!/usr/bin/perl
$cur_dir = `dirname $0`; $cur_dir =~ s/\n//; $opt = $ARGV[0]; my $file_ini = "/tmp/trackerssimple.ini"; my $file_txt = "$cur_dir/retrackers.txt"; open (CONFIG, "$cur_dir/patcher.conf") || die "Cannot open file $cur_dirpatcher.conf: $!"; while (<CONFIG>) { my $comment = '#'; if(!($_ =~/^$comment/)) { 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, ">$file_ini"); print INI "[description]\n$list"; close (INI); $subject = Config::IniFiles->new( -file => $file_ini ) or die "Can`t parse file $file_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"; my $p = ""; my $out = ""; for $t(@list) { next if $t eq $p; $p=$t; $t=~m#//(.+?)\d+)/#; $s=new IO::Socket::INET(PeerAddr=>$1,PeerPort=>$2,Timeout=>2); if($s) { $out .= "$t\n"; close $s; } open (RTR, ">$file_txt"); print RTR "$out"; close (RTR); } exit 0; } require "$cur_dir/tf.pl"; open(RTR, $file_txt) || die "Cannot open file $file_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:\/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; -------------------- |
|
|
10.4.2009, 23:55
Сообщение
#13
|
|
Участник Группа: Пользователи Сообщений: 27 Регистрация: 22.2.2009 Пользователь №: 569 |
как то так....
Код if ($opt eq "update") {
use LWP::Simple; use IO::Socket; @list = split(/\n/, (get "http://re-tracker.ru/resume.php?tr_list=1&city=+$gorod&isp=+$prov")); @list = sort(@list); binmode STDOUT,":bytes"; my $p = ""; my $out = ""; for $t(@list) { next if $t eq $p; $p=$t; $t=~m#//(.+?):(\d+)/#; $s=new IO::Socket::INET(PeerAddr=>$1,PeerPort=>$2,Timeout=>2); if($s) { $out .= "$t\n"; close $s; } } open (RTR, ">$file_txt"); print RTR "$out"; close (RTR); exit 0; } -------------------- | Перово | Ивановское| Новогиреево | Новокосино | | Тыкалка | |
|
|
11.4.2009, 11:59
Сообщение
#14
|
|
Активный участник Группа: Главные Админы Сообщений: 661 Регистрация: 15.12.2008 Из: Москва Пользователь №: 15 |
-------------------- |
|
|
18.5.2009, 14:58
Сообщение
#15
|
|
Новичок Группа: Пользователи Сообщений: 8 Регистрация: 18.3.2009 Пользователь №: 889 |
А не могли бы вы выложить актуальную версию патчера на какой-нибудь файлообменник?
|
|
|
18.5.2009, 22:27
Сообщение
#16
|
|
Активный участник Группа: Главные Админы Сообщений: 661 Регистрация: 15.12.2008 Из: Москва Пользователь №: 15 |
А не могли бы вы выложить актуальную версию патчера на какой-нибудь файлообменник? http://www.box.net/shared/uflm65bptr -------------------- |
|
|
2.6.2009, 17:09
Сообщение
#17
|
|
Новичок Группа: Пользователи Сообщений: 4 Регистрация: 2.6.2009 Пользователь №: 1 812 |
1) для юзеров "ниже среднего" в линухе (типа меня) все тут написанное слишком сложно, чтобы начать разбираться
2) я бы может и начал разбираться, но смотрим Цитата ## Директория, за которой наблюдает rtorrent (в нее складываются пропатченые торренты). а у меня таких папок штук 5 - для музыки, для hdtv, для мультиков и т.д... так что не разобраться без поллитры.. проще найти еще какой-нить вариант (?) а есть программа, которая бы под виндой патчила .torrent файл и сохраняла его на диск - чтобы я его мог перенести в папку на линух-машине, откуда rtorrent начал бы его качать?.. потому что как руками прямо в rtorrent-е добавить ретрекер - не знаю (может быть что и никак), как сохранить открытый в uTorrent-е файл - тоже не очень понимаю (м.б. тоже никак).. а попробовать поиграться с ретрекерами хочу.. может у себя поднял бы, 27/7 комп уже почти 3 года работает.. |
|
|
3.6.2009, 0:08
Сообщение
#18
|
|
Активный участник Группа: Главные Админы Сообщений: 661 Регистрация: 15.12.2008 Из: Москва Пользователь №: 15 |
...проще найти еще какой-нить вариант (?) Попробуйте. Удачи. а есть программа, которая бы под виндой патчила .torrent файл и сохраняла его на диск - чтобы я его мог перенести в папку на линух-машине, откуда rtorrent начал бы его качать? Обожемой. TorrentPatcher на этомже форуме однако... .. потому что как руками прямо в rtorrent-е добавить ретрекер - не знаю (может быть что и никак) Сколько на свете удивительных людей... http://libtorrent.rakshasa.no/wiki/RTorrentUserGuide Цитата("http://libtorrent.rakshasa.no/wiki/RTorrentUserGuide") backspace - Add torrent using an URL or file path. Use tab to view directory content and do auto-complete. Also, wildcards can be used. For example: ~/torrent/* как сохранить открытый в uTorrent-е файл - тоже не очень понимаю (м.б. тоже никак).. Тоже не знаю... а попробовать поиграться с ретрекерами хочу.. может у себя поднял бы, 27/7 комп уже почти 3 года работает.. Судя по посту - хотения ноль целых, фиг десятых...Не мучайте себя и других. Юзайте WEB-патчер. P.S.: Т.к. версия немного устарела то создайте свой список ретрекеров (можно скопировать из тогоже TorrentPatcher-а после того как он проверит на доступность) и тупо вставляйте вместо предлагаемых WEB-патчером (и пофиг какой город/район выбирать, главное основной трекер не удалите...который http://bt.torrents.ru/blablabla) P.P.S.: На всякий случай: если есть вопросы по вышеизложенному - просьба задавать их в соответствующих темах. -------------------- |
|
|
4.6.2009, 5:23
Сообщение
#19
|
|
Новичок Группа: Пользователи Сообщений: 1 Регистрация: 18.5.2009 Пользователь №: 1 662 |
Почемуто не могу скачать...
|
|
|
30.6.2009, 17:26
Сообщение
#20
|
|
Новичок Группа: Пользователи Сообщений: 4 Регистрация: 2.6.2009 Пользователь №: 1 812 |
Попробуйте. Удачи. Обожемой. TorrentPatcher на этомже форуме однако... однако 1) мне как-то стремно запускать программу, которая требует прав админа (Vista, UAC включен), только для того, чтобы она файл с данными поправила.. 2) хорошо, я ее запустил, выбрал регион/провайдера, ищу кнопку, которая сохранит пропатченый торрент-файл.. нашел разве что на закладке "Дополнительные", кнопка Файл, с хинтом - "Путь к файлу трекеров и папка сохранения пропатченых торентов", нажимаю - предлагается выбрать ini файл, выбираю ini из папки установки - раз прога повесилась, другой раз загрузила список ретрекеров, который отфильтровала до 1 значения (видимо остальные в офлайне) 3) как мне открыть торент-файл для патчения? только зарегистрировав патчер как обработчик torrent-файлов? хорошо, я 2-кликаю по файлу, запускается патчер, запускается uTorrent и видимо грузит пропатченый торент-файл - мне собственно и нужен этот файл, где его искать? похоже в папке с программой-патчером (это только для этого ей надо права админские, писать в Program Files, где 99% она будет установлена?) патчеру не хватает на самом деле большой кнопки "Патч ми", чтоб я ее тыкнул, выбрал файл, сказал, куда сохранить.. а лично мне еще не хватает фичи - поменять папку сохранения файлов, создатели торент-файлов иногда называют папки не очень удачно, а rtorrent не умеет (как тот же uTorrent) писать _только_ в указанную папку, хоть сто раз указывай, но папку, которая в самом торенте указана, он дополнительно создаст.. Цитата Сколько на свете удивительных людей... http://libtorrent.rakshasa.no/wiki/RTorrentUserGuide backspace Add torrent using an URL or file path. Use tab to view directory content and do auto-complete. Also, wildcards can be used. For example: ~/torrent/* return Same as backspace, except the torrent remains inactive. (Use ^s to activate) ну как загрузить торент-файл я как-то в курсе; просто uTorrent позволяет прямо в программе добавить в список ретрекер, я думал - может rtorrent так умеет _как-то_ |
|
|
Текстовая версия | Сейчас: 1.11.2024, 1:58 |