#10 ✓resolved
vovasty

Groups

Reported by vovasty | March 26th, 2010 @ 01:03 AM | in 0.4.0

Implement user-defined groups

Comments and changes to this ticket

  • vovasty
  • vovasty
  • dkobzev

    dkobzev March 26th, 2010 @ 07:24 PM

    Хорошо вышло, без подсветки значка цветом метки, даже как то лучше выглядит чем в трансмишине. Может и не стоит делать или сделать как нибудь информативно, но посимпатичнее чем в трансмишен?
    Еще стоит учесть еще вот это http://libtorrent.rakshasa.no/ticket/1543. Это сделано для случаев к примеру, если запущу нативу с другой машины все мои группы останутся на той где настраивал.
    Надо на сервер их дублировать, причем при каждом запуске, они сбрасываются при рестарте на настройки из rtorrent.rc.
    Так же там есть то чего нет в трасмишен, это настройки групп. :)

  • dkobzev

    dkobzev March 26th, 2010 @ 07:32 PM

    Кстати поломались space left и total transfer

  • vovasty

    vovasty March 26th, 2010 @ 07:35 PM

    Группы хранятся в поле custom1 (это можно будет настраивать), а не в группах.

  • dkobzev

    dkobzev March 26th, 2010 @ 08:18 PM

    В принципе да, но например это:
    schedule = watch_directory_one_5,5,5,"load_start=/home/one/ratio_5/*.torrent,d.set_directory=/home/one/downloads, view.set_visible=ratio_5"

    Закачка ставится в директорию /home/one/downloads и ей ставится группа ратио ratio_5.
    В трансмишен Группа = Директория закачки. Следовательно группы ратио можно по логике будет ставить и на группы, тоже касается и throttle, такого функционала в трансмишин нет :) Там только по закачкам индивидуально.

    А если взять в примеру добавление по маске. Ну кинет трансмишен закачку в нужную папку, ну присвоит группу. Но ограничение и ратио руками выставлять прийдется. А если сразу штук 20 закачек добавить и все они по разным группам разлетятся (все сразу выделить и поставить не прокатит…)? Вот отсюда и напрашиваются свойства групп =)

  • vovasty

    vovasty March 26th, 2010 @ 08:23 PM

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

    ПС
    Спасибо Вам за Ваши комментарии - очень полезно ;)

  • dkobzev

    dkobzev March 26th, 2010 @ 09:17 PM

    Добавить в d.multicall еще и d.get_custom1 для всех если.
    для единичного d.get_custom1

    Еще есть это:
    view_add
    view_set
    view_list
    download_list

    Ставит произвольные статусы к торрентам. Для групп наверное это слишком, но тоже может быть полезно. И еще view_list выводит все стандартные статусы. Фильтровать по ним всем нет необходимости, но вот визуальную индикацию сделать для всех стоит, а то сейчас не понять что с закачкой происходит.

  • dkobzev

    dkobzev March 26th, 2010 @ 09:19 PM

    для единичного d.get_custom1 "torrenthash"

    torrenthash в угловых скобках вырезало :)

  • vovasty

    vovasty March 26th, 2010 @ 09:29 PM

    Тогда можно делать так: ставить название группы в custom1 и добавлять во view с таким же именем. Это, конечно, не очень надежно, но все же. Считывать каждую группу по отдельности слишком накладно.

  • dkobzev

    dkobzev March 26th, 2010 @ 10:54 PM

    http://libtorrent.rakshasa.no/ticket/804
    судя по примерам view служит для фильтрации по данным закачки. Метки туда не очень вписываются.

    Считывать поле custom1 для списка закачек прийдется все равно, оно необходимо для дальнейшей сортировки по группам всего списка. Весь список загружается со всеми параметрами при старте, почему бы в это время и не сформировать массив со списком уникальных групп? А дальше предикатом по списку. По ресурсам не более емко чем в любое время создать массив отдельным запросом.

  • vovasty

    vovasty March 26th, 2010 @ 11:03 PM

    Судя по примеру, custom1 более чем подходит для меток. View и Group могут быть сопоставлены торрентам по этому полю

  • dkobzev

    dkobzev March 27th, 2010 @ 12:19 AM

    xmlrpc nas d.multicall default d.get_custom1= d.views= group.rat_7.view=

    Index 0 String: '%D0%9A%D0%B0%D0%BF%D1%80%D0%B8%D0%BA%D0%B0'

             Index  1 Array of 1 items:
                        Index  0 String: 'rat_7'
             Index  2 String: 'rat_7'
    

    В custom, custom1,…custom(N) все текстовое. Хранят имя группы, пути и т.д….
    views массив. Может содержать несколько view для одной закачки. view это отображение списка по фильтру.
    А group ставит настройки ратио и ограничений и привязывает их к view.

    Если у закачки может быть несколько view и метки будут во view, может случиться что закачка окажется сразу в нескольких группах) Но с другой стороны group c его настройками ратио больше никак не привязать к группе в Nativa.

  • vovasty

    vovasty March 27th, 2010 @ 02:33 AM

    вот я и говорю - вы можете сделать view с фильтром по custom. Вернее так, в дальнейшем можно будет сделать этакий редактор rtorrent.rc, который и будет формировать всякие там groups

    Плюс, под маками последний rtorrent не собирается с xml_rpc.advanced, а группы, насколько я понял, появились в 0.86

    Итого. На данный момент я остановлюсь на реализации меток в полях custom.
    В дальнейшем, когда решу проблемы с SSH, попытаюсь сделать какой-нибудь редактор групп, ratio и тп

  • dkobzev

    dkobzev March 27th, 2010 @ 03:20 AM

    http://www.rudix.org/packages-rst.html#rtorrent 0.8.6 доступна. Хотя у меня стоит на NAS под linux.
    Вроде мак версия идентичная на 100%.

    torrent.rc трогать плохая идея. Все параметры конфига переназначаются через RPC, и замещают загруженные из torrent.rc и до перезагрузки сервера сброшены не будут. На данный момент у меня torrent.rc с указанием папки, порта и адреса SCGI, кодировки, ограничением места и маской прав на новые закачки и это все... А все остальное выставляет WebUI rutorrent и самописный скрипт на perl для автозакачки с rss рассылок. Гораздо правильнее хранить конфиг локально и если настройки сброшены заново их устанавливать. В случае различия комбинировать (если что-то установлено другим клиентом).
    Полный спектр возможностей rtorrent доступен через xmlrpc, включая задания по расписанию и выполнение команд по событию, зачем дефолтный конфиг то трогать?

  • dkobzev

    dkobzev March 27th, 2010 @ 03:28 AM

    Ах да, еще еще есть session файлы, которые позволяют восстановить список закачек после рестарта. Так вот они представляют из себя обычные .torrent файлы но с добавленными полями, такими как custom, group, view и т.д. в общем со всеми установленными на закачку параметрами. Они соответственно после рестарта не сбрасываются.

  • vovasty

    vovasty March 27th, 2010 @ 03:54 AM

    спасибо за ссылку. Эта версия без xmlrpc, увы.

    Дефолтные установки нужны на случай перезагрузки сервера - он может быть перезагружен во время работы клиента.

    Сам по себе rtorrent.rc не такой уж и сложный, его вполне можно править без потери пользовательских данных.

    В общем, пока я к этому не готов. Вроде, группы как-то работают - и слава богу =)

  • dkobzev

    dkobzev March 27th, 2010 @ 05:04 AM

    спасибо за ссылку. Эта версия без xmlrpc, увы.

    Но собрать все таки можно)
    http://rakshasa.no/pipermail/libtorrent-devel/2008-May/001620.html

    Дефолтные установки нужны на случай перезагрузки сервера - он может быть перезагружен во время работы клиента. Сам по себе rtorrent.rc не такой уж и сложный, его вполне можно править без потери пользовательских данных. В общем, пока я к этому не готов. Вроде, группы как-то работают - и слава богу =)

    Всетаки лучше совсем не трогать. Практически все необходимое он возьмет из session файлов. А остальное, глобальные настройки, порты, dht, количество сокетов, соединений, портов, максимально открытых портов, используемой памяти... лучше ставить временно. На слабой машине одна ошибка убьет сервер и без редактирования конфига ручками сервер не поднимется. А так справится небольшой скрипт по крону, прибьет зависший сервер и перезапустит. А временные настройки от клиента можно обновить при восстановлении соединения после обрыва связи в случае падения сервера.

  • vovasty

    vovasty March 27th, 2010 @ 05:31 AM

    Но собрать все таки можно) http://rakshasa.no/pipermail/libtorrent-devel/2008-May/001620.html

    как автор этого трика авторитетно утверждаю - можно собрать, но до версии 0.82. потом проблемы с libxml :)

    Всетаки лучше совсем не трогать. Практически все необходимое он возьмет из session файлов. А остальное, глобальные настройки, порты, dht, количество сокетов, соединений, портов, максимально открытых портов, используемой памяти... лучше ставить временно. На слабой машине одна ошибка убьет сервер и без редактирования конфига ручками сервер не поднимется. А так справится небольшой скрипт по крону, прибьет зависший сервер и перезапустит. А временные настройки от клиента можно обновить при восстановлении соединения после обрыва связи в случае падения сервера.

    1. Как отличить обрыв соединения (посмотрите в логи - соединение непрерывно рвется) от перезагрузки сервера (или только самого rtorrent)? Nativa работает урывками, в отличие от вебклиентов
    2. Мне не так много нужно править в rtorrent - только отграниченния на скорость (глобально), view да groups. Пожалуй и все.
  • dkobzev

    dkobzev March 27th, 2010 @ 05:48 AM

    Ну глобальное ограничение скорости вроде уже реализовано, и нормально работает.
    А вот определить рестарт сервера можно хотя бы по тому же глобальному ограничению скорости, если сбросилось, а кнопка не нажималась, значит был рестарт (лучше правда по чему нибудь очень редкому). Хотя так же возможно ограничение кто-то снял с другого клиента. :) Но в этом случае Nativa будет вечно пытаться править torrent.rc, а второй клиент выставлять временные настройки поверх.
    Еще с torrent.rc будет такая проблема, в моем случае сервисы rtorrent, lighttpd, samba, afpd… работают под пользователем у которого нет директории home и rtorrent стартует с ключем -n -o import=/var/etc/rtorrent.conf
    Похожая проблема будет на большинстве embeded систем и путь к конфигу у многих будет разный.

  • dkobzev

    dkobzev March 27th, 2010 @ 10:18 PM

    Посмотрел последние обновления, есть пару багов:

    1. Только созданные группы не применяются (применяются, но группа не отображается, закачка становится в No Group), надо делать рестарт приложения что бы отобразились изменения.
    2. Метки на кирилице не приминяются Nativa[2689:6acb] Unable to set group for torrent: Network timeout
    3. Метки присутствующие на закачках, но не добавленные в настройках Nativa игнорируются.
  • vovasty

    vovasty March 28th, 2010 @ 03:26 AM

    Только созданные группы не применяются (применяются, но группа не отображается, закачка становится в No Group), надо делать рестарт приложения что бы отобразились изменения.

    ну, уже работает =) Вы очень торопитесь -)

    Метки на кирилице не приминяются Nativa[2689:6acb] Unable to set group for torrent: Network timeout

    Боюсь, это уже к rtorrent

    Метки присутствующие на закачках, но не добавленные в настройках Nativa игнорируются.

    так и есть. Пока что я н придумал, что с этим делать. Можно синхронизировать на старте - но это ненадежно (изменения могут произойти и "посередине"), плюс, мои группы обладают дополнительным параметром (цветом). В общем, пока идей нет как все правильно сделать.

  • dkobzev

    dkobzev March 28th, 2010 @ 04:03 AM

    ну, уже работает =) Вы очень торопитесь -) ок. обновляюсь. =) У вас кстати там файлик NSStringTorrentAdditions.h а везде import NSStringAdditions.h править каждый раз перед сборкой приходится. Оно в принципе и так собирается, но панелька с ратио и скачано / роздано не работает тогда.

    Метки на кирилице не приминяются Nativa[2689:6acb] Unable to set group for torrent: Network timeout Боюсь, это уже к rtorrent

    Я выше вывод консоли с русской меткой приводил :)

    Index 0 String: '%D0%9A%D0%B0%D0%BF%D1%80%D0%B8%D0%BA%D0%B0' rtorrent скорее всего просто в UTF не может хранить. А в ascii на любом языке должен.

    так и есть. Пока что я н придумал, что с этим делать. Можно синхронизировать на старте - но это ненадежно (изменения могут произойти и "посередине"), плюс, мои группы обладают дополнительным параметром (цветом). В общем, пока идей нет как все правильно сделать.

    Цвет как вариант использовать какой нибудь default для таких случаев, ну или рандом. Сложнее будет с директорией закачки потом, если попадутся с одной меткой, но в разных директориях) А с проверкой на изменения надо что-то придумывать. У меня например стоит расписание, ночью выставляется глобальное ограничение скорости, "черепашка" загорается только после рестарта Nativa. И таких объектов много еще будет.

  • dkobzev

    dkobzev March 28th, 2010 @ 04:11 AM

    Собрал кстати последние xmlrpc и rtorrent. Может кому потребуются.
    Линковка статическая. Для работы xmlrpc требуется SCGI MountPoint в /RPC2/, в отличии от Nativa с SCGI портом rtorrent на прямую не работает.

  • vovasty

    vovasty March 28th, 2010 @ 04:39 AM

    У вас кстати там файлик NSStringTorrentAdditions.h а везде import NSStringAdditions.h править каждый раз перед сборкой приходится. Оно в принципе и так собирается, но панелька с ратио и скачано / роздано не работает тогда.

    Все никак не дойдут руки почистить код.

    Я выше вывод консоли с русской меткой приводил :)

    ммм, не вариант для азиатских языков, да и вообще, неясно, в какой ascii переводить. Да и UTF идет в самом rtorrent, к примеру, для имен файлов. Избегайте русских меток=)

    Собрал кстати последние xmlrpc и rtorrent. Может кому потребуются.

    Как это Вам удалось? В последней xml-rpc (которая не 1.06) масса проблем с линковкой.

  • dkobzev

    dkobzev March 28th, 2010 @ 05:22 AM

    Все брал последнее из stable. Были проблемы при сборке только с sigc++, он пытался что-то из своей документации записать в /usr/local/doc, без прав на это, естественно прерывал сборку. Добавил в мейкфайл директиву отключающую ему сборку документации и все собралось без проблем даже libcurl.pc не правил.

    Мейкфайл в атаче

  • dkobzev

    dkobzev March 28th, 2010 @ 05:39 AM

    ммм, не вариант для азиатских языков, да и вообще, неясно, в какой ascii переводить. Да и UTF идет в самом rtorrent, к примеру, для имен файлов. Избегайте русских меток=)

    UTF в rtorrent по умолчанию, кодировка меняется параметром encoding_list на любую другую.

    xmlrpc nas d.set_custom1 902E3A770E9732E355229824941CDE45B06F4AA0 Проба
    

    в rutorrent появилась метка "Проба".

     xmlrpc nas d.get_custom1 902E3A770E9732E355229824941CDE45B06F4AA0
    
    Вывел '\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff'
    Видимо хранится в C String просто.
  • vovasty

    vovasty March 28th, 2010 @ 06:05 AM

    Все брал последнее из stable. Были проблемы при сборке только с sigc++, он пытался что-то из своей документации записать в /usr/local/doc, без прав на это, естественно прерывал сборку. Добавил в мейкфайл директиву отключающую ему сборку документации и все собралось без проблем даже libcurl.pc не правил.

    Неее, stable нельзя, только advanced можно =) В stable проблема с большими цифрами(10^6?) (не поддерживается i4)

  • dkobzev

    dkobzev March 28th, 2010 @ 06:12 AM

    Точнее даже как URL хранится. Причем принимает простую С строку, а возвращает только в URL.
    В rutorrent используют JS decodeURIComponent() при считывании параметра.
    И англоязычные метки установленные в rutorrent выглядят как My%20Downloads. Метка My Downloads установленная из Nativa так и выглядит. Почему-то rtorrent метки от Nativa не конвертирует в URL строку, по той же причине видимо не принимает русских слов.

  • vovasty

    vovasty March 28th, 2010 @ 08:14 AM

    так, вроде, с группами все (кроме синхронизации с существующими - это отдельная песня)

    все должно работать (включая русские буквы в метках - помогло Ваше последнее исследование)

    Я бы хотел выразить Вам благодарность с занесением в "about" (ммм, очень похоже на с занесением в фотокарточку, хехе). Так что если Вас есть какая-нибудь личная страничка, то сообщите мне. Если Вы не хотите, чтобы я Вас включал в "about" - сообщите тоже. Моя почта vovasty собака(обезьянка, улитка, а-коммерческая ...) aramzamzam.net

  • dkobzev

    dkobzev March 28th, 2010 @ 09:42 AM

    Неее, stable нельзя, только advanced можно =) В stable проблема с большими цифрами(10^6?) (не поддерживается i4)

    Смог собрать с последним снапшотом xmlrpc-c из advanced. Только сборка динамическая, библиотеки в архиве вместе с rtorrent и xmlrpc. Статически пока собрать не удалось. Там configure отрабатывает очень багнуто, при линковке библиотеки других ос слинковать пытается. С этим просто все, но сел на crt0.o которая линкуется только в статике. Эта библиотека не указывается при линковке в мейках xmlrpc. Получает видимо из LD флага ос, но такой библиотеки в ос нет. В общем есть чем заняться в ближайшее время :).

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

    Cупер. Все работает. Русские метки работают :). Создал метки с идентичными именами какие стоят на закачках, все подхватил и раскидал по группам. На счет "все", еще одну мелочь надо бы =) рядом с названием группы количество элементов в ней, а то что бы узнать если что внутри, надо развернуть.

    Я бы хотел выразить Вам благодарность с занесением в "about" (ммм, очень похоже на с занесением в фотокарточку, хехе). Так что если Вас есть какая-нибудь личная страничка, то сообщите мне. Если Вы не хотите, чтобы я Вас включал в "about" - сообщите тоже. Моя почта vovasty собака(обезьянка, улитка, а-коммерческая ...) aramzamzam.net

    Я не против, но страницы нет (по крайней мере пока).

  • vovasty

    vovasty March 29th, 2010 @ 06:45 AM

    • Milestone set to 0.4.0
  • vovasty

    vovasty March 29th, 2010 @ 06:46 AM

    • State changed from “open” to “resolved”
  • dkobzev

    dkobzev March 29th, 2010 @ 01:59 PM

    У меня например стоит расписание, ночью выставляется глобальное ограничение скорости, "черепашка" загорается только после рестарта Nativa. И таких объектов много еще будет.

    Видимо это как то правилось. Черепашка теперь при запуске все время горит. Дело в том, что в rtorrent 0 без ограничений, но после установки значения в 0, он сам меняет его на макс. скорость канала. В моем случае это 10240. А проверка похоже на 0 стоит и 10240 считается ограничением скорости.

  • vovasty

    vovasty March 29th, 2010 @ 03:17 PM

    это странно. Проверка все время была на 0. Может, это у вас что-нибудь?

  • dkobzev

    dkobzev March 30th, 2010 @ 02:22 AM

    Возможно. Я позже заметил что висело 4 туннеля на 5000 порт. Не знаю как такое получилось. Видимо глюк из-за этого.
    А размер канала выставляет не rtorrent, а ruttorent. Не знаю зачем им это потребовалось?

  • dkobzev

    dkobzev March 30th, 2010 @ 04:30 PM

    Эмм… Загрузка "чужих" меток и кастомное поле для меток групп думаю не нужны. Побаловался с кастом полем, уронил rtorrent. Слишком много гадости всплывает.
    Думаю не стоит вообще ориентироваться на другие UI, посмотрел wtorrent там вообще views для меток используется, все не предусмотреть, а текущая гибкость с кастом полем доставит проблем "не продвинутым" пользователям.

  • vovasty

    vovasty March 30th, 2010 @ 04:44 PM

    Кастомное поле нужно, чтобы не вести свою базу меток. А как упал
    rtorrent? И какие проблемы были с полями?

  • dkobzev

    dkobzev March 30th, 2010 @ 05:28 PM

    Я и не говорю что кастомное поле нужно убрать. Просто если метки custom1, то пусть и будут только в custom1, нельзя давать менять пользователю.
    Я ради интереса сменил на custom2, там пути закачки от rutorrenta и у некоторых custom2 существует(не определена). При считывании rtorrent лег. Хотя и для custom1 все равно нужно как-то проверку делать, мало ли какую гадость туда могут поместить, но так определенней хотя бы, не надо учитывать все возможные предназначения custom поля.

  • vovasty

    vovasty March 30th, 2010 @ 06:17 PM

    нене, настройка нужна такая - она просто вынесена в advanced. Мало ли
    у кого что в custom1 лежит.

Please Sign in or create a free account to add a new ticket.

With your very own profile, you can contribute to projects, track your activity, watch tickets, receive and update tickets through your email and much more.

New-ticket Create new ticket

Create your profile

Help contribute to this project by taking a few moments to create your personal profile. Create your profile ยป

native Mac OS X client for rtorrent

more information: http://www.aramzamzam.net/nativa/

Shared Ticket Bins

People watching this ticket

Attachments

Referenced by

Pages