Настройка перехвата magnet-ссылок
Создано: 2010-09-19
Обновлено: 2011-09-28
Описание:
Достаточно подробную информацию о magnet-ссылках можно прочитать на соответствующей
странице (
en) в Википедии. Здесь же будут представлены только практические рекомендации по настройке популярных браузеров для работы с ними в юникс-подобных системах.
Список бинарных файлов программ, в которых точно есть возможность передачи magnet-ссылок работающему процессу:
- freedcpp
- linuxdcpp
- eiskaltdc
- eiskaltdcpp
- eiskaltdcpp-qt
- eiskaltdcpp-gtk
Ниже приведены интрукции на примере
eiskaltdcpp-qt.
Настройка браузера Opera: Tools/Preferences/Advanced/Programs/Add (Инструменты/Настройки/Дополнительно/Программы/Добавить)
Protocol: magnet
Open with other application: /usr/bin/eiskaltdcpp-qt
Аналогично добавляем хаб-ссылки, вместо magnet пишем dchub. Эти настройки применятся сразу.
Настройка браузера Iceweasel (Firefox):
(версия < 3.6) в about:config добавить:
ключ (строковое) = network.protocol-handler.app.magnet
значение = /usr/bin/eiskaltdcpp-qt
(версия >= 3.6) в about:config добавить:
ключ (логическое) = network.protocol-handler.expose.magnet
значение = false
нажать на магнет ссылку и в появившемся диалоге выбрать чем открывать
Аналогично добавляем хаб-ссылки... Эти настройки применятся сразу.
Подхват магнет-ссылок из Iceweasel (Firefox) и Chromium (Google Chrome) в Gnome:
gconftool-2 -t string -s /desktop/gnome/url-handlers/magnet/command "eiskaltdcpp-qt %s"
gconftool-2 -t bool -s /desktop/gnome/url-handlers/magnet/needs_terminal false
gconftool-2 -t bool -s /desktop/gnome/url-handlers/magnet/enabled true
Эти настройки применятся сразу.
Подхват магнет-ссылок из Iceweasel (Firefox) и Chromium (Google Chrome) в Gnome (вариант №2):
mkdir -p ~/.gconf/desktop/gnome/url-handlers/magnet
echo '<?xml version="1.0"?>
<gconf>
<entry name="needs_terminal" mtime="1241801989" type="bool" value="false"/>
<entry name="enabled" mtime="1241801989" type="bool" value="true"/>
<entry name="command" mtime="1254633960" type="string">
<stringvalue>eiskaltdcpp-qt "%s"</stringvalue>
</entry>
</gconf>' > ~/.gconf/desktop/gnome/url-handlers/magnet/%gconf.xml
Эти настройки применятся после перезапуска иксов или полной перезагрузки.
Подхват магнет-ссылок из Konqueror и Chromium (Google Chrome) в KDE:
echo '[Protocol]
exec=/usr/bin/eiskaltdcpp-qt %u
protocol=magnet
input=none
output=none
helper=true
reading=false
deleting=false
writing=false
makedir=false
deleting=false
Icon=eiskaltdcpp
Class=:internet
Description=Direct Connect protocol
URIMode=url' | sudo tee /usr/share/kde4/services/magnet.protocol
Эти настройки применятся сразу.
Если используется FreeDC++ или EiskaltDC++ Gtk, то не забудьте также включить соответствующую опцию в его настройках:
Рассмотренные выше инструкции представлены для случая, если вы используете только Direct Connect. Но magnet-ссылки на веб-страницах могут предназначаться и для торрент-клиентов. Если вы используете обе технологии для файл-обмена, то для удобства их использования имеет смысл написать простой скрипт для распознавания типа magnet-ссылки и передачи ее в нужную программу.
Вот
пример простого скрипта:
#!/bin/sh
export DC_CLIENT='eiskaltdcpp-qt'
export TORRENT_CLIENT='transmission-remote --add'
if (echo "${1}" | grep '^magnet:?.*xt=urn:tree:tiger:') then
echo -e "Using DC-client"
"${DC_CLIENT}" "${1}" &
elif (echo "${1}" | grep '^magnet:?.*xt=urn:btih:') then
echo -e "Using torrent-client"
"${TORRENT_CLIENT}" "${1}" &
else
echo -e "Unknown type of magnet-link:\n${1}"
exit 1
fi
exit 0
Сохраните этот скрипт как
/usr/local/bin/open-magnet или
/usr/bin/open-magnet и сделайте его исполняемым. Для настройки браузеров используйте инструкции выше, заменив
eiskaltdcpp-qt на
open-magnet.
Вот
пример более сложного скрипта:
#!/bin/sh
URL="$@"
LIST_TORRENTS="transmission
deluge
azureus
vuze
ktorrent
leechcraft -type url_encoded
qbittorrent
"
LIST_DCPP="eiskaltdc
eiskaltdcpp
freedcpp
linuxdcpp
leechcraft -type url_encoded"
url_handler() {
LIST="$1"
URL="$2"
echo "${LIST}" | \
while read PRG PARAMS ; do
PRG_PTH="/usr/bin/${PRG}"
if [ -e "${PRG_PTH}" ] ; then
[ "${PARAMS}" ] && PARAMS=" ${PARAMS}"
echo "exec ${PRG_PTH}${PARAMS} ${URL}"
exec ${PRG_PTH}${PARAMS} "${URL}"
break;
fi
done
}
#main
URL_TYPE=$(echo "${URL}" | sed 's/.*xt=urn:\([^:]*\):.*/\1/')
case "${URL_TYPE}" in
btih)
url_handler "${LIST_TORRENTS}" "${URL}"
;;
tree)
url_handler "${LIST_DCPP}" "${URL}"
;;
*)
echo "Error: url handler $URL_TYPE not found"
;;
esac
Пользователь
Nexor даже
сделал свой
deb-пакет (
копия) для автоматизации устаноки соответствующего скрипта и настройки системы. Поскольку не все используют основанные на Debian дистрибутивы, здесь выложен так же
архив, содержимое которого в комментариях не нуждается.
Ссылки с этого сайта:
DC клиенты для Linux
EiskaltDC++ — Screenshots
EiskaltDC++ — Часто задаваемые вопросы
EiskaltDC++ — пакеты для Debian GNU/Linux и Ubuntu
FreeDC++ — пакеты для Debian GNU/Linux и Ubuntu
uHub — пакеты для Debian GNU/Linux и Ubuntu
Внешние ссылки:
Google chrome (Chromium) и Magnet-ссылки в Ubuntu Linux
MAGNET-URI Project
Register protocol
Лицензия: Public Domain (
ru,
en)
Заметка:
Все представленные здесь материалы можно использовать частично или полностью без указания ссылок на автора (меня) и оригинальную страницу.