1. Приветствуем Вас на неофициальном форуме технической поддержки XenForo на русском языке. XenForo - коммерческий форумный движок от бывших создателей vBulletin, написанный на PHP.

1.1.x Нестандартный BB-код media

Тема в разделе "Основные вопросы по XenForo", создана пользователем Mr. Brightside, 09.03.2012.

Загрузка
  1. Mr. Brightside

    Mr. Brightside Read only

    Регистрация:
    17.02.11
    Сообщения:
    156
    Симпатии:
    58
    Привет. Данная тема возможно уже где-то поднималась. Есть довольно популярный сервис twitch.tv. Есть видео с него, ссылка вида: http://ru.twitch.tv/sc2by/b/310789643

    Не могу сделать ббкод для вставки такого видео, проблема в двух идентификаторах видео, каждое видео имеет не только id - 310789643, ссылки отличаются ещё и каналами, например - sc2by. Вот две ссылки на разные видео на twitch.tv:

    http://ru.twitch.tv/sc2by/b/310789643
    http://ru.twitch.tv/varloksc/b/310828013

    Для того, чтобы вставить плеер, надо использовать название канала и идентификатор видео в разных местах, а переменная ($id) - всего одна. Заметил, что некоторые всё же умудряются писать различные обработчики. Ткните носом пж или покажите пример такого обработчика.
     
  2. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    Скачайте тот же вконтактовский код и посмотрите, как он работает. На сайте он есть.
     
  3. Mr. Brightside

    Mr. Brightside Read only

    Регистрация:
    17.02.11
    Сообщения:
    156
    Симпатии:
    58
    Скачал, всеж не догоняю, я вырезал оттуда условности, которые касаются ютуба и вимео, получилось такое содержание обработчика и функции, отвечающей за вывод плеера.
    Код:
    <?php
     
    class InfisJSC_VKontakte_MatchCallback
    {
        public static function matchVKvideo($url, $matchedId, array $site)
        {
        if (strpos($matchedId,'club') === false)
        {
            $pageHtml = file_get_contents('http://vk.com/video' . $matchedId);
            if (preg_match('/\\\"hash2\\\":\\\"(?P<hash>[a-zA-Z0-9]+)\\\"/siU', $pageHtml, $match))
            {
            if (preg_match('/(?P<oid>[0-9\-]+)_(?P<id>[0-9]+)/si', $matchedId, $oidid))
            {
                // Original VK
                return $oidid['oid'] . '_' . $oidid['id'] . '_' . $match['hash'];
            }
            }
     
        }
        return '';
        }
     
        public static function embedVKvideo($mediaKey, array $site)
        {
        if (strlen($mediaKey) > 0)
        {
            $keys = explode('_',$mediaKey);
            if (count($keys) == 3)
            {
            // Original VK
            return '<iframe src="http://vk.com/video_ext.php?oid=' . $keys[0] . '&id=' . $keys[1] . '&hash=' . $keys[2] . '" width="607" height="360" frameborder="0"></iframe>';
            }
        }
        return '';
        }
    }
    ?>
    
    Там довольно сложно всё, зачем-то гетконтент делается. А нужна универсальная штука (будет полезно для многих сервисов), которая просто вводит вторую переменную, как в xenmedio

    Я сделал Twitch.TV для Xenmedio. Теоретически можно использовать ббкод оттуда, но твитч хорош и тем, что можно прямо там через веб-интерфейс делать вырезки из видео и хотелось бы вставлять их в сообщения (а много таких кусков в XenMedio хранить плохо).

    Ваш обработчик основывается на том, что надо что-то извлекать из страницы, тут надо извлекать из ссылки
     
  4. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    Ну так извлекайте из ссылки. Это делается через тот же регэксп в админке. Тогда в $matchedId будет нужная информация. Ну и останется разложить это в виде составляющих, как я это сделал, разделив подчеркиванием коды. А во второй функции нужно будет уже обработать бб-код, собрав из него нужный iframe или object, например.
    Тогда можно будет обойтись без подкачивания страницы. Ведь она (подкачка) нужна потому, что из ссылки нельзя было получить те коды, которые затем применяются во вставляемом коде.
     
  5. Mr. Brightside

    Mr. Brightside Read only

    Регистрация:
    17.02.11
    Сообщения:
    156
    Симпатии:
    58
    Извините, я очень туп в таких делах, но нужный пример поможет многим. Сможете привести конкретный пример функции (логика кода) разбора простейшего ссылочного регекспа (чтобы получился плагин) и оставить комментарии в коде где надо? Спасибо в любом случае.
     

Поделиться этой страницей