Как в transmission выбрать отдельные файлы

Обновлено: 04.07.2024

Для работы с torrent у меня используется transmission - простой и удобный сервер, который работает на домашнем сервере в режиме 24x7. Одно лишь неудобство, когда приходится добавлять новую закачку. Приходится либо скачивать torrent файл и добавлять его, либо копировать ссылку (если torrent файл доступен по прямому url) В любом случае не получается просто кликнуть на ссылку и добавить закачку на сервер.

Первым делом попробовал поискать дополнение для Firefox. Нашелся Autotrans, разработка которого похоже давно заброшена. К тому же в последнюю версию firefox дополнение не ставится.

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

  • на всех компьютерах регистрируется дефолтный обработчик файлов torrent
  • этот обработчик вызывается каждый раз, когда открывается torrent файл (не важно из файлового менеджера или списка закачек в браузере - механизм открытия файлов примерно одинаков)
  • обработчик посредством RPC вызова добавляет закачку на сервер transmission

В репозитарии Debian нет пакета с transmission-remote-gui, поэтому я установил его из архива в

/bin/transmission-remote-gui. Осталось зарегистрировать его запускаемый файл как обработчик для torrent файлов.

В gnome ассоциации файлов задаются через desktop файлы, пользовательские настройки хранятся в

/.local/share/applications. Сперва я создал файл

/.local/share/applications/transmission-remote-gui.desktop, который регистрирует transmission-remote-gui в системе, как обработчик для MIME-type application/x-bittorrent.

Затем я добавил в

/.local/share/applications/mimeapps.list запись, которая делает transmission-remote-gui предпочтительным приложением при обработке файлов application/x-bittorrent.

Теперь добавление закачек стало намного проще.

Hint: Чтобы не замусоривать систему закачанными torrent файлами, нужно выбрать их удаление после добавления закачки.

Начинаем с основы — ядра (папка libtransmission). Правим заголовок — transmission.h.
Добавляем поле в структуру описания метаданных торрента tr_info поле "char * rename". Эта структура содержит данные, полученные из .torrent. Собственно если таких данных нет, то и переименование не возможно, поэтому логично затесаться в эту структуру.Добавленное поле будет содержать имя торрента в файловой системе после переименования.

Кроме того добавляем описание нашей новой функции:


Самое время упомянуть об одной сложности — имена файлов строятся на основе оригинального имени.
Конечно можно всё пропатчить, но таких мест довольно много, и лучше просто после загрузки «перегрузить» эти имена.
Поэтому мы используем встроенный механизм восстановления информации — добавляем поле, которое содержит этот самый список путей, для сохранение, и при загрузке «вспоминаем» всё то, что нам нужно.

Пока отложим этот момент ненадолго, но не забудем о нём.
Перейдём к главному — самой функции перемещения. Редактировать будем torrent.h/torrent.c.
Сначала добавим в заголовочный файл функцию, которая и будет записывать перезаписывать пути для файлов во внутренней структуре торрента, эта функции будет нужна в том самом механизме:

Ну и в сам torrents.c её тело:

Всё примитивно — освобождаем старый путь, записываем новый. Такой небольшой хелпер.
Далее находим функцию fileExists() и после неё пишем основной код:

Большая часть кода это простые проверки, существенная часть это собственно сам вызов rename(), и правка info->files. Ну и не забываем заполнить info->rename.

Теперь нужно дать знать всем о том, что имя сменилось. Фактически это можно сделать прямыми правками. Несмотря на то что автор большей части кода пошёл по пути модификации tr_torrentName() я выбрал другой путь. Модификация той функции полезна только если собираетесь использовать gtk-клиент, тогда да, лучше заменить единственную строчку кода на:

Дабы всё было в ажуре для gtk, но так как я не использую это gui, то посчитал излишним портить кучу других вещей типа построения magnet-ссылки (оригинальный патч, само собой, портит). Фактически мне поле rename нужно только для построения пути к файлам, и для того чтобы отдавать по RPC, дабы RPC-клиент мог, например, открыть папку с торрентом. Первое у нас есть (пока что половинка), второе решается тоже несложно (переходим к правке имплементации RPC — rpcimpl.c).

Ищем функцию addField(), которая отвечает за формирование информационных полей торрента для ответа. То есть мы можем запросить некий набор полей о торренте, и с помощью этой функции Transmission сформирует данную информацию. Нас интересует поле "name", заменяем параметр "tr_torrentName( tor )" на

Теперь добавим саму команду, для этого и отредактируем функцию torrentSet():
Добавим в блок описания переменных — const char * str;
И проверку на команду rename:


Что же мы не сделали? А мы забыли о механизме сохранения состояния торрента!
Нужно восполнить этот пробел, этот модуль содержится в файлах (resume.c / resume.h).
Сначала добавим флажки сохраняемых полей. В заголовочном файле только одно перечисление, запутаться трудно.
Нам нужно будет сохранять информацию о настоящем местоположении торрента (inf->rename) и список файлов, о котором я говорил ранее.
Значит 2 флажка:

