FlylinkDC++ и torrent

Разработка и поиск скриптов, обсуждение PtokaX.

FlylinkDC++ и torrent

Сообщение flylinkdc » 23 сен 2016, 09:45

Научил флайлинк качать торренты.
Высказывайте идеи как эффективнее интегрировать эту возможность с DC++.
Планирую сделать обработку клика по магниту типа btih т.к. их иногда кидают в чат
пока прикручивал либу сделал первый маленький pull request в upstream
https://github.com/arvidn/libtorrent/co ... d030d54751

Код интеграции с libtorrent получается достаточно простой: пример закачки сериала (Olga.2016.SATRip.Files-x)

Код: Выделить всё
void DownloadManager::test_torrent()
{
        using namespace libtorrent;
        namespace lt = libtorrent;
   lt::error_code ec;
   lt::settings_pack l_sett;
   l_sett.set_int(lt::settings_pack::alert_mask
                  , lt::alert::error_notification
                  | lt::alert::storage_notification
                  | lt::alert::status_notification
                  | lt::alert::progress_notification
                  | lt::alert::peer_notification);
   m_torrent_settings = std::make_unique<lt::session_settings>();
   m_torrent_session = std::make_unique<lt::session>(l_sett);
   m_torrent_session->start_lsd();
   m_torrent_session->start_upnp();
   m_torrent_session->start_natpmp();   
   l_sett.set_str(settings_pack::listen_interfaces, "0.0.0.0:8999");
   lt::dht_settings dht;
   dht.privacy_lookups = true;
   m_torrent_session->set_dht_settings(dht);
   {
      m_torrent_settings->use_dht_as_fallback = false;      
      m_torrent_session->add_dht_router(std::make_pair(
                                            std::string("router.bittorrent.com"), 6881));
      m_torrent_session->add_dht_router(std::make_pair(
                                            std::string("router.utorrent.com"), 6881));
      m_torrent_session->add_dht_router(std::make_pair(
                                            std::string("router.bitcomet.com"), 6881));                                           
      m_torrent_session->start_dht();
   }
   m_torrent_settings->user_agent = "FlylinkDC++/" LIBTORRENT_VERSION;
   m_torrent_settings->choking_algorithm = session_settings::auto_expand_choker;
   m_torrent_settings->disk_cache_algorithm = session_settings::avoid_readback;
   m_torrent_settings->volatile_read_cache = false;
   m_torrent_session->set_settings(*m_torrent_settings);
   
   lt::add_torrent_params p;
   p.save_path = ".";
   p.url = "magnet:?xt=urn:btih:9017152afa06f5964c88faad524a6d443fdea787";
   
   if (ec)
   {
      dcdebug("%s\n", ec.message().c_str());
      dcassert(0);
   }
   m_torrent_session->add_torrent(p, ec);
   if (ec)
   {
      dcdebug("%s\n", ec.message().c_str());
      dcassert(0);
   }
}
Последний раз редактировалось flylinkdc 23 сен 2016, 13:34, всего редактировалось 1 раз.
Аватара пользователя
flylinkdc
 
Сообщения: 427
Зарегистрирован: 15 дек 2013, 10:26
Откуда: Караганда -> Липецк
Хаб: dchub://dc.fly-server.ru

Сообщение HackFresse » 24 сен 2016, 21:21

Не прошло и полгода.. )
Как эффективнее? А тут всё получается от ответа на простой вопрос - "а зачем вообще нужны торренты во флайлинке" ?
Аватара пользователя
HackFresse
 
Сообщения: 507
Зарегистрирован: 02 фев 2010, 19:23

Сообщение Snaiper » 25 сен 2016, 11:08

HackFresse писал(а):Не прошло и полгода.. )
Как эффективнее? А тут всё получается от ответа на простой вопрос - "а зачем вообще нужны торренты во флайлинке" ?

Ты ваше кто такой, чтоб умничать тут?
Аватара пользователя
Snaiper
 
Сообщения: 16
Зарегистрирован: 25 фев 2016, 07:39

Сообщение HackFresse » 25 сен 2016, 15:55

Я ваше Рафа из центра, а ты кто ваше?
Аватара пользователя
HackFresse
 
Сообщения: 507
Зарегистрирован: 02 фев 2010, 19:23

Сообщение Snaiper » 25 сен 2016, 17:10

HackFresse писал(а):Я ваше Рафа из центра, а ты кто ваше?

потише сиди братишка!
Аватара пользователя
Snaiper
 
Сообщения: 16
Зарегистрирован: 25 фев 2016, 07:39

Сообщение HackFresse » 26 сен 2016, 11:17

HackFresse писал(а):Как эффективнее? А тут всё получается от ответа на простой вопрос - "а зачем вообще нужны торренты во флайлинке" ?

Вопрос всё равно остаётся.
Полная реализация торрентов на низком уровне займёт очень много времени (учитывая текущую скорость разработки и внедрения фич - очень, очень много). Поэтому в самом начале нужно ответить на вопрос "что именно из торрентов нужно флайлинку", и потом уже думать, как именно это сделать.
Аватара пользователя
HackFresse
 
Сообщения: 507
Зарегистрирован: 02 фев 2010, 19:23

Сообщение dimetro » 26 сен 2016, 19:35

Чтобы открывал файлы .torrent а не только магнет ссылки, полноценный DC++ & torrent клиент :-)
dimetro
 
Сообщения: 11
Зарегистрирован: 23 авг 2012, 23:46

Сообщение HackFresse » 27 сен 2016, 00:14

Про "полноценный DC++ & torrent клиент" - это ты, конечно, размечтался )
Хотя да, было/есть несколько мультипротокольных комбайнов (Shareaza, MLDonkey), офигенной штукой c необычным подходом был LiveDС (https://geektimes.ru/post/181906/ , если кто не в курсе)

Но касательно FlylinkDC++... всё сложно. Хотя всё очень просто )

Добавить фичу, "чтобы открывал файлы .torrent" - задачка на пару часов максимум.
1) Взять готовый класс, который парсит контент .torrent-файла, скормить ему файл раздачи, на выходе получить массив имён файлов с путями и размерами, из него сформировать xml
2) В просмотрщике файл-листов убрать фильтр на записи без TTH, чтобы показывался контент файл-листа из пункта 1
3) В просмотрщике добавить на клик правой кнопкой мышки запуск поиска/скачивания файла по названию и размеру

Итого: открыли торрент-трекер, почитали описание, а контент скачали в DC. Стильно, модно, молодёжно (всё совсем наоборот =) ).
Аватара пользователя
HackFresse
 
Сообщения: 507
Зарегистрирован: 02 фев 2010, 19:23

Сообщение flylinkdc » 27 сен 2016, 09:10

HackFresse писал(а):Итого: открыли торрент-трекер, почитали описание, а контент скачали в DC. Стильно, модно, молодёжно


А зачем качать файл в сети DC - там вечная проблема с источниками и закрытыми портами.
проще сразу отдать torrent файл либе libtorrent
http://www.libtorrent.org/examples.html
она сама нативно скачает все с торрент клиентов.
там поддержка DHT, поиск локальных пиров и т.д.
на ее базе работают qBittorrent, Deluge, mediaget и т.д.
Аватара пользователя
flylinkdc
 
Сообщения: 427
Зарегистрирован: 15 дек 2013, 10:26
Откуда: Караганда -> Липецк
Хаб: dchub://dc.fly-server.ru

Сообщение HackFresse » 27 сен 2016, 10:52

Быстрый старт, сделать хоть что-то, начать хоть как-то

Потому что нельзя просто так взять и сделать "полноценный DC++ & torrent клиент ". Даже с готовой либой.
Чтобы использовать один и тот же интерфейс для закачки из разных сетей, нужен некий уровень абстракции, а FlylinkDC очень сильно захардкожен на использование только дц. Очень много рефакторинга нужно (а его в этом проекте не особо-то и любят).

Из "на ее базе работают qBittorrent, Deluge, mediaget и т.д." никак же не равно "взяли либу, и готовый торрент-клиент получился, только название поставить". Всё равно делать много чего нужно.

Например, в торрентах тоже порты пробрасывать нужно (внезапно). За счет большого числа активных торрент-юзеров (с проброшенными портами) качать будет, конечно, но ровно та же хрень, что и с пассивом в дц.

Сама тема, конечно, интересная и полезная, но либа была уже много лет как, а уверенность в её элементарной интеграции появилась только сейчас... Посмотрим, что получится))
Аватара пользователя
HackFresse
 
Сообщения: 507
Зарегистрирован: 02 фев 2010, 19:23

Сообщение HackFresse » 27 сен 2016, 11:02

flylinkdc писал(а):А зачем качать файл в сети DC - там вечная проблема с источниками и закрытыми портами.
проще сразу отдать torrent файл либе libtorrent
она сама нативно скачает все с торрент клиентов.
там поддержка DHT, поиск локальных пиров и т.д.

То неловкое чувство, когда разработчик популярного DC-клиента жалуется на то, что в его разработке вечная проблема с закачкой, закрытыми портами и отключенном DHT :-D
Аватара пользователя
HackFresse
 
Сообщения: 507
Зарегистрирован: 02 фев 2010, 19:23

Сообщение Snaiper » 27 сен 2016, 19:03

HackFresse писал(а):flylinkdc писал(а):А зачем качать файл в сети DC - там вечная проблема с источниками и закрытыми портами.
проще сразу отдать torrent файл либе libtorrent
она сама нативно скачает все с торрент клиентов.
там поддержка DHT, поиск локальных пиров и т.д.
То неловкое чувство, когда разработчик популярного DC-клиента жалуется на то, что в его разработке вечная проблема с закачкой, закрытыми портами и отключенном DHT

Ты падонак сетевой! Нука покажи свои заслуги в мире написания софта, сволач тока умеешь ванять тут!!!!
Аватара пользователя
Snaiper
 
Сообщения: 16
Зарегистрирован: 25 фев 2016, 07:39

Сообщение HackFresse » 28 сен 2016, 19:48

Snaiper писал(а):HackFresse писал(а):flylinkdc писал(а):А зачем качать файл в сети DC - там вечная проблема с источниками и закрытыми портами.
проще сразу отдать torrent файл либе libtorrent
она сама нативно скачает все с торрент клиентов.
там поддержка DHT, поиск локальных пиров и т.д.
То неловкое чувство, когда разработчик популярного DC-клиента жалуется на то, что в его разработке вечная проблема с закачкой, закрытыми портами и отключенном DHT
Ты падонак сетевой! Нука покажи свои заслуги в мире написания софта, сволач тока умеешь ванять тут!!!!

Утибоземой! Как покраснел аж! Не надо, дурашка, успокойся, соберись с мыслями, да по делу скажи чего-нибудь, доводы какие-нибудь обоснованные приведи.
Не можешь? Суровая действительность так жестока.. Когда правду-матку режут, больно?
Аватара пользователя
HackFresse
 
Сообщения: 507
Зарегистрирован: 02 фев 2010, 19:23

Сообщение Snaiper » 29 сен 2016, 06:16

HackFresse писал(а):нытик HackFresse писал(а):
Утибоземой! Как покраснел аж! Не надо, дурашка, успокойся, соберись с мыслями, да по делу скажи чего-нибудь, доводы какие-нибудь обоснованные приведи.
Не можешь? Суровая действительность так жестока.. Когда правду-матку режут, больно?

Иди уроки делай по математике, а не тут пиши людям выше тебя интеллектом, школьник 14 летний!
Аватара пользователя
Snaiper
 
Сообщения: 16
Зарегистрирован: 25 фев 2016, 07:39

Сообщение HackFresse » 29 сен 2016, 11:23

Уроки по математике! Школьник!
Изображение
А по теме есть что сказать, или интеллекту на 15 лет, только дразниться и хватает?
Аватара пользователя
HackFresse
 
Сообщения: 507
Зарегистрирован: 02 фев 2010, 19:23

Сообщение Snaiper » 29 сен 2016, 16:31

HackFresse писал(а):Уроки по математике! Школьник!

А по теме есть что сказать, или интеллекту на 15 лет, только дразниться и хватает?

Мальчик, глупый тролль ты, хочет из себя показать умника такого, сидит советы тут раскидывает бестолковые, шугливый иди улицу хоть посмотри, прогуляйся хотя бы!
Аватара пользователя
Snaiper
 
Сообщения: 16
Зарегистрирован: 25 фев 2016, 07:39

Сообщение HackFresse » 30 сен 2016, 12:34

Советы как раз толковые, ты просто понять их не можешь.
Обоснованных хоть как-то мыслей по поводу торрентов в дц сформулировать не в состоянии, вот и агришься
Аватара пользователя
HackFresse
 
Сообщения: 507
Зарегистрирован: 02 фев 2010, 19:23

Сообщение flylinkdc » 30 сен 2016, 13:25

1. Научил открывать .torrent файлы: - пока через менюшку руками. (возможно стоит приделать сканирование каталога)
2. Флай сидит на раздаче пока не закрыли клиента. (не научился пока восстанавливать раздачу после перезапуска :)
3. Если не докачали большой файл/ы - после запуска идет длительный процесс проверки целостности (это все клиенты так делают?)
4. В окне передачи показываю только торрент сами файлы не пргрессю - их может быть много.

https://yadi.sk/i/edo4HeswvvyPp

Вопрос:
Кто знает сервисы по поиску торрент файлов или магнеток по имени/размеру/SHA1 файла?

2HackFresse - убери из темы эту рожу в красной рубашке.
Аватара пользователя
flylinkdc
 
Сообщения: 427
Зарегистрирован: 15 дек 2013, 10:26
Откуда: Караганда -> Липецк
Хаб: dchub://dc.fly-server.ru

Сообщение flylinkdc » 30 сен 2016, 13:45

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

http://kino-tor.org/torrent/526186/devj ... rip-itunes


magnet:?xt=urn:btih:c5e31d0c60206be872f6d51cf7f0b64ff83806ff&dn=rutor.info_%D0%94%D0%B5%D0%B2%D1%8F%D1%82%D0%B0%D1%8F+%D0%B6%D0%B8%D0%B7%D0%BD%D1%8C+%D0%9B%D1%83%D0%B8+%D0%94%D1%80%D0%B0%D0%BA%D1%81%D0%B0+%2F+The+9th+Life+of+Louis+Drax+%282016%29+WEB-DLRip+%7C+iTunes&tr=udp://opentor.org:2710&tr=udp://opentor.org:2710&tr=http://retracker.local/announce

если ее кинуть в чат - уродская птоха выдает
[13:41:47] <PtokaX> The message was too long !

:(
Наверно нужно учить флай сокращать ссылки на лету?
Аватара пользователя
flylinkdc
 
Сообщения: 427
Зарегистрирован: 15 дек 2013, 10:26
Откуда: Караганда -> Липецк
Хаб: dchub://dc.fly-server.ru

Сообщение HackFresse » 30 сен 2016, 17:28

1. Научил открывать .torrent файлы: - пока через менюшку руками. (возможно стоит приделать сканирование каталога)

Где посмотреть? [spoiler]Изображение[/spoiler]
Есть ли выбор, что именно качать из раздачи?

2. Флай сидит на раздаче пока не закрыли клиента. (не научился пока восстанавливать раздачу после перезапуска

Как и где смотреть список раздач, как ограничивать скорость/останавливать/удалять закачку/отдачу?

3. Если не докачали большой файл/ы - после запуска идет длительный процесс проверки целостности (это все клиенты так делают?)

Аналог пересчета ттх в дц после скачивания, переключатель можно попробовать поискать в документации

4. В окне передачи показываю только торрент сами файлы не пргрессю - их может быть много.

Мало того, что много, так еще и не понятно, что рисовать - закачка может идти фрагментированно (дефолтное поведение), в одном куске потока конец одного файла, весь второй и начало третьего файла

Кто знает сервисы по поиску торрент файлов или магнеток по имени/размеру/SHA1 файла?

Не нужно на них пока смотреть. Был btdigg.org ( https://habrahabr.ru/post/124496/), да помер. "Таки сабачка харошы быу....стольки малака давау "
Нагуглить альтернативы можно, но привязываться к ним не стоит. Сначала хотя бы базовый набор функций, а поиск альтернатив уже потом

убери из темы эту рожу в красной рубашке

Это для Snaiper, ему нравится. срач админы уберут, если тему почистить захотят, это я так, количество просмотров поднять

Еще обнаружил одну неприятность ссылки бывают очень длинными. ..если ее кинуть в чат - уродская птоха выдает [13:41:47] <PtokaX> The message was too long !

Это не птока уродская, а последствия внедрения лимитов для любителей копипасты. Грейлинк выдёт нотис перед отправкой, например [spoiler]Изображение[/spoiler] Вопрос минорный, его нужно отдельно решать, что и как резать в строке, отправленной юзером в чат.
Аватара пользователя
HackFresse
 
Сообщения: 507
Зарегистрирован: 02 фев 2010, 19:23

Сообщение flylinkdc » 30 сен 2016, 22:06

Первая тест сборка доступна в авто обновлении на канале - бета.
Аватара пользователя
flylinkdc
 
Сообщения: 427
Зарегистрирован: 15 дек 2013, 10:26
Откуда: Караганда -> Липецк
Хаб: dchub://dc.fly-server.ru

Сообщение HackFresse » 04 окт 2016, 19:57

Результатом внедрения торрентов стало выпиливание дц-шной DHT. Наблюдение продолжаю
Аватара пользователя
HackFresse
 
Сообщения: 507
Зарегистрирован: 02 фев 2010, 19:23

Сообщение flylinkdc » 04 окт 2016, 20:08

А какая польза была от той DHT?
и почему ее не приняли в upstream http://dcplusplus.sourceforge.net/
Аватара пользователя
flylinkdc
 
Сообщения: 427
Зарегистрирован: 15 дек 2013, 10:26
Откуда: Караганда -> Липецк
Хаб: dchub://dc.fly-server.ru

Сообщение HackFresse » 05 окт 2016, 12:46

Печально, что эти вопросы задаёт не обычный юзер/домохозяйка, а сам разработчик программы для p2p файлообмена..
DHT характеризуется следующими свойствами:

Децентрализация: форма системы коллективных узлов без координации;
Масштабируемость: система будет одинаково эффективно функционировать при тысячах или миллионах узлов;
Отказоустойчивость: система будет одинаково надёжна (в некотором смысле) с узлами постоянно подключающимися, отключающимися и выдающими ошибки.


Число хабов снижается, число юзеров на хабах снижается.
А вот DHT как раз и нужен, чтобы найти источники для закачки файлов самостоятельно, в обход хабов и их ограничений на поиск, напрямую между клиентами.
Аватара пользователя
HackFresse
 
Сообщения: 507
Зарегистрирован: 02 фев 2010, 19:23

Сообщение flylinkdc » 05 окт 2016, 16:04

Цитировать из вик ты мастер, но ты не ответил на вопрос - почему DHT не приняли в upstream - оригинальный DC++?
Проблема в том, что реализация DHT от StrongDC++ не работала и только напрасно гоняла левый UDP-траф.
все кто остались в DC++ и имеют полезный контент и так сидят на топовых хабах которые сейчас простаивают без нагрузки.
кому нужно найти источники - сделает это и без DHT
у флая DHT активирован в libtorrent - там будет использоваться именно он.
и смысла держать еще один открытый UDP порт не вижу смысла.
Аватара пользователя
flylinkdc
 
Сообщения: 427
Зарегистрирован: 15 дек 2013, 10:26
Откуда: Караганда -> Липецк
Хаб: dchub://dc.fly-server.ru

След.

Вернуться в Помощь & идеи



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron