YouROK / TorrServer

Torrent stream server
GNU General Public License v3.0
1.58k stars 197 forks source link

Движок обновление #83

Closed VuzzyM closed 3 years ago

VuzzyM commented 3 years ago

@YouROK https://gitlab.com/axet/libtorrent Этот источник основан на исходном коде anacrolix и здесь реализованы bep 14 local peers discovery, bep 19, dht без множественных подключений и на стабильной скоростии, bep 27, работающие с частными торрентами. Здесь решены многие проблемы которые есть в анакроликсе.

YouROK commented 3 years ago

Я в курсе про libtorrent

VuzzyM commented 3 years ago

Я в курсе про libtorrent

Это не libtorrent, это просто анакроликс с авторскими правками

YouROK commented 3 years ago

Ок гляну

VuzzyM commented 3 years ago

Ок гляну

Также могу порекомендовать Libtorrent. Не так давно этот проект был запущен, он для всех платформ, это лучший вариант который я бы порекомендовал.

https://github.com/ElementumOrg/lt2http

@YouROK Что вы скажете об этом проекте?

VuzzyM commented 3 years ago

@YouROK http://localhost:65225/swagger/ui Есть api

VuzzyM commented 3 years ago

@YouROK https://github.com/ElementumOrg/lt2http Это не библиотека, а приложение.

VuzzyM commented 3 years ago

@YouROK Я поговорил с разработчиком и насколько я понял, l2http(Libtorrent) возможно реализовать, здесь также используется http api.

l2http был реализован для упрощения кодирования из libtorrent-go - https://github.com/ElementumOrg/libtorrent-go

Слова одного из разработчиков:

резюмируя:

  1. python часть это сам коди аддон plugin.video.elementum - он общается с коди через питоновские библиотеки коди, а с elementum через http api предоставляемое elementum'ом.

  2. elementum это go демон, который общается с коди через http api предоставляемое plugin.video.elementum'ом, а торренты качает использую libtorrent-go.

  3. libtorrent-go это так сказать "манифесты" на языке swig, которые во время сборки генерируют промежуточный go (https://pkg.go.dev/cmd/cgo) и c++ код для связи golang c libtorrent. сгенерированный код который используется в elementum, как в примере выше (https://github.com/elgatito/elementum/tree/master/bittorrent). если хочется посмотреть на этот код (вероятно это будет то, что вы имели ввиду под api) - то вот как можно это сделать: https://github.com/elgatito/plugin.video.elementum/issues/712#issuecomment-815652568

  4. lt2http это отдельный, плагино-независимый демон, написанный на c++, который предоставляет http api, через которое можно давать команды ему на скачивание торрентов, получение их списка, стриминг файла из торрента.

  5. к lt2http есть "запускалка при старте" внутри коди, в виде коди аддона - https://github.com/ElementumOrg/service.lt2http

Слова одного из разработчиков:

И если чисто технически - мне кажется использовать libtorrent-go так себе затея, от него много проблем в коде, паники вылезают много где, сложно писать код, так как он пишется для автосгенерированной прослойки (см ссылку выше). И версия libtorrent-go используемая в elementum работает со старой версией libtorrent (1.1). Та, что вы скинули, использует 1.2 - не плохо, но уже есть и 2.0. И если её автор перестанет её обновлять, то опять же риск остаться со старой версией libtorrent.

В общем, по этим причинам автор elementum'а и написал lt2http(Libtorrent), чтобы попробовать перевести elementum на него.

VuzzyM commented 3 years ago

@YouROK

Я сказал почти все подробности выше :), относящиеся к Libtorrent-go и l2http на c ++. Даже пример реализации Libtorrent-go или l2http через http api.

Выбор за вами, у Anacrolix есть проблемы с частными подключениями, с воспроизведением фильмов назад, и многое другое...

у torrserve есть веб-сайт 10-го уровня, почему бы не иметь сервер 10-го уровня :).

Да, знаю, работа тяжелая, но результат тоже потрясающий.

VuzzyM commented 3 years ago

@YouROK Забыл сказать, самый стабильный и обновляемый libtorrent-go это: https://github.com/i96751414/libtorrent-go

VuzzyM commented 3 years ago

Libtorrent+bep29 vs Anacrolix imgonline-com-ua-twotoone-c9j68QtzyR

YouROK commented 3 years ago

Я тебя понял, но пока не очень хочется переходить на либторрент. На днях Цыник попробовал последний движок от Анакролиса, и он показал хорошие результаты, по поводу скорости и спама подключений

VuzzyM commented 3 years ago

Я тебя понял, но пока не очень хочется переходить на либторрент. На днях Цыник попробовал последний движок от Анакролиса, и он показал хорошие результаты, по поводу скорости и спама подключений

@YouROK мне также ответил anacrolix и сказал что решил проблему с kinozal.tv. Вы можете это проверить? https://github.com/anacrolix/torrent/issues/462#issuecomment-882286078

VuzzyM commented 3 years ago

@YouROK Теперь сиды находит с кинозал, тестировал на версию 101.ne.

Вы можете посмотреть здесь https://gitlab.com/axet/libtorrent/-/blob/master/lpd.go? здесь реализовано bep 14 local peers discovery. Это анакроликс, только модифицированный автором, и если это может быть реализовано в torrserver. Bep14 не реализован в Anacrolix.

VuzzyM commented 3 years ago

Я тебя понял, но пока не очень хочется переходить на либторрент. На днях Цыник попробовал последний движок от Анакролиса, и он показал хорошие результаты, по поводу скорости и спама подключений

К сожалению, с новым сервером все еще есть проблемы, насколько я могу судить, проблемы с передачей кеша ...

VuzzyM commented 3 years ago

@YouROK https://github.com/martintrojer/mtorrent-go Я наткнулся на этот проект, он основан на Libtorrent Go, исходник старый, но это тот же Libtorrent-go, по крайней мере здесь Libtorrent-go не имеет отношения к elementum.

VuzzyM commented 3 years ago

@YouROK Прихожу с новой информацией, может это поможет. Спасибо за ваше терпение

Libtorrent-go - это проект, содержащий привязки go (сгенерированные SWIG) для libtorrent (https://github.com/arvidn/libtorrent). Поэтому api можно найти в документации по проекту libtorrent.

VuzzyM commented 3 years ago

@YouROK Привет.

Подскажите пожалуйста, с какими проблемами вы столкнулись при внедрении Libtorrent-go?

Мне нужна как можно более четкая информация

YouROK commented 3 years ago

Дошел до того что смог собрать сам https://github.com/i96751414/libtorrent-go и https://github.com/i96751414/torrest Но что там собирается не понял, так как оно все в докерах идет. А что там внутри нужно разбираться

VuzzyM commented 3 years ago

Дошел до того что смог собрать сам https://github.com/i96751414/libtorrent-go и https://github.com/i96751414/torrest Но что там собирается не понял, так как оно все в докерах идет. А что там внутри нужно разбираться

@YouROK Здесь сказано что Libtorrent-go можно запустить без докера. И еще как можно увидеть код c++ во взаимодействии с Go. И как с ним можно работать.

https://github.com/elgatito/plugin.video.elementum/issues/712#issuecomment-815652568

https://github.com/elgatito/plugin.video.elementum/issues/712#issuecomment-791432519

VuzzyM commented 3 years ago

@YouROK libtorrent-go это библиотека, её нельзя запустить. Собрать (скомпилировать) её можно в свою систему напрямую.

В https://github.com/ElementumOrg/libtorrent-go/blob/master/README.md

Есть шаг: (Optionally) Build locally without Docker (for local development, for example) для дополнительной информации

для первых шагов понадобится docker - для подготовки, а уже потом можно собрать golang библиотеку прямо в системе.

Можете конечно попробовать сделать шаги из Makefile как-то сами, без использования docker, если хорошо разбираетесь. Правда сейчас docker есть под все платформы, так что проще его установить, чем пытаться переделать текущий процесс сборки.

YouROK commented 3 years ago

Еще раз, я все собрал. Все это в докере. Но как там чего в докере происходит с помощью скриптов, я не разобрался

VuzzyM commented 3 years ago

Еще раз, я все собрал. Все это в докере. Но как там чего в докере происходит с помощью скриптов, я не разобрался

@YouROK Посмотрите исходный код Makefile, плюс репозитории с самими компиляторами могут быть полезны для общего понимания (там же в GitHub). Ну и соберите без докера библиотеку, как описано в шаге, который я написал ранее.

В https://github.com/ElementumOrg/libtorrent-go/blob/master/README.md

Есть шаг: (Optionally) Build locally without Docker (for local development, for example)

Плюс еще поможет эта тема. https://github.com/elgatito/plugin.video.elementum/issues/712#issuecomment-815652568

tsynik commented 3 years ago

imho это бесcмысленный тред. VuzzyM - если тебе интересна тема интеграции libtorrent в торрсервер - разбирайся сам и приходи с готовым решением. А учить разработчиков как собирать библиотеки, когда сам слабо понимаешь - не нужно.

VuzzyM commented 3 years ago

imho это бесcмысленный тред. VuzzyM - если тебе интересна тема интеграции libtorrent в торрсервер - разбирайся сам и приходи с готовым решением. А учить разработчиков как собирать библиотеки, когда сам слабо понимаешь - не нужно.

Это ваше собственное мнение, я никого не учу, я предложил идею, вы не поняли. В течение нескольких месяцев я искал здесь идеи, из своего времени, а вы обвиняете меня в том, что я учу кого-то другого, проект с открытым исходным кодом должен поддерживаться идеями, а не критикой.

я лично поддерживаю любой проект , например сколько issue я для anacrolix сделал.

Еще один проект, который вот-вот должен был умереть был elementum, когда появился kodi 19, он был написан на python 3, но elementum на python2 и не был совместим с kodi 19, я вместе с vlmaksime адаптировал elementum с python 3. Теперь оригинальный разработчик elementum продолжает развитие elementum.

Я не хотел этого говорить, но иногда лучше сказать правду.

Я даже пожертвовал деньги другому опытному разработчику Libtorrent, чтобы он объяснил некоторые вещи о libtorrent, чтобы помочь проекту torrserver. @tsynik

VuzzyM commented 3 years ago

Извините что я так много написал, но любой проект с открытым исходным кодом должен поддерживаться, надеюсь вы меня поняли ...

VuzzyM commented 3 years ago

@YouROK У YouROK есть свое мнение, он может закрыть любую issue. Если вы считаете то что сделал бесполезно, можете закрыть тему. Жду ответа.

VuzzyM commented 3 years ago

Еще раз, я все собрал. Все это в докере. Но как там чего в докере происходит с помощью

@YouROK Все что я написал это простое мнение, предложение.

Насколько я понимаю, надо работать без докера, надо работать локально. С помощью swig. Приведение структур C++ в Golang с использованием библиотеки SWIG задокументировано в документации SWIG-Golang http://www.swig.org/Doc2.0/Go.html . И вроде после в докере запустить, протестировать.

например без докера, взято из документации Libtorrent-go: make local-env CROSS_TRIPLE=x86_64-linux-gnu make re TARGET_OS=linux TARGET_ARCH=x64 CROSS_ROOT=local-env

Это все что я должен был сказать, спасибо за понимание.