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

[2.3.x](SnS) Magnet-ссылки


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

Название: (SnS) Magnet-ссылки

Добавил: Sannis

Добавлен: 05 Янв 2008

Обновлен: 29 Янв 2010

Категория: IP.Board 2.3.x

 

Добавляет в парсер форума поддержку Magnet ссылок. При вводе ссылки как простым текстом, так и с использованием тегов url или magnet отображается имя файла и его размер. Пример смотрите на скриншоте.

 

Плюс добавляет кнопку для магнет ссылок в форму быстрого и полного ответа для сборки от IgorekM.

 

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

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]

 

В конечном варианте преобразует всё к тегу [magnet]

 

P.S. Инструкция для 1.3 поддерживает теги url и magnet, для 2.3 в архиве 2 инструкции. Использовать нужно только одну из них!!!

 

Доступна демонстрация работы мода: 1.3, 2.3.

 

P.P.S. Для желающих отблагодарить автора — реквизиты в профиле.

 

Нажмите здесь, чтобы скачать файл

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

  • Ответы 76
  • Создана
  • Последний ответ

Лучшие авторы в этой теме

Лучшие авторы в этой теме

Загружено фотографий

Со временем, со временем, если актуально будет. Моды — это почти как ганджа, сразу много не бывает :D
Ссылка на комментарий
Поделиться на других сайтах

прошуп рощения за флуд (целью данного флуда являеться поднятие темы, чтобы больше народу отписалось о редактировании сий замечательной интерпретации магнет-линкс мода под ипб 2,3,1 и мозговитый программер понял, сколько народу сможет осчастливить)

 

но пойдём другим путём:

как можно вручную адаптировать под 2,3,1 , как понимаю надо будет заменить ипкласс... а ещё?=)

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

нет

достаточно сделать изменения в class_bbcode

с кнопкой похуже. но если уж работает схема , то в принципе зачем еще одна кнопка

 

Sannis

мой вариант был такой

			$txt = preg_replace_callback( "/^magnet:\?xt=urn:tree:tiger:(.+?)&xl=(.+?)&dn=(.+?)$/im", array( &$this, 'regex_magnet_tag' ), $txt );
		$txt = preg_replace( "#\[magnet\](\S+?)\[/magnet\]#ie", "\$this->regex_magnet_tag('\\1')", $txt );
		$txt = preg_replace( "#\[magnet\s*=\s*\&quot\;\s*(\S+?)\s*\&quot\;\s*\](.*?)\[\/magnet\]#ie" , "\$this->regex_magnet_tag('\\1','\\2')", $txt );
		$txt = preg_replace( "#\[magnet\s*=\s*(\S+?)\s*\](.*?)\[\/magnet\]#ie"					   , "\$this->regex_magnet_tag('\\1','\\2')", $txt );

	function regex_magnet_tag($txt,$name="")
{
	global $ibforums,$std;

	if(is_array($txt))
	{
		$size = $std->size_format($txt[2]);
		return "<a href='magnet:?xt=urn:tree:tiger:".$txt[1]."&xl=".$txt[2]."&dn=".$txt[3]."' target='_blank'>".$txt[3]." (".$size.")</a>";
	}
	else
	{
		preg_match("/^magnet:\?xt=urn:tree:tiger:(.+?)&xl=(.+?)&dn=(.+?)$/i",$txt,$m);
		if(count($m)<2)
		{
			return $txt;
		}
		else
		{
			if($name!="") $m[3]=$name;
			if($m[3]=="") $m[3]="Magnet-file";
			if($m[2]=="")
			{
				$m[2]="? ".$ibforums->lang['sf_k'];
			}
			else
			{
				$m[2]=$std->size_format($m[2]);
			}
			return "<a href='".$m[0]."' target='_blank'>".$m[3]." (".$m[2].")</a>";
		}
	}
}

			$txt = preg_replace( "#<a href=[\"']magnet:(\S+?)['\"].+?".">(.+?) \((.+?)\)</a>#" , "\[magnet=magnet:\\1\]\\2[/magnet\]"  , $txt );

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

Версия для 2.3.х включена в архив и следовательно доступна для тестирования. Во избежание недоразумений лучше проверить работу мода на домашнем сервере для начала :D
Ссылка на комментарий
Поделиться на других сайтах

Обновил. Как-то пытался смоделировать условия для необходимости этого ретёрна, не смог :D Это ж надо так постараться))) Тем более там в регэкспе идёт проверка на угловые скобки...
Ссылка на комментарий
Поделиться на других сайтах

В версии для 2.3 за ненадобностью убрана поддержка кода
 [magnet]

, теперь ссылки работают только через тег

 [url].

 

хм. а если не убирать "старые моды" , который делал как:

[magnet=Магнет_сыль]Название[/magnet]

 

оно останеться работать? будет пониматься?

 

Просто с помощью этого мода будет гораздно удобнеее новичкам, но и не хотелось бы переучивать старичков=)

 

п.с. Спасибо Саннису и Архару - гут работу проделали:D

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

Перекачайте и поверьте. Как добавлять кнопки в 2.3 написано тут, только название тега измените. Добавлю инструкцию потом.
Ссылка на комментарий
Поделиться на других сайтах

# В конечном варианте преобразует всё к тегу

[magnet]

 

тег магнет будет:

 

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

 

 

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

 

(если не ошибаюсь подправить надо здесь:

 

		return $magnet['st'].'<a href="magnet:?xt=urn:tree:tiger:'.$magnet['hash'].'&xl='.$magnet['size'].'&dn='.$magnet['name'].'" target="_blank">'.$magnet['extraname']."</a>".$magnet['extrasize'].$magnet['end'];

или я сново туплю? :_(

 

 

(убрал , спасибо Архару за пояснение)

 

 

Спасибо огромное ещё раз!

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

он там есть

# - ./sources/classes/bbcode/class_bbcode(_legacy).php

==

# - ./sources/classes/bbcode/class_bbcode.php

# - ./sources/classes/bbcode/class_bbcode_legacy.php

 

такое обозначение я тоже часто использовал, и постоянно кто-то его не понимал

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

обясню почему такое внимание ковычкам:

 

когда они есть, он открывает новое окно - и тогда спрашивает.

без ковычек - в текущем окне=)

 

попробовал методом тыка поубирать ковычки в коде - так и не получилось....

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

Это в описании для упрощения, а дальше отдельно для 2х файлов написано, должны понять, не совсем же глупцы собрались :D

 

DerSpinner, кавычки роли не играют, он понимает и без них и с апострофами. Различия в инструкциях в том, что в одной используется только код url, а в другой можно постить и url и magnet, но при редактировании будет преобразовываться к magnet. А по функциональности они идентичны.

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

я понимаю... использую:

(SnS) Magnet links for 2.3 with [magnet] tag

 

просто суть вопроса в том, что он делает так:

 

[magnet="магнет"]название файла[/magnet]

 

и випрос в том как можно сделать чтобы:

 

[magnet=магнет]название файла[/magnet]

было=)

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

Сейчас проверю. Серьёзно по-разному? Нэ вэрю. Если нужно без лишнего окна, то нужно из приведённого выше фрагмента убрать

target="_blank"

 

Проверил, у меня и без кавычек работает...

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

т.е. из:

 

		// Return link html
	return $magnet['st'].'<a href="magnet:?xt=urn:tree:tiger:'.$magnet['hash'].'&xl='.$magnet['size'].'&dn='.$magnet['name'].'" target="_blank">'.$magnet['extraname']."</a>".$magnet['extrasize'].$magnet['end'];

этого?

 

 

не ругаейтесь только сильно =)

 

суть не в том, что без ковычек не работает (ибо работает)

 

а втом, чтобы бы магнеты преобразовывались в:

 

[magnet=магнет]название файла[/magnet]

 

т.е. сам ТТХ (магнет) не заключен в ковычки. вот.

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

Да. Так что, у вас без кавычек нормуль всё?
Ссылка на комментарий
Поделиться на других сайтах

  • 2 недели спустя...

Здравствуйте! столкнулся с такой проблемой! что если файл назвал русскими символами то он не может правильно работать на форуме!

Тоесть если имя файла на EN открывает вот так

magnet:?xt=urn:tree:tiger:YHMB7PD7PVTM2XPYFO5TPWWNU7PNNKXS6RDT62A&xl=708366336&dn=Wiedzmin_CD1.avi

А если на RU то вот так

http://magnet:?xt=urn:tree:tiger:PGTERNBUJ...0%B0%D0%BD).mp3

Пытался найти решение проблемы но я так нечего и не смог придумать!!!

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

Да, можно в регулярках мода заменить

(\w+[^\s\[\]\<]+)

на

([^\s\[\]\<]+)

 

[sergy], пишите подробнее. При публикации ссылки с русским названием у неё пишется размер? Во всех браузерах так открывается?

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

[sergy], пишите подробнее. При публикации ссылки с русским названием у неё пишется размер? Во всех браузерах так открывается?

Sannis, проблема в том что когда в магнет ссылке есть хотябы 1 русская буква он не читает её как magnet ссылку а как http ссылку!

 

