idlesign / torrt

Automates torrent updates for you
https://github.com/idlesign/torrt
BSD 3-Clause "New" or "Revised" License
112 stars 19 forks source link

utorrent rpc support [RU] #69

Open st7105 opened 3 years ago

st7105 commented 3 years ago

После нескольких фиксов возникла концептуальная проблема. А именно, в 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/...

Варианты решения:

idlesign commented 3 years ago

Да, интересно получается. Можно попробовать находить общий префикс у файлов и не добавлять его, если он уже есть.

А что это за известная проблема, на неё есть задача в каком-нибудь трекере?

st7105 commented 3 years ago

https://forum.utorrent.com/topic/71523-possible-bug-add-file-sub-path-issue/

idlesign commented 3 years ago

Хранить путь загрузки в TorrentData, а не использовать параметр из api.

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

В предлагаемом решении мы пытаемся обойти странность поведения одного из клиентов, размазав ответственность ещё и на торрт. Утрируя: пытаемся превратить торрт в ещё один интерфейс для клиента.

st7105 commented 3 years ago

Предложите решение, с меня реализация.

idlesign commented 3 years ago

Пока только такие варианты, один исследовательский, два радикальных: