stogerc 23.01.2010 23:08
Tips & tricks — google chrome + magnet-ссылки
Магнет ссылки предназначены для указания на ресурсы, доступные к загрузке через p2p сети. Такие ссылки в основном идентифицируют файлы не по их расположению или имени, а по содержанию, точнее, по хеш-коду.При клике по такой ссылке google chrome передаёт эту ссылку утилите xdg-open, которая в свою очередь передаёт ссылку конечной программе. Но вряд ли xdg-open точно знает какая программа должна обрабатывать magnet-ссылку и у меня, например, xdg-open передавала ссылку x-www-browser, коим в моей системе является google-chrome. Сейчас я расскажу вам как научить xdg-open открывать magnet-ссылки тем, чем нужно.
Для этого смотрим, где находится файл xdg-open:
1 |
|
и открываем его для редактирования
1 |
|
Далее идем в самый конец файла и видим строки:
Понятно, что для open_xfce соответствует то, что команда будет выполняться в xfce, для open_kde то, что в kde и т.д. При необходимости ненужные DE можно стереть. Теперь нужно добавить условие, которое будет выполняться, если переданная ссылка magnet. Ниже приведен пример для всех DE и torrent клиента deluge.
Естественно, что вместо deluge вы можете подставить любую программу.
Как я уже сказал ненужные DE можно удалить и для openbox вышепреведённый код можно заменить на:
1 |
|
Вот и всё, теперь можете попробовать покликать magnet-ссылки на piratebay или на torrindex

+ 0 -
А этот скрипт (имеется в виду xdg-open) использует только chrome? Если знаете что еще его использует то можете написать?
Если хотите узнать что в вашей системе использует xdg-open, выполните
и посмотрите какие программы удаляются по зависимости. Потом, естественно, отмените удаление :)
aptitude remove xdg-utils
и посмотрите какие программы удаляются по зависимости. Потом, естественно, отмените удаление :)
Чтение списков пакетов... Готово
Построение дерева зависимостей
Чтение информации о состоянии... Готово
Следующие пакеты устанавливались автоматически и больше не требуются:
libclucene0ldbl libxine1-x kdebase-runtime-data-common libxine1-misc-plugins libxcb-xv0 kde-icons-oxygen libxine1-bin libexiv2-5 liblzma0 libsoprano4 kdelibs5-data kdiff3-doc
libxcb-shape0 libstreamanalyzer0 phonon-backend-xine libkonq5-templates libstreams0 exiv2 libxcb-shm0 soprano-daemon kdebase-runtime-data libxine1-console libxine1
Для их удаления используйте 'apt-get autoremove'.
Пакеты, которые будут УДАЛЕНЫ:
kdebase-runtime kdebase-runtime-bin-kde4 kdelibs-bin kdelibs5 kdiff3 khelpcenter4 libknotificationitem1 libkonq5 libplasma3 python-ubuntuone-client ubuntuone-client
ubuntuone-client-gnome umbrello xdg-utils
обновлено 0, установлено 0 новых пакетов, для удаления отмечено 14 пакетов, и 0 пакетов не обновлено.
После данной операции, объём занятого дискового пространства уменьшится на 59,1MB.
У меня там был всего лишь deluge, ktorrent, google-chrome и всякая мелочь, так что не удивляйтесь.
Общий ответ таков: все, кто следует стандартам в этой области. Но приложения, привязанные к конкретному DE имеют тенденцию игнорировать XDG и обращаться напрямую к ***-open.
Описывал способ для google chrome потому что в Firefox и Opera все это просто настраивается в опциях.
В firefox нужно зайти в Edit>>Preferences, выбрать вкладку Applications, найти строку magnet и настроить в поле action.
В opera: Tools>>Preferences, вкладка Advanced, подвкладка Programs, далее нажать Add и добавить нужное правило для нужного протокола, в данном случае magnet.
В firefox нужно зайти в Edit>>Preferences, выбрать вкладку Applications, найти строку magnet и настроить в поле action.
В opera: Tools>>Preferences, вкладка Advanced, подвкладка Programs, далее нажать Add и добавить нужное правило для нужного протокола, в данном случае magnet.
Да нет, я к тому, что этому скрипту может можно найти какое-то дополнительное экзотическое применение :).
Я вас понял, просто вы успели написать комментарий в то время, когда я писал свой =), а где ещё используется xdg-open даже и не знаю.
А может до кучи еще подскажите как научить хром ословые ссылки понимать?
Ну ведь принцип одинаковый, просто код будет чуть другой, тоесть
Условий можно писать сколько угодно, можно использовать case, и главное не забудьте, оставить обработчик простых ссылок, тоесть open_generic "$url"
if (echo $url | grep '^ed2k') then
amule "$url"
else
open_generic "$url"
fi
Условий можно писать сколько угодно, можно использовать case, и главное не забудьте, оставить обработчик простых ссылок, тоесть open_generic "$url"
Так ведь так же :).
Где-то так.
if (echo $url | grep '^magnet') then
deluge "$url"
else
if (echo $url | grep 'ed2k') then
<имя_клиента> "$url"
fi
Где-то так.
а да, в конце если не совпало передать в open_generic. Ну смысл я думаю вы поняли.
тут на самом деле не суть как, сама ссылка все равно кривая и ed2k ее просто не перехватывает (
Правда вот вся суть в том что хром как то извращает ed2k ссылки и их даже нельзя просто скопировать и вставить, поэтому и всякий перехват не работает. Давно уже ищу решение этой проблемы да так и не нашел (
Как вариант - перехватывать все ссылки и записывать его в журнал. Потом посмотреть что он там передает.
Перед
Ссылки можно будет посмотреть в /tmp/intercepted_urls.log.
Перед
case "$DE" in
вставьте например:
echo $url >> /tmp/intercepted_urls.log
Ссылки можно будет посмотреть в /tmp/intercepted_urls.log.
да нет вы меня не поняли, сам хром как то извращает ссылку, то есть если ее просто скопировать в буфер и вставить в осел, он говорит извиняйте инвалид линк, то есть передавать линк куда-то уже бессмысленно, с ним надо что-то сначала сделать и потом уже передавать. Вот такая котовасия
Это очень давно уже обсасывается на гугле.
Вот для примера, верхняя ссылка от фф нижняя от хрома:
ed2k://|file|%D0%A3%D1%81%D0%BF%D0%B5%D1%82%D1%8C%20%D0%B4%D0%BE%20%D0%BF%D0%BE%D0%BB%D1%83%D0%BD%D0%BE%D1%87%D0%B8.Midnight%20Run.1988.mkv|9121117929
ed2k://xn--%7Cfile%7C%20%20-3fno8d1c1brdcmj7b4azp0k9f.midnight%20run.1988.mkv%7C9121117929%7Ca35a33e91d14dcb48fa4808157eee050%7C/%7Csources,10.51.115.118:4662%7C/
Вот для примера, верхняя ссылка от фф нижняя от хрома:
ed2k://|file|%D0%A3%D1%81%D0%BF%D0%B5%D1%82%D1%8C%20%D0%B4%D0%BE%20%D0%BF%D0%BE%D0%BB%D1%83%D0%BD%D0%BE%D1%87%D0%B8.Midnight%20Run.1988.mkv|9121117929
ed2k://xn--%7Cfile%7C%20%20-3fno8d1c1brdcmj7b4azp0k9f.midnight%20run.1988.mkv%7C9121117929%7Ca35a33e91d14dcb48fa4808157eee050%7C/%7Csources,10.51.115.118:4662%7C/
Вот и я о том же, и грустно что довольно давно висит этот вопрос и решения до сих пор нет (
Кодирует в соответствие со стандартами, т.е. всё, кроме англицких букв и некоторых символов кодируется символом процента + код символа.
т.е. надо как-то каждый %XX заменить на chr(fromhex(XX))
Как сделать на баше - не знаю, можно написать примочку на питоне что-н типа:
но не уверен, что будет работать с русскими буквами.
т.е. надо как-то каждый %XX заменить на chr(fromhex(XX))
Как сделать на баше - не знаю, можно написать примочку на питоне что-н типа:
#!/usr/bin/python
import sys
if len(sys.argv) < 2:
sys.exit(1)
import urllib
print urllib.unquote(sys.argv<1>)
но не уверен, что будет работать с русскими буквами.
вот что выдает в kde:
Невозможно запустить процесс Невозможно создать вспомогательный процесс ввода/вывода.
Сообщение klauncher: Неизвестный протокол «magnet».
Невозможно запустить процесс Невозможно создать вспомогательный процесс ввода/вывода.
Сообщение klauncher: Неизвестный протокол «magnet».
Стандарт был создан в 2002 году, отчасти как обобщение, независимое от конкретных производителей программного обеспечения и проектов, URI-схем ed2k: и freenet:, использующихся сетями eDonkey2000 и Freenet соответственно. Создание стандарта сопровождалось попыткой следовать стандартам URI от IETF настолько, насколько это было возможным. Среди приложений, поддерживающих magnet-ссылки, Shareaza, aMule, DC++, Azureus, BearShare, gtk-gnutella, Kazaa, LimeWire, Morpheus, Transmission, TrustyFiles и ?Torrent.
(c) Wikipedia
ktorrent начнет поддерживать magnet-ссылку только с четвертой версии.
Пруфлинк: http://ktorrent.org/wiki/index.php/FAQ#Does_KTorrent_support_magnet_links.3F
Мои извинения, не увидел этого комментария:
http://welinux.ru/post/2235/#cmnt39196
http://welinux.ru/post/2235/#cmnt39196
Может у меня klauncher из за того что мой KDE 4.3.95 еще сыроват ругается
Странно очень, попробуйте именно вот так:
Удалив все остальные строки
if (echo $url | grep '^magnet') then
ktorrent "$url"
else
open_kde "$url"
fi
Удалив все остальные строки
Ага у меня тоже самое, у меня ktorrent на все магнет-ссылки ругается, даже если я добавляю их из интерфейса.
Вот при таком виде:
Та же ошибка
case "$DE" in
kde)
if (echo $url | grep '^magnet') then
ktorrent "$url"
else
open_kde "$url"
fi
;;
esac
Та же ошибка
Я же говорю, тут ошибка в самом ktorrent, вы попробуйте добавить magnet-ссылку через интерфейс программы, если не получится, то надо копать уже в направлении ktorrent.
Вроде как в ktorrent магнет ссылки будут потдерживаться лишь в версии 4.0 которая выйдет в феврале