Torrent patcher для e107 |
Здравствуйте, гость ( Вход | Регистрация )
Torrent patcher для e107 |
19.10.2009, 18:07
Сообщение
#1
|
|
Активный участник Группа: Пользователи Сообщений: 30 Регистрация: 6.10.2009 Пользователь №: 2 900 |
прошу помощи... не могу понять где косяк, не добавляет анонс http://retracker.local/, точнее добавляет, но торрент клиент не видит О_о
вот файлы, которые используются для ракадирования/кодирования и выдачи файлов юзверям
Прикрепленные файлы
|
|
|
21.10.2009, 9:18
Сообщение
#2
|
|
Активный участник Группа: Пользователи Сообщений: 30 Регистрация: 6.10.2009 Пользователь №: 2 900 |
жаль... я так понял, что не скоро пойму в чём гвоздь
|
|
|
21.10.2009, 11:18
Сообщение
#3
|
|
Активный участник Группа: Пользователи Сообщений: 30 Регистрация: 6.10.2009 Пользователь №: 2 900 |
в общем максимум что мождет получится в торрент файле это:
d8:announce 79: http://mytorrent.myhost.ua/announce.php?pk...79863c5e7bd4813 :announce-list 31: http://retracker.local/announce 10: created by 13: uTorrent/190B 13:creation date i 1255560628 e 8: encoding 5: UTF-8 4:infod 6: length i 411772928 e 4: name 55: House.M.D.s06e05.Instant.Karma.HDRip.Rus.1001cinema.avi 12: piece length i 524288 e 6: pieces 15720:тут_sha1_хэш_длинной=15720_символов ЗЫ ясное дело, что я только чот преобразовал содержимое руками в более читабельный вид... и ясное дело, что торрент не видит анонса |
|
|
23.10.2009, 16:40
Сообщение
#4
|
|
Активный участник Группа: Пользователи Сообщений: 30 Регистрация: 6.10.2009 Пользователь №: 2 900 |
разобрался, можно делать
в bencode.php изменил функцию encodeList Код function encodeList($array, &$fd){ $fd .= "l"; // The empty list is defined as array(); if (empty($array)){ $fd .= "e"; return; } for ($i = 0; isset($array[$i]); $i++){ if (preg_match('{(?:(\w+://)|www\.)[\w-]+(\.[\w-]+)*\S*(?:(?<! [[:punct:]] ) | (?<= [-/&+*] ))}xis',$array[$i])){ $fd .= "l"; $this->decideEncode($array[$i], $fd); $fd .= "e"; }else $this->decideEncode($array[$i], $fd); } $fd .= "e"; return; } и чуть изменил download.php Код $torrA = BDecode($torrdata);
if($ulevel > -1){ $torrA["announce"] = $announce."?pk=".$passkey; $torrA["announce-list"][0] = "http://retracker.local/announce"; $torrA["announce-list"][1] = $torrA["announce"]; }else{ $torrA["announce"] = $announce; $torrA["announce-list"][0] = "http://retracker.local/announce"; $torrA["announce-list"][1] = $torrA["announce"]; } //if(isset($torrA["announce-list"])) unset($torrA["announce-list"]); |
|
|
23.10.2009, 20:51
Сообщение
#5
|
|
Активный участник Группа: Главные Админы Сообщений: 661 Регистрация: 15.12.2008 Из: Москва Пользователь №: 15 |
разобрался, можно делать в bencode.php изменил функцию encodeList Т.к. ещё не смотрел то не буду комментировать... и чуть изменил download.php А вот здесь лучше сделать таким образом: Код $torrA = BDecode($torrdata); $torrA["announce-list"] = array(); if($ulevel > -1){ $torrA["announce"] = $announce."?pk=".$passkey; $torrA["announce-list"][] = array("http://retracker.local/announce"); $torrA["announce-list"][] = array($torrA["announce"]); }else{ $torrA["announce"] = $announce; $torrA["announce-list"][] = array("http://retracker.local/announce"); $torrA["announce-list"][] = array($torrA["announce"]); } //if(isset($torrA["announce-list"])) unset($torrA["announce-list"]); В таком случае трекеры будут перебираться клиентом последовательно - т.е. сначала retracker.local, а затем тот, что в $torrA["announce"]. В вашем же варианте формат announce-list предполагал случайный выбор трекера их предложенных, тоже работает, но идея как я понял была именно сначала попробовать retracker.local, а потом уже основной. -------------------- |
|
|
26.10.2009, 12:45
Сообщение
#6
|
|
Активный участник Группа: Пользователи Сообщений: 30 Регистрация: 6.10.2009 Пользователь №: 2 900 |
на самом деле главное было факт прописывания, а за совет спасибо, возможно переделаю под управление в бд... а пока просто нет необходимости.
Так же огромное спасибо за ответ как таковой, т.к. я просил совета на нескольких форумах, но по сути мне ответили только тут. да и Ваш вариант не работает, работает более упрощённая схема: Код if($ulevel > -1){ $torrA["announce"] = $announce."?pk=".$passkey; $torrA["announce-list"][] = "http://retracker.local/announce"; $torrA["announce-list"][] = $torrA["announce"]; }else{ $torrA["announce"] = $announce; $torrA["announce-list"][] = "http://retracker.local/announce"; $torrA["announce-list"][] = $torrA["announce"]; } вероятно из-за того, что данные должны быть list (пронумерованный массив), с такими граблями я столкнулся, когда в торрентах люди выложили по несколько файлов в релизе... из-за чего и пришлось парсить ссылки для анонс-листа и дополнять функции а в целом всё работает как часики |
|
|
26.10.2009, 20:22
Сообщение
#7
|
|
Активный участник Группа: Главные Админы Сообщений: 661 Регистрация: 15.12.2008 Из: Москва Пользователь №: 15 |
да и Ваш вариант не работает Подозреваю что это из-за encodeList - какая-то узкоспециализированная функция, если взять кодировщик из PEAR::Bittorent2 то всё будет как нужно... UPD: Посмотрел исходники - верните encodeList из исходников, она должна работать...да и вообще bdecode и bencode редактировать не нужно. Цитата вероятно из-за того, что данные должны быть list (пронумерованный массив) Я бы мог записать и так: Код $torrA["announce-list"][0] = array(0=>"http://retracker.local/announce"); $torrA["announce-list"][1] = array(0=>$torrA["announce"]); Но это абсолюто одно и тоже...посмотрите как в PHP объявляются массивы. -------------------- |
|
|
Текстовая версия | Сейчас: 14.12.2024, 10:57 |