Uppod и плейлист. Правка кода парсинга

JonBlack

Новичок
Приветствую. Нужна помощь в правке кода парсинга плейлиста.

Есть плеер Uppod:
PHP:
  $url = array ();
  $url = implode( ", ", $url );
  $id_player = md5( microtime() );
  return "<!--dle_video_begin:{$decode_playlist}-->
  <object id=\"videoplayer-{$id_player}\" type=\"application/x-shockwave-flash\" 
data=\"" . $config['http_home_url'] . "engine/classes/flashplayer/uppod.swf\" width=\"460\" height=".$height.">
  <param name=\"allowFullScreen\" value=\"true\" />
  <param name=\"allowScriptAccess\" value=\"always\" />
  <param name=\"wmode\" value=\"transparent\" />
  <param name=\"movie\" value=\"" . $config['http_home_url'] . "engine/classes/flashplayer/uppod.swf\" />
  <param name=\"flashvars\" value=\"comment="."&amp;st=" . $config['http_home_url'] . "engine/classes/flashplayer/skin.txt&amp;pl=".$playlisting."\" />
  </object><!--dle_video_end-->";

Есть парсер плейлиста:
PHP:
$decode_playlist=$url;
$playlist = explode("||", $url);
foreach ($playlist as $value){
  $playl=explode("|", $value);
  $playlisting[]="{'file':'".$playl[0]."','comment':'".$playl[1]."'}";
}
$playlisting = implode(",", $playlisting);
$playlisting = "{'playlist':[".$playlisting."]}";

Плейлист выглядит так: [video=ссылка|название 1||ссылка|название 2]
т.е.
[video=[url]http://файл.flv|название[/url] 1||http://http://файл.flv|название 2]
когда много видео-файлов в одном плейлисте (например сериал)

или так:
[video=ссылка]
т.е.
[video=[url]http://файл.flv][/url]
если файл всего один


Суть в том что выводится плейлист если файл всего 1, т.е. [video=[url]http://файл.flv][/url]

Надо сделать проверку в коде:
PHP:
$decode_playlist=$url;
$playlist = explode("||", $url);
foreach ($playlist as $value){
  $playl=explode("|", $value);
  $playlisting[]="{'file':'".$playl[0]."','comment':'".$playl[1]."'}";
}
$playlisting = implode(",", $playlisting);
$playlisting = "{'playlist':[".$playlisting."]}";
На:
если [video=[url]http://файл.flv][/url] то в плеере находится один файл и плейлист не выводится.
если [video=[url]http://файл.flv|название[/url] 1||http://http://файл.flv|название 2] то выводистя плейлист.

Помогите решить задачку.

На рисунке сверху правильный плейлист с несколькими видео-файлами, а снизу то что нужно исправить - плейлист с одним видео-файлом.
 

Вложения

WMix

герр M:)ller
Партнер клуба
PHP:
~\[video=([^|]*)\|([^|]*)\|\|([^|]*)\|([^\]]*)\]~u
учусь писать регексы....
 

JonBlack

Новичок
~\[video=([^|]*)\|([^|]*)\|\|([^|]*)\|([^\]]*)\]~u
...и что это такое и с чем его едят?)

Подозреваю, что ещё и в коде самого плеера нужно будет чтот допиливать:
PHP:
 $url = array ();
  $url = implode( ", ", $url );
  $id_player = md5( microtime() );
  return "<!--dle_video_begin:{$decode_playlist}-->
  <object id=\"videoplayer-{$id_player}\" type=\"application/x-shockwave-flash\" 
data=\"" . $config['http_home_url'] . "engine/classes/flashplayer/uppod.swf\" width=\"460\" height=".$height.">
  <param name=\"allowFullScreen\" value=\"true\" />
  <param name=\"allowScriptAccess\" value=\"always\" />
  <param name=\"wmode\" value=\"transparent\" />
  <param name=\"movie\" value=\"" . $config['http_home_url'] . "engine/classes/flashplayer/uppod.swf\" />
  <param name=\"flashvars\" value=\"comment="."&amp;st=" . $config['http_home_url'] . "engine/classes/flashplayer/skin.txt&amp;pl=".$playlisting."\" />
  </object><!--dle_video_end-->";
В строке
PHP:
 return "<!--dle_video_begin:{$decode_playlist}-->
и
PHP:
<param name=\"flashvars\" value=\"comment="."&amp;st=" . $config['http_home_url'] . "engine/classes/flashplayer/skin.txt&amp;pl=".$playlisting."\" />
 

WMix

герр M:)ller
Партнер клуба
слегка подправил на пойск ошибок и исключения типа [video=ссылка]
Код:
~\[video=([^(|\]\[)]*)(\|([^(|\]\[)]*)\|\|([^(|\]\[)]*)\|([^(|\]\[)]*))?\]~u
 

JonBlack

Новичок
Плейлист плеера. Вверху несколько видео-файлов, как и должно быть. Внизу рисунка то, что хочу подправить - у одного файла плейлиста не должно быть.
 

Вложения

AmdY

Пью пиво
Команда форума
Упс. Был не прав, показало что Uppod это какой-то сервис, открываю обратно.
 

WMix

герр M:)ller
Партнер клуба
Для меня это просто набор символов.
я тебе ссылку дал, мог бы прочесть. сам тестил так!
PHP:
$subject = "[video=ссылка11|название11||ссылка12|название12][video=ссылка][video=ссылка21|название 21||ссылка22|название 22][video=ссылка31|название 31||ссылка32|название 32]";
$pattern = '~\[video=([^(|\]\[)]*)(\|([^(|\]\[)]*)\|\|([^(|\]\[)]*)\|([^(|\]\[)]*))?\]~u';
preg_match_all($pattern, $subject, $matches);
print_r($matches);
Мне же нужен готовый результат.
цена вопроса?
 

WMix

герр M:)ller
Партнер клуба
при условии что оплата советскими, железными, юбилейными рублями и деньгами вперед, возьмусь!
 

JonBlack

Новичок
при условии что оплата советскими, железными, юбилейными рублями и деньгами вперед, возьмусь!
Оплату вперёд не делаю, даже в 100р. С моей стороны гарантии: персональный аттестат и БЛ 20

А вообще вы тут бред написали. Я вообще имел ввиду совсем другое.
Элементарно в этот код нужно установить условие
PHP:
 $decode_playlist=$url;
$playlist = explode("||", $url);
foreach ($playlist as $value){
  $playl=explode("|", $value);
  $playlisting[]="{'file':'".$playl[0]."','comment':'".$playl[1]."'}";
}
$playlisting = implode(",", $playlisting);
$playlisting = "{'playlist':[".$playlisting."]}";что типа если файл 1 то плееру передаётся {$decode_url} - ну как с одним файлом плеер так пашет.
если файлов несколько - больше 1го, то плееру передаётся {$decode_playlist} и .$playlisting.
 

WMix

