Перейти к контенту

Magnet-ссылки


jsts

Рекомендуемые сообщения

Весь интернет перерыл, но так и не нашел готового решения для парсинга/вставки magnet-ссылок (dchub, magnet, links) в сообщения.

 

http://www.ibresource.ru/db/756/ - решение для версии 2.1

 

По аналогии со ссылками edonkey сделать не получается, не силен в регулярных выражениях.

 

При размещении ссылки

 

magnet:?xt=urn:tree:tiger:2SHPAYWRVJ2CQ35HZDWKRZNZ5ARVD6NAEYISB2A&xl=1466462208&dn=30daysofnight.avi

 

на выходе нужно чтобы было

[ url="magnet:?xt=urn:tree:tiger:2SHPAYWRVJ2CQ35HZDWKRZNZ5ARVD6NAEYISB2A&xl=1466462208&dn=30daysofnight.avi"]Кино[/url ][/code]

 

 

Может, кто ваял для себя?

Ссылка на комментарий
Поделиться на других сайтах

Покажите как у вас сделано для ослика, напишу регулярку для магнета.
Ссылка на комментарий
Поделиться на других сайтах

sources/lib/post_parser.php

 

Находим:

if ( ! preg_match("#^(http|news|https|ftp|aim)://#", $url['html'] ) )

 

Меняем на:

if ( ! preg_match("#^(http|news|https|ftp|aim|ed2k)://#", $url['html'] ) )

 

Находим:

$txt = preg_replace( "#(^|\s)((http|https|news|ftp)://\w+[^\s\[\]]+)#ie"  , "\$this->regex_build_url(array('html' => '\\2', 'show' => '\\2', 'st' => '\\1'))", $txt );

 

Меняем на:

$txt = preg_replace( "#(^|\s)((http|https|news|ed2k|ftp)://[^\s\[\]]+)#ie"  , "\$this->regex_build_url(array('html' => '\\2', 'show' => '\\2', 'st' => '\\1'))", $txt );

 

 

 

html/UBBC/ubbc.js

 

Находим :

function isUrl(text) {
return ((text.indexOf('.') > 7) &&
		((text.substring(0,7) == 'http://') ||
		(text.substring(0,6) == 'ftp://')));
 }

 

Меняем на:

  function isUrl(text) {
return ((text.indexOf('.') > 7) &&
		((text.substring(0,7) == 'http://') ||
		(text.substring(0,7) == 'news://') ||
		(text.substring(0,8) == 'https://') ||
		(text.substring(0,6) == 'aim://') ||
		(text.substring(0,6) == 'ftp://')));
 }

 function isEDK(text) {
return ((text.indexOf('.') > 7) &&
		((text.substring(0,7) == 'ed2k://')));
 }

 

 

Находим:

html += makeLink("ubbHref();",'Ссылка [H]') + makeImage('/url.gif','23','22','Ссылка [H]') + '</a>';

 

Ниже добавляем:

html += makeLink("ubbDref();",'Ссылка [D]') + makeImage('/edk.gif','23','22','Ссылка [D]') + '</a>';

 

Находим:

html += makeButton("ubbHref();",'URL','Ссылка [H]','h') + makeImage('/pixel.gif',1,1,'');

 

Ниже добавляем:

html += makeButton("ubbDref();",'EDK','Ссылка [D]','h') + makeImage('/pixel.gif',1,1,'');

 

 

Ищем:

function ubbHref() {
var url = 'http://'; var desc = '';
var text = getText();
if (text) {
  if (isUrl(text)) { url = text; }
  else { desc = text; }
}
url = prompt('Введите ссылку:',url) || '';
desc = prompt('Описание ссылки:',desc) || url;
if (!isUrl(url)) { returnFocus(); return; }
var code = '[url=' + url + ']' + desc + '[/url]';
ubbCode(code);
 }

 

Ниже добавляем:

  function ubbDref() {
var url = 'ed2k://'; var desc = '';
var text = getText();
if (text) {
  if (isEDK(text)) { url = text; }
  else { desc = text; }
}
url = prompt('Введите ссылку:',url) || '';
desc = prompt('Описание ссылки:',desc) || url;
if (!isEDK(url)) { returnFocus(); return; }
var code = '[url=' + url + ']' + desc + '[/url]';
ubbCode(code);
 }

 

 

Ищем:

case 'h':ubbHref();break;

 

Ниже добавляем:

case 'h':ubbDref();break;

 

Копируем edk.gif в html\Ubbc\

 

 

Собственно, это готовое решение для осла с кнопкой добавления ссылки. Но в нем проще, бо все ссылки начинаются с ed2k://. С magnet-ссылками несколько сложнее, т.к. ссылки могут начинаться и с dchub:// и сразу с magnet:?xt=urn:tree:tiger:.

 

И если парсинг dchub:// я еще могу придумать как сделать, то с magnet:?xt=urn:tree:tiger: сложнее...

post-12874-1199267051.gif

Ссылка на комментарий
Поделиться на других сайтах

Ничуть не сложнее, общая часть у ссылок какая? Верно, magnet:.

Т.е. регулярку

if ( ! preg_match("#^(http|news|https|ftp|aim)://#", $url['html'] ) )

нужно "развернуть" и добавить туда magnet::

if ( ! preg_match("#^(http://|news://|https://|ftp://|aim://|magnet:)#", $url['html'] ) )

Точтно также нужно будет поступить с остальными регулярками, и не забыть учесть в функции regex_build_url, что в неё теперь передаётся не http, а http://, нужно будет сборку результата подкорректировать. С яваскриптом аналогично предыдущему моду.

Ссылка на комментарий
Поделиться на других сайтах

В общем-то работает :-) Но при отправке сообщения на форум, содержащее тэг , теперь вылазит ошибка

 

Warning: preg_match() [function.preg-match]: Unknown modifier '/' in /home/ххххх/forum/sources/lib/post_parser.php on line 1480

 

При этом строка 1480:

  case 'video': $src="<embed width=\"400\" height=\"300\" src=\"{$src}\" type=\"application/x-shockwave-video\">"; break;

 

Не понимаю...

 

При этом строка 1480:

  case 'video': $src="<embed width=\"400\" height=\"300\" src=\"{$src}\" type=\"application/x-shockwave-video\">"; break;

 

Закомментировал эту строчку, ошибка вылазит всё та же. Значит php указывает на неверную строку. Эх...

Ссылка на комментарий
Поделиться на других сайтах

Забодался. Ребят, возьмитесь по-нормальному сделать за вебмани? Скажем, 15 долларов по курсу ЦБ РФ. И для удобства чтобы новый тэг был - [magnet]. Короче, чтобы были все возможности http://www.ibresource.ru/db/756/, но еще рядом с сылкой чтобы автоматически показывался размер в скобках:

 

Файл (687.78 МБ)

 

magnet:?xt=urn:tree:tiger:OVF4U6PFHS5FNSN4WU5HMUYEGH4EHRA2PHSZ4PQ&xl=721186816&dn=Amelie.avi

 

magnet:?xt=urn:tree:tiger: = стандартный набор

 

OVF4U6PFHS5FNSN4WU5HMUYEGH4EHRA2PHSZ4PQ = хеш

 

xl=721186816 = размер файла в байтах

 

dn=Amelie.avi = имя файла

 

Результат мода можно будет выложить на этом сайте.

 

А?

Ссылка на комментарий
Поделиться на других сайтах

короче смысл в том, чтобы добавить новый ббкод, который будет распознавать строку

magnet:?xt=urn:tree:tiger:OVF4U6PFHS5FNSN4WU5HMUYEGH4EHRA2PHSZ4PQ&xl=721186816&dn=Amelie.avi

1. OVF4U6PFHS5FNSN4WU5HMUYEGH4EHRA2PHSZ4PQ всегда есть в строке?

2. &xl=721186816 всегда есть в строке, или может и не быть?

3. &dn=Amelie.avi аналогично второму

 

в принципе могу сделать

Ссылка на комментарий
Поделиться на других сайтах

> 1. OVF4U6PFHS5FNSN4WU5HMUYEGH4EHRA2PHSZ4PQ всегда есть в строке?

 

Это хэш (HASH; контрольная сумма). Он есть всегда, но каждый раз разный.

 

> 2. &xl=721186816 всегда есть в строке, или может и не быть?

 

Есть всегда.

 

> 3. &dn=Amelie.avi аналогично второму

 

Есть всегда, но, конечно, имя файла может быть любым.

 

 

Куда слать 370 WMR`ов? %)

Ссылка на комментарий
Поделиться на других сайтах

[magnet] не круто, должны обрабатываться и и если магнет просто в тексте лежит.
Ссылка на комментарий
Поделиться на других сайтах

Ссылка на комментарий
Поделиться на других сайтах

PHP часть. Реализации кнопки зависит от используемой вами формы.

 

Могу сделать кнопку для форм ответа в Игорьковской сборке.

 

 

Итог: http://www.ibresource.ru/db/997/

Ссылка на комментарий
Поделиться на других сайтах

PHP часть. Реализации кнопки зависит от используемой вами формы.

 

 

фри

 

Могу сделать кнопку для форм ответа в Игорьковской сборке.

 

Спасибо. Делайте :D Буду щастлив. И номер кошелька напишите, пожалуйста.

Ссылка на комментарий
Поделиться на других сайтах

Для 1.3 уже, кстати, как несколько лет все написано :D Мною ;) и должно быть на этом форуме

 

Олег, а зачем надо было делать еще один бб-код, не проще было поработать с URL, чтобы он кушал magnet? Из-за размера ради. Я себе на форуме сделал именно так.

Ссылка на комментарий
Поделиться на других сайтах

Я сделал и так и так :D 20 минут на такое можно потратить, раз топикстартер не нашёл в архиве.

 

Понимает варианты:

magnet:?xt=urn:tree:tiger:OVF4U6PFHS5FNSN4WU5HMUYEGH4EHRA2PHSZ4PQ&xl=721186816&dn=Amelie.avi

[url]magnet:?xt=urn:tree:tiger:OVF4U6PFHS5FNSN4WU5HMUYEGH4EHRA2PHSZ4PQ&xl=721186816&dn=Amelie.avi[/url]

[magnet]magnet:?xt=urn:tree:tiger:OVF4U6PFHS5FNSN4WU5HMUYEGH4EHRA2PHSZ4PQ&xl=721186816&dn=Amelie.avi[/magnet]

[url="magnet:?xt=urn:tree:tiger:OVF4U6PFHS5FNSN4WU5HMUYEGH4EHRA2PHSZ4PQ&xl=721186816&dn=Amelie.avi"]Амели[/url]

[magnet="magnet:?xt=urn:tree:tiger:OVF4U6PFHS5FNSN4WU5HMUYEGH4EHRA2PHSZ4PQ&xl=721186816&dn=Amelie.avi"]Амели[/magnet]

 

http://www.ibresource.ru/db/997/

Ссылка на комментарий
Поделиться на других сайтах

Для 1.3 уже, кстати, как несколько лет все написано :D Мною ;) и должно быть на этом форуме

 

Чесслово, всё перерыл - нету. Надеюсь, теперь точно будет.

 

В качестве демо можно посмотреть http://forum.tritiumnet.org/index.php?show...st&p=345349

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.