тоесть вот что получается когда в магнете есть хотябы 1 русский символ!

 

[url="http://magnet:?xt=urn:tree:tiger%3a%50GTERNBUJ73FNDMUYXRDGLWEMFKK3XBK52RMM6Q&xl=7913472&dn=%D0%9A%D0%B0%D1%82%D1%8F+(%D0%9C%D0%B0%D0%BC%D0%B0%D0%BD).mp3"]Катя (Маман).mp3[/url]

httр://magnet:?xt=urn:tree:tiger:PGTERNBUJ73FNDMUYXRDGLWEMFKK3XBK52RMM6Q&xl=7913472&dn=%D0%9A%D0%B0%D1%82%D1%8F+(%D0%9C%D0%B0%D0%BC%D0%B0%D0%BD).mp3"]Катя (Маман).mp3

после русского любова 1 символа он перестаёт понимать что это магнет ссылка!

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

Сделайте как я выше написал.

 

И ещё одно уточнение: в именах магнетов могут быть пробелы? Я ими не пользуюсь, так что не знаю, если могут быть, тогда поправлю чтобы и с ними работала автозамена.

 

P.S. Что означают восклицательные знаки в вашем сообщении? :D

 

Добавлено:

 

Фикс для 1.3:

В ./sources/lib/post_parser.php найти добавленные строки и заменить на следующие:

			//--------------------------------------
		// (SnS) Magnet links for 1.3
		//--------------------------------------

		$txt = preg_replace( "#\[url\]magnet:\?xt=urn:tree:tiger:(.*?)&xl=(.*?)&dn=([^\[]+)\[/url\]#ie"  , "\$this->regex_build_magnet(array('st' => '', 'hash' => '\\1', 'size' => '\\2', 'name' => '\\3'))", $txt );
		$txt = preg_replace( "#\[magnet\]magnet:\?xt=urn:tree:tiger:(.*?)&xl=(.*?)&dn=([^\[]+)\[/magnet\]#ie"  , "\$this->regex_build_magnet(array('st' => '', 'hash' => '\\1', 'size' => '\\2', 'name' => '\\3'))", $txt );

		$txt = preg_replace( "#\[magnet\s*=\s*(?:\&quot\;|\")\s*magnet:\?xt=urn:tree:tiger:(.*?)&xl=(.*?)&dn=([^\[]+)\s*(?:\&quot\;|\")\s*\](.*?)\[/magnet\]#ie"  , "\$this->regex_build_magnet(array('st' => '', 'hash' => '\\1', 'size' => '\\2', 'name' => '\\3', 'extraname' => '\\4'))", $txt );
		$txt = preg_replace( "#\[url\s*=\s*(?:\&quot\;|\")\s*magnet:\?xt=urn:tree:tiger:(.*?)&xl=(.*?)&dn=([^\[]+)\s*(?:\&quot\;|\")\s*\](.*?)\[/url\]#ie"  , "\$this->regex_build_magnet(array('st' => '', 'hash' => '\\1', 'size' => '\\2', 'name' => '\\3', 'extraname' => '\\4'))", $txt );

		$txt = preg_replace( "#\[magnet\s*=\s*magnet:\?xt=urn:tree:tiger:(.*?)&xl=(.*?)&dn=([^\[]+)\s*\](.*?)\[/magnet\]#ie"  , "\$this->regex_build_magnet(array('st' => '', 'hash' => '\\1', 'size' => '\\2', 'name' => '\\3', 'extraname' => '\\4'))", $txt );
		$txt = preg_replace( "#\[url\s*=\s*magnet:\?xt=urn:tree:tiger:(.*?)&xl=(.*?)&dn=([^\[]+)\s*\](.*?)\[/url\]#ie"  , "\$this->regex_build_magnet(array('st' => '', 'hash' => '\\1', 'size' => '\\2', 'name' => '\\3', 'extraname' => '\\4'))", $txt );

		$txt = preg_replace( "#(^|\s)magnet:\?xt=urn:tree:tiger:(.*?)&xl=(.*?)&dn=([^\s\[]+)#ie"  , "\$this->regex_build_magnet(array('st' => '\\1', 'hash' => '\\2', 'size' => '\\3', 'name' => '\\4'))", $txt );

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

Что означают восклицательные знаки в вашем сообщении?

Что означают множественные знаки вопроса в вашем сообщении?

 

Фикс для 2.3 будет после того как вы ответите на все заданные вопросы. Освобожусь я для разборок с 2.х завтра.

 

P.S. Да, если в имени файла есть пробелы, то постить такой магнет можно будет только с использованием тега...

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


×
×
  • Создать...

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

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