герр M:)ller
Партнер клуба
Нужна помощь в правке кода парсинга плейлиста.
...
Плейлист выглядит так: [video=ссылка|название 1||ссылка|название 2]
т.е.
[video=[url]http://файл.flv|название[/url] 1||http://http://файл.flv|название 2]
когда много видео-файлов в одном плейлисте (например сериал)

или так:
[video=ссылка]
т.е.
[video=[url]http://файл.flv][/url]
если файл всего один
результат вышенаписанного скрипта
Код:
Array
(
    [0] => Array
        (
            [0] => [video=ссылка11|название11||ссылка12|название12]
            [1] => [video=ссылка]
            [2] => [video=ссылка21|название 21||ссылка22|название 22]
            [3] => [video=ссылка31|название 31||ссылка32|название 32]
        )

    [1] => Array
        (
            [0] => ссылка11
            [1] => ссылка
            [2] => ссылка21
            [3] => ссылка31
        )

    [2] => Array
        (
            [0] => |название11||ссылка12|название12
            [1] => 
            [2] => |название 21||ссылка22|название 22
            [3] => |название 31||ссылка32|название 32
        )

    [3] => Array
        (
            [0] => название11
            [1] => 
            [2] => название 21
            [3] => название 31
        )

    [4] => Array
        (
            [0] => ссылка12
            [1] => 
            [2] => ссылка22
            [3] => ссылка32
        )

    [5] => Array
        (
            [0] => название12
            [1] => 
            [2] => название 22
            [3] => название 32
        )

)
в 1,3,4,5 все ответы.... осталось по местам расставить
в строчке 0 где найденно, в строчке 2 "если это длинный код"
а свой говнокод правте сами!
 

JonBlack

Новичок
ну и что это? вот он парсинг и вывод плейлиста!
PHP:
$decode_playlist=$url;
$playlist = explode("||", $url);
foreach ($playlist as $value){
  $playl=explode("|", $value);
  $playlisting[]="{'file':'".$playl[0]."','comment':'".$playl[1]."'}";
}
$playlisting = implode(",", $playlisting);
Зачем мне парсер другой. Мне нужно в коде
PHP:
$decode_playlist=$url;
$playlist = explode("||", $url);
foreach ($playlist as $value){
  $playl=explode("|", $value);
  $playlisting[]="{'file':'".$playl[0]."','comment':'".$playl[1]."'}";
}
$playlisting = implode(",", $playlisting);
Сделать условие! Условие следующее:
если файл 1 то в плеер передаётся:
{$decode_url}

если файла больше 1го то в плеер передаётся:
{$decode_playlist} и .$playlisting.

Код самого плеера:
$url = array ();
$url = implode( ", ", $url );
$id_player = md5( microtime() );
return "<!--dle_video_begin:{$decode_playlist}-->
<object id=\"videoplayer-{$id_player}\" type=\"application/x-shockwave-flash\"
data=\"" . $config['http_home_url'] . "engine/classes/flashplayer/uppod.swf\" width=".$width." height=".$height.">
<param name=\"allowFullScreen\" value=\"true\" />
<param name=\"allowScriptAccess\" value=\"always\" />
<param name=\"wmode\" value=\"transparent\" />
<param name=\"movie\" value=\"" . $config['http_home_url'] . "engine/classes/flashplayer/uppod.swf\" />
<param name=\"flashvars\" value=\"comment="."&amp;st=" . $config['http_home_url'] . "engine/classes/flashplayer/skin.txt&amp;pl=".$playlisting."\" />
</object><!--dle_video_end-->";


Что подчёркнуто жирным то и отвечает за вывод Видео с плейлистом.
Т.е. если 1 файл:
$url = array ();
$url = implode( ", ", $url );
$id_player = md5( microtime() );
return "<!--dle_video_begin:{$decode_url}-->
<object id=\"videoplayer-{$id_player}\" type=\"application/x-shockwave-flash\"
data=\"" . $config['http_home_url'] . "engine/classes/flashplayer/uppod.swf\" width=".$width." height=".$height.">
<param name=\"allowFullScreen\" value=\"true\" />
<param name=\"allowScriptAccess\" value=\"always\" />
<param name=\"wmode\" value=\"transparent\" />
<param name=\"movie\" value=\"" . $config['http_home_url'] . "engine/classes/flashplayer/uppod.swf\" />
<param name=\"flashvars\" value=\"comment="."&amp;st=" . $config['http_home_url'] . "engine/classes/flashplayer/skin.txt&amp;file={$decode_url}\" />
</object><!--dle_video_end-->";

Если больше одного (плейлист):
$url = array ();
$url = implode( ", ", $url );
$id_player = md5( microtime() );
return "<!--dle_video_begin:{$decode_playlist}-->
<object id=\"videoplayer-{$id_player}\" type=\"application/x-shockwave-flash\"
data=\"" . $config['http_home_url'] . "engine/classes/flashplayer/uppod.swf\" width=".$width." height=".$height.">
<param name=\"allowFullScreen\" value=\"true\" />
<param name=\"allowScriptAccess\" value=\"always\" />
<param name=\"wmode\" value=\"transparent\" />
<param name=\"movie\" value=\"" . $config['http_home_url'] . "engine/classes/flashplayer/uppod.swf\" />
<param name=\"flashvars\" value=\"comment="."&amp;st=" . $config['http_home_url'] . "engine/classes/flashplayer/skin.txt&amp;pl=".$playlisting."\" />
</object><!--dle_video_end-->";

Элементарно же! Добавить условие в код
PHP:
$decode_playlist=$url;
$playlist = explode("||", $url);
foreach ($playlist as $value){
  $playl=explode("|", $value);
  $playlisting[]="{'file':'".$playl[0]."','comment':'".$playl[1]."'}";
}
$playlisting = implode(",", $playlisting);
который загоняет URL в плейлист.
 

JonBlack

Новичок
$decode_playlist=$url;
$playlist = explode("||", $url);
foreach ($playlist as $value){
$playl=explode("|", $value);
$playlisting[]="{'file':'".$playl[0]."','comment':'".$playl[1]."'}";
}
$playlisting = implode(",", $playlisting);
$playlisting = "{'playlist':[".$playlisting."]}";


$playlisting = [video=ФИГА.flv] = {$decode_url}
$playlisting = [video=ФИГА.flv|название] = {$decode_playlist} и .$playlisting.
}esle{
$playlisting = [video=ФИГА.flv] = ВЫВОД В ПЛЕЕР
$playlisting = [video=ФИГА.flv|название] = ВЫВОД В ПЛЕЕР (больше 1го файла)


Плеер:
$url = array ();
$url = implode( ", ", $url );
$id_player = md5( microtime() );
return "<!--dle_video_begin:ВЫВОД В ПЛЕЕР-->
<object id=\"videoplayer-{$id_player}\" type=\"application/x-shockwave-flash\"
data=\"" . $config['http_home_url'] . "engine/classes/flashplayer/uppod.swf\" width=".$width." height=".$height.">
<param name=\"allowFullScreen\" value=\"true\" />
<param name=\"allowScriptAccess\" value=\"always\" />
<param name=\"wmode\" value=\"transparent\" />
<param name=\"movie\" value=\"" . $config['http_home_url'] . "engine/classes/flashplayer/uppod.swf\" />
<param name=\"flashvars\" value=\"comment="."&amp;st=" . $config['http_home_url'] . "engine/classes/flashplayer/skin.txt&amp;file=ВЫВОД В ПЛЕЕР\" />
</object><!--dle_video_end-->";
 

JonBlack

Новичок
Добью изыскания... код:
PHP:
$decode_playlist=$url;
$playlist = explode("||", $url);
foreach ($playlist as $value){
  $playl=explode("|", $value);
  $playlisting[]="{'file':'".$playl[0]."','comment':'".$playl[1]."'}";
}
$playlisting = implode(",", $playlisting);
$playlisting = "{'playlist':[".$playlisting."]}";
отключается и подставляется
{$decode_url}
вместо {$decode_playlist} и .$playlisting.

если нету знаков | и ||
 
Сверху