Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Программирования патчера
Re-Tracker | Система локальных ретрекеров | Ретрекер > РеТрекер > Патчер торрентов
boris_z
Вопрос наверно к разработчикам. У меня встала проблема, написать свой патчер для ретеркера. Но опыта с BitTorrent по части кодинга не имел. Попытался ручками менять файл(*.torrent) не выходит. Вот даже не знаю, что и делать. Как туда прописать ретрекер. А так вроде принцип понятен. Спасибо надеюсь кто поможет.
boris_z
Все разобрался ответ нашел тут http://wiki.depthstrike.com/index.php/P2P:...ns:Multitracker dry.gif
Evolgr
тоже недавно написал свой. работает вроде, даже лучше чем Torrent Patcher smile.gif если будут вопросы - спрашивай, попробую ответить.
boris_z
Можете пояснить с announce-list, вы его в конец документа помещаете так ?
Какой он должен иметь формат announce-list, а то я уже по битово начел разбирать документ. Может ссылочку подкинете.
Evolgr
Цитата(boris_z @ 22.6.2009, 15:47) *
Можете пояснить с announce-list, вы его в конец документа помещаете так ?
Какой он должен иметь формат announce-list, а то я уже по битово начел разбирать документ. Может ссылочку подкинете.

ну в Torrent Patcher'е он почему-то записывается в конец, хотя ето неправильно, т.к. ключи (announce, announce-list и т.д.) должны идти в алфавитном порядке. надо его писать сразу после ключа announce. в той спецификации вроде нормально описано: надо свой ретрекер поместить в отдельный список, чтобы он работал паралельно основному. иначе (если поместить его в тот самый список где знаходится и основной) они будут работать в случайном порядке (чтобы уменьшить нагрузку на сервера).

тут еще есть спецификации:
http://wiki.theory.org/index.php/BitTorrentSpecification
http://www.bittorrent.org/beps/bep_0000.html

в процессе еще нарыл такой проектик: http://trac.calitko.org/changeset/releases....6.2%2C110.1.11
boris_z
Цитата(Evolgr @ 22.6.2009, 22:08) *
в процессе еще нарыл такой проектик: http://trac.calitko.org/changeset/releases....6.2%2C110.1.11


Процесс реализации требует декодирования самого *.torrent файл. Или можно обойтись
просто чтением файла, вставкой элементов announce-list c данными торрента-трекера и ретрекера ?
Если просто найти вставить свои данные просто не работают. mellow.gif Как говорится, если лесть в дебри, нужно знать, а нужно ли это делать. dry.gif
Evolgr
Цитата(boris_z @ 22.6.2009, 23:39) *
Процесс реализации требует декодирования самого *.torrent файл. Или можно обойтись
просто чтением файла, вставкой элементов announce-list c данными торрента-трекера и ретрекера ?
Если просто найти вставить свои данные просто не работают. mellow.gif Как говорится, если лесть в дебри, нужно знать, а нужно ли это делать. dry.gif

по тому проекту не знаю..

а почему не работает? может неправильно вставляешь?
может сдесь будет более наглядно видно: http://trac.calitko.org/browser/releases/c....6.2%2C110.1.11
после announce добавляем announce-list с трекером из announce + наш трекер. должно получится как-то так:
Код
8:announce        => 80:http://tracker.calitko.org/torrents.php?passkey=d7c034325e7274bb2s346c6fc5b71307
13:announce-list  =>
        l
                l
                        80:http://tracker.calitko.org/torrents.php?passkey=d7c034325e7274bb2s346c6fc5b71307
                e
                l
                        32:http://somehost.com/announce.php
                e
        e
boris_z
Цитата(Evolgr @ 23.6.2009, 2:40) *
по тому проекту не знаю..

а почему не работает? может неправильно вставляешь?
может сдесь будет более наглядно видно: http://trac.calitko.org/browser/releases/c....6.2%2C110.1.11
после announce добавляем announce-list с трекером из announce + наш трекер. должно получится как-то так:
Код
8:announce        => 80:http://tracker.calitko.org/torrents.php?passkey=d7c034325e7274bb2s346c6fc5b71307
13:announce-list  =>
        l
                l
                        80:http://tracker.calitko.org/torrents.php?passkey=d7c034325e7274bb2s346c6fc5b71307
                 e
                l
                        32:http://somehost.com/announce.php
                e
        e



вот часть кода bomb.gif
CODE
sd = "l3:announce-listll" + v + ":" + httptraker + "el80http://"+main_url+":8080/RtBit/announce.php?mt=" + main_tracker + "&l=" + length + "&pu=" + publisher_url + "&descr=" + descr + "&eee";


которую я добавляю. v- это загадочная цифра в конце announce[**], это трекер httptraker announce то есть основной , а дальше мой трекер c переменными. Вот не понимаю (выделаны цифры и буквы которые в коде ) я не понимая по какому принципу берутся, ставлю от балды ? pardon.gif
Evolgr
Цитата(boris_z @ 23.6.2009, 2:33) *
Вот не понимаю (выделаны цифры и буквы которые в коде ) я не понимая по какому принципу берутся, ставлю от балды ? pardon.gif

потому и не работает smile.gif
написано в спецификации:
Цитата
byte strings

Byte strings are encoded as follows: <string length encoded in base ten ASCII>:<string data>
Note that there is no constant beginning delimiter, and no ending delimiter.
Example: 4:spam represents the string "spam"
строки. сначала идет число, которое означает длину строки. например "4:spam" значит что после двоеточия будет строка длиной в 4 байта. еще примеры: "8:announce", "13:announce-list", "32:http://somehost.com/announce.php".


Цитата
lists

Lists are encoded as follows: l<bencoded values>e
The initial l and trailing e are beginning and ending delimiters. Lists may contain any bencoded type, including integers, strings, dictionaries, and other lists.
Example: l4:spam4:eggse represents the list of two strings: [ "spam", "eggs" ]
списки. начинаються символом "l" (маленькая "L") и заканчиваються символом "e".
например запись вида "l4:spam4:eggse" означет что задан список с двух елементов, первым из которых есть строка "spam", вторым - строка "eggs".


также есть еще целые числа:
Цитата
integers

Integers are encoded as follows: i<integer encoded in base ten ASCII>e
The initial i and trailing e are beginning and ending delimiters. You can have negative numbers such as i-3e. You cannot prefix the number with a zero such as i04e. However, i0e is valid.
Example: i3e represents the integer "3"
т.е. числа задаються в виде "i<число_в_десятичной_системе>e". например запись вида "i254e" значит что задано число "254", "i-872e" - число "-872".


и словари:
Цитата
dictionaries

Dictionaries are encoded as follows: d<bencoded string><bencoded element>e
The initial d and trailing e are the beginning and ending delimiters. Note that the keys must be bencoded strings. The values may be any bencoded type, including integers, strings, lists, and other dictionaries. Keys must be strings and appear in sorted order (sorted as raw strings, not alphanumerics). The strings should be compared using a binary comparison, not a culture-specific "natural" comparison.
Example: d3:cow3:moo4:spam4:eggse represents the dictionary { "cow" => "moo", "spam" => "eggs" }
Example: d4:spaml1:a1:bee represents the dictionary { "spam" => [ "a", "b" ] }
словари. в словарях сначала идет ключ, потом его значение. т.е. если есть выражение "d3:cow3:moo4:spam4:eggse", ето значит что задан словарь, в котором ключ "cow" имеет значение "moo", а ключ "spam" имеет значение "eggs".
еще один пример: "d4:spaml1:a1:bee". задан словарь, в котром ключ "spam" содержит список из двух елементов: "a" и "b".


на базе етого всего строится торент файл.
значением ключа "announce-list" должен быть список, елементы которого есть списками трекеров (список списков). например както так:
13:announce-listll80:http://tracker.calitko.org/torrents.php?passkey=d7c034325e7274bb2s346c6fc5b71307el32:http://somehost.com/announce.phpee
boris_z
Ага чета не уловил ссылку на вики, ага спасибо.за разъяснение, буду читать внимательней спецификации протокола. rolleyes.gif Большое спасибо за помощь. drinks.gif
boris_z
Спасибо еще раз все заработало. biggrin.gif
wMw
http://ifolder.ru/13294914

Вот патчилка на делфи smile.gif исходники прилагаются
POWExR
перезалей пожалуйста
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
пїЅпїЅпїЅпїЅпїЅ IP.Board © 2001-2024 IPS, Inc.