jsts Опубликовано 1 Января 2008 Жалоба Поделиться Опубликовано 1 Января 2008 Весь интернет перерыл, но так и не нашел готового решения для парсинга/вставки 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] Может, кто ваял для себя? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Sannis Опубликовано 1 Января 2008 Жалоба Поделиться Опубликовано 1 Января 2008 Покажите как у вас сделано для ослика, напишу регулярку для магнета. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
jsts Опубликовано 2 Января 2008 Автор Жалоба Поделиться Опубликовано 2 Января 2008 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: сложнее... Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Sannis Опубликовано 2 Января 2008 Жалоба Поделиться Опубликовано 2 Января 2008 Ничуть не сложнее, общая часть у ссылок какая? Верно, 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://, нужно будет сборку результата подкорректировать. С яваскриптом аналогично предыдущему моду. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
jsts Опубликовано 2 Января 2008 Автор Жалоба Поделиться Опубликовано 2 Января 2008 Спасибо, сейчас попробую. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
jsts Опубликовано 2 Января 2008 Автор Жалоба Поделиться Опубликовано 2 Января 2008 В общем-то работает :-) Но при отправке сообщения на форум, содержащее тэг , теперь вылазит ошибка 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 указывает на неверную строку. Эх... Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
jsts Опубликовано 4 Января 2008 Автор Жалоба Поделиться Опубликовано 4 Января 2008 Забодался. Ребят, возьмитесь по-нормальному сделать за вебмани? Скажем, 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 = имя файла Результат мода можно будет выложить на этом сайте. А? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Arhar Опубликовано 4 Января 2008 Жалоба Поделиться Опубликовано 4 Января 2008 короче смысл в том, чтобы добавить новый ббкод, который будет распознавать строкуmagnet:?xt=urn:tree:tiger:OVF4U6PFHS5FNSN4WU5HMUYEGH4EHRA2PHSZ4PQ&xl=721186816&dn=Amelie.avi1. OVF4U6PFHS5FNSN4WU5HMUYEGH4EHRA2PHSZ4PQ всегда есть в строке?2. &xl=721186816 всегда есть в строке, или может и не быть?3. &dn=Amelie.avi аналогично второму в принципе могу сделать Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
jsts Опубликовано 4 Января 2008 Автор Жалоба Поделиться Опубликовано 4 Января 2008 > 1. OVF4U6PFHS5FNSN4WU5HMUYEGH4EHRA2PHSZ4PQ всегда есть в строке? Это хэш (HASH; контрольная сумма). Он есть всегда, но каждый раз разный. > 2. &xl=721186816 всегда есть в строке, или может и не быть? Есть всегда. > 3. &dn=Amelie.avi аналогично второму Есть всегда, но, конечно, имя файла может быть любым. Куда слать 370 WMR`ов? %) Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Sannis Опубликовано 4 Января 2008 Жалоба Поделиться Опубликовано 4 Января 2008 [magnet] не круто, должны обрабатываться и и если магнет просто в тексте лежит. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
jsts Опубликовано 4 Января 2008 Автор Жалоба Поделиться Опубликовано 4 Января 2008 [magnet] не круто, должны обрабатываться и и если магнет просто в тексте лежит. Безусловно, "текстовый" magnet должен парситься как любой другой URL. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Sannis Опубликовано 4 Января 2008 Жалоба Поделиться Опубликовано 4 Января 2008 PHP часть. Реализации кнопки зависит от используемой вами формы. Могу сделать кнопку для форм ответа в Игорьковской сборке. Итог: http://www.ibresource.ru/db/997/ Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
jsts Опубликовано 4 Января 2008 Автор Жалоба Поделиться Опубликовано 4 Января 2008 PHP часть. Реализации кнопки зависит от используемой вами формы. фри Могу сделать кнопку для форм ответа в Игорьковской сборке. Спасибо. Делайте Буду щастлив. И номер кошелька напишите, пожалуйста. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
jsts Опубликовано 4 Января 2008 Автор Жалоба Поделиться Опубликовано 4 Января 2008 Огромное спасибо за готовое решение Sannis`у Вы мне очень помогли. Уверен, мод многим пригодится. Спасибо! Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Jax Опубликовано 4 Января 2008 Жалоба Поделиться Опубликовано 4 Января 2008 Для 1.3 уже, кстати, как несколько лет все написано Мною и должно быть на этом форуме Олег, а зачем надо было делать еще один бб-код, не проще было поработать с URL, чтобы он кушал magnet? Из-за размера ради. Я себе на форуме сделал именно так. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Sannis Опубликовано 4 Января 2008 Жалоба Поделиться Опубликовано 4 Января 2008 Я сделал и так и так 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/ Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
jsts Опубликовано 4 Января 2008 Автор Жалоба Поделиться Опубликовано 4 Января 2008 Для 1.3 уже, кстати, как несколько лет все написано Мною и должно быть на этом форуме Чесслово, всё перерыл - нету. Надеюсь, теперь точно будет. В качестве демо можно посмотреть http://forum.tritiumnet.org/index.php?show...st&p=345349 Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.