Несмотря на присутствие заголовочного файла, в resume.c есть список ключей-дефайнов (ключ описывает каждую сущность состояния сохраняющуюся на диск).
Туда нам тоже необходимо «вписаться»:

Оригинальное поле "name" не сохраняется, так как берется непосредственно из .torrent. Поэтому вполне можем в качестве ключа использовать этот идентификатор, и это не внесёт никакой путаницы в дальнейшем.
Добавим функции сохранения путей:

И добавим в интерфейсные функции наше пожелание о сохранении.
tr_torrentSaveResume(), сразу после проверки if( tr_torrentHasMetadata( tor )):

А код загрузки в loadFromFile():

Можно заметить что мы нигде не выставляем эти флажки (TR_FR_*), а только проверяем их, как же менеджер узнает о том что грузить нужно?
Ответ заключается в том, что модуль использует правило «всё разрешено, что не запрещено», то есть примерно так: flags &=

deniedFieilds;
Булева логика любезно нам подсказывает то что наши 20 и 21 биты будут установлены в любом случае.

Фактически это всё. В указанном в начале топика патче есть код правки gtk и transmission-remote, с добавлением этой функции, но там всё тривиально ибо это фактически простые клиенты перенаправляющие запросы к серверу (непосредственно к libtransmission для gtk, и через rpc для -remote) с каплей бизнес-логики.

Transmission. Display Name.

Так, с главной проблемой разобрались, теперь осталась вторая подзадача.
Я хочу видеть в клиенте не кучу «Season N» в качестве названий (а именно их передаст нам rpc-сервер, ибо как я объяснял в начале топика торренты у меня хранятся именно по такой схеме), а вполне осмысленные строки. Поэтому внесём совсем маленькую правку — просто добавим новое свойство "displayName" и набор геттеров/сеттеров в интерфейсе RPC.
Это очень маленькая и простая правка — нам нужно сделать всё тоже самое что и с полем rename, только без бизнес-логики и с модификацией rpc-отдачи.

  • Добавляем поле в структуру tr_torrent в transmission.h
  • В функцию torrentSet() добавляем простенькую модификацию tor->displayName используя tr_strdup() и команду "displayName", например.
  • Добавляем новое поле в addField().
  • В менеджер состояний так же вносим новый ключ "displayName" со всеми вытекающими.

Когда меняем это поле, необходимо пометить то, что торрент — «грязный», то есть его состояние было изменено со времени последнего сохранения.

использовать передачу

Какой ваш любимый торрент-клиент? Моя - Трансмиссия. Должен признаться, что раньше я использовал uTorrent, но перестал это делать, когда обнаружил, что он делает «странные вещи», например, добывает биткойны с помощью компьютеров, которые его использовали. С тех пор я попробовал еще раз и остался в Transmission. Это очень простой в использовании менеджер загрузок из сети Torrent. Как и все, иногда лучше с первого толчка, поэтому ниже у вас есть небольшое руководство, которое объясняет как использовать трансмиссию для загрузки файлов .torrent.

Скачивание с передачей

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

Для загрузки файлов с помощью Transmission нам понадобится торрент файлы что мы только что упомянули. Эти файлы размещаются на веб-страницах, и существуют поисковые системы, которые отвечают за обнаружение торрент-файлов и поиск, который они выполняют на разных веб-страницах. Самый известный веб-сайт, который у меня сейчас не работает (поиски пустые), - это The Pirate Bay. Так как это наиболее атакованный веб-сайт и он проводит большую часть времени без работы, я рекомендую вам поискать в Kick Ass Torrent.

Что нам нужно сделать, чтобы загрузить с помощью Transmission + Kick Ass Torrent, так это выполнить следующие действия:

  1. Позволять kat.cr. Если, как и я, вы используете DuckDuckGo в качестве поисковой системы, вы можете использовать команду bang! Kick «что угодно», чтобы перейти прямо к Kick Ass Torrents и показать вам желаемый поиск.
  2. Мы ищем в диалоговом окне то, что хотим. В этом примере я искал Ubuntu 16.

обидные торренты-2

  1. Когда вы нажмете Enter, вы попадете в окно, подобное приведенному ниже. Что вам нужно сделать, или что я рекомендую, это просто щелкнуть значок магнита (отмечен в красном поле), который является Магнитом. Магнит - это ссылка на торрент, и с ее помощью скачивать торрент-файл не обязательно.

обидные торренты-1

  1. При первом нажатии на ссылку .magnet система спросит вас, с помощью какой программы вы хотите ее открыть. Мы выбрали Tranmission.
  2. Если мы уже связали ссылки .magnet с Transmission, нажатие на магнит откроет окно с информацией о загрузке, как вы можете видеть на следующем снимке экрана. Теперь нам остается только ждать.

передача информации

Если мы хотим всегда загружать файлы в одну и ту же папку и не изменять какое-либо значение (как в моем случае), мы можем перейти в меню Изменить / Настройки / Загрузки y снимите флажок Показать окно параметров торрента. Если мы это сделаем, просто щелкните значок магнита, чтобы начать загрузку.

Общие настройки

При добавлении .torrent мы увидим изображение, подобное следующему:

коробка передач

Как я уже сказал ранее, Transmission предлагает простое изображение, поэтому мы не увидим много вариантов. По общему признанию, дизайн не самый красивый в мире, но его много, вот увидите. Среди кнопок, которые мы видим в главном окне, мы видим одну из открытый (в случае, если у нас есть или загружен файл .torrent вместо того, чтобы нажимать на ссылку .magnet), Начало, Пауза o удалять. Если мы хотим что-то узнать о .torrent, мы выбираем его и нажимаем «Свойства».

В левом нижнем углу у нас есть колесо опций, с помощью которого мы можем предельная скорость загрузить и / или скачать. Рядом находится черепаха, которая поможет нам активировать альтернативные лимиты (по умолчанию 50kB / s как для восходящего, так и для нисходящего потока).

Мы также можем загружать торренты с передачей

При желании мы также можем загрузить свои собственные торренты. Для загрузки торрент-файлов потребуется полное руководство, но его можно обобщить в следующих шагах:

  1. Заходим в меню Файл / Новый.
  2. Мы выбираем Исходный файл, то есть тот, которым мы хотим поделиться.
  3. Главное - трекеры. Мы должны найти несколько хороших и добавить их в соответствующее поле.

загрузка-торрент

  1. Дожидаемся создания торрента.
  2. Теперь нам нужно загрузить созданный файл на веб-сайт, на котором размещены торрент-файлы, такие как вышеупомянутый Kick Ass Torrents. Загружаем и заполняем поля.
  3. Последнее, пожалуй, самое важное: наберитесь терпения и не перемещайте файлы и не удаляйте торрент, пока он не будет загружен.

Как видите, Transmission очень проста в использовании. У вас есть еще один торрент-клиент, который вы предпочитаете использовать в Ubuntu? Который?

Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.

Полный путь к статье: Убунлог » Ubuntu » Учебники » Как использовать Transmission, один из лучших клиентов для загрузки торрентов и обмена ими

Вы можете быть заинтересованы

9 комментариев, оставьте свой

Оставьте свой комментарий Отменить ответ


GalaxyLJGD сказал

Интересный пост о том, как использовать Transmission, но я думаю, вы должны быть осторожны с использованием Kickass Torrents в качестве примера того, как использовать этот торрент-клиент, кто знает, может быть, вам подадут в суд или что-то подобное за ссылку на страницу, на которой есть судебные иски о пиратстве .


Рубен сказал

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

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


g сказал

что ты думаешь о кторренсе


Josele13 сказал

Я думаю, что так же, как Рубен, я использую Qbittorrent, потому что он полный и простой в использовании, единственное, что, как всегда, нужно замечать, чем вы делитесь и где вы загружаете, я советую использовать ту же папку,


анонимный сказал

Qbittorrent мне больше подходит. Я не знаю почему, но мне намного лучше


Guille сказал

Что-то, чего я не знал, и это случилось со мной на этой неделе, я загрузил dvd-образ фильма в формате iso, и, не монтируя его или что-то еще, я сбросил его на Smplayer, и это заняло немного времени, но он воспроизвел его со всеми субтитры и варианты дублирования.


Гвидо Камарго сказал

Впервые я использую его, и он предназначен для загрузки новой версии elementary os, в настоящее время я использую ubuntu 16.04.1, и, как говорится в статье, это действительно просто, это первый вариант, который я пробую, и я думаю, что я Я собираюсь остаться здесь на некоторое время, используя Transmission, пока его легко и быстро использовать здесь, я буду .


Родриго сказал

Привет, переход с Windows 10 на Ubuntu Mate 17.04, но я был разочарован, потому что я не нашел ни одного приложения для загрузки музыки из Интернета с Ubuntu, я спрашивал на форумах и ничего, в Windos я использовал Ares, это невозможно в Ubuntu?
Спасибо за любые комментарии.


Эзезиель Базилио сказал

Я почти не вижу твоих сомнений. вы можете скачивать музыку прямо с YouTube с помощью Video Downloader
его очень легко использовать с ubuntu. поэтому вам не нужно использовать загрузчики из Интернета. это безопаснее и очень быстро. Надеюсь, ты сможешь попробовать. Было бы грустно, если бы вы вернулись к windows за чем-то подобным .

Читайте также: