utorrent rpc support [RU]
После нескольких фиксов возникла концептуальная проблема. А именно, в api utorrent в методе добавления торрента используется относительный путь (в принципе неподдерживается абсолютный путь, только относительный), а в возвращаемом списке всех торрентов уже абсолютный (известная проблема в utorrent).
В функции update_torrents происходит передача абсолютного пути при добавлении нового торрента:
rpc_object.method_add_torrent( tracker_torrent, rpc_torrent['download_to'], params=rpc_torrent.get('params', None) )
Это приводит к постоянному дублированию:
/home/download/home/download/home/...
Варианты решения:
- Хранить путь загрузки в
TorrentData, а не использовать параметр из api.
Да, интересно получается. Можно попробовать находить общий префикс у файлов и не добавлять его, если он уже есть.
А что это за известная проблема, на неё есть задача в каком-нибудь трекере?
https://forum.utorrent.com/topic/71523-possible-bug-add-file-sub-path-issue/
Хранить путь загрузки в TorrentData, а не использовать параметр из api.
Боюсь, что тут могут возникнуть проблемы с обратной совместимостью. Сейчас источником данных является торрент-клиент, а торрт всего лишь помогает ему. То есть, пользователь может прямо в клиенте задать нужный путь и торрт будет это учитывать.
В предлагаемом решении мы пытаемся обойти странность поведения одного из клиентов, размазав ответственность ещё и на торрт. Утрируя: пытаемся превратить торрт в ещё один интерфейс для клиента.
Предложите решение, с меня реализация.
Пока только такие варианты, один исследовательский, два радикальных:
- Можно попробовать находить общий префикс у файлов и не добавлять его, если он уже есть. Вероятно тут же можно поиграться с
sub_path(считаем, что если торрент был когда-то добавлен, то директория уже создана). - Перейти на Transmission.
- Добраться до кода ядра мюторрента и продавить патч. Правда не очень понятно, как его сделать обратно совместимым.