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.
скачать


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

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


Активный участник
***

Группа: Главные Админы
Сообщений: 661
Регистрация: 15.12.2008
Из: Москва
Пользователь №: 15



Ура! Оно заработало!

Не так как хотелось но увы...при работе с rtorrent по XML-RPC он не обновляет спиок трекеров...

Итак немного пошаманив получил скрипт который запускается (ну всмысле если его в крон назначить то он будет запускаться smile.gif) раз в сутки, обновляет список трекеров (если нужно), останавливает rtorrent, патчит торенты в директории сессий и снова его запускает smile.gif

При этом скрипту важно знать только одну директорию - где 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


И модификация патчера (там надо ещё как-то сделать чтобы трекеры не считывались какждый раз, но как это сделать я не знаю ибо на перле не програмлю happy.gif):
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
ЛЕНЬ и другим...
Прикрепленные файлы
Прикрепленный файл  patcher.tar.gz ( 4.87 килобайт ) Кол-во скачиваний: 11
 


--------------------
Перейти в начало страницы
 
+Цитировать сообщение

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


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

 



RSS Текстовая версия Сейчас: 25.4.2024, 8:14
Top.Mail.Ru