Доброго времени суток. В развитии темы... Автору спасибо за интересный материал, сам я, когда поставил nstreamplayer_****, тоже озадачился хотелкой смотреть все из одного места... До того пока не хакнул телек, юзал на роутере xupnpd, он спрвляется с этим на ура, но для тяжелых файлов нужен NFS... Посему недавно хакнул своего самца и написал свой первый в жизни php скрипт, который обеспечивает просмотр контента, включая вложенные папки, по NFS. Вот его текст
Код:
<?php
/*-
* Используете на свой страх и риск
*
* Скрипт предназначен для обеспечения доступа по NFS
* из виджетов NstreamPlayer (original, mod) *
* Размещаете данный скрипт на компьютере (роутере) с NFS
* и HTTP серверами в корневой папке Http сервера под именем
* nfs2xml.php. Ставите на телек SamyGO, настраиваете на нем
* доступ по NFS к вашему компьютеру (роутеру). Затем в teg
* playlist_url нужного плейлиста вписываете вот такой адрес
*
* http://адрескомпа:порт/
* nfs2xml.php?
* &mount=/dtv/usb/sdb/nfs/192.168.2.1/_tmp_mnt_disc1_1_full_hd/
* &source=/tmp/harddisk2/full_hd/
*
* где mount - точка монтирования каталога в телевизоре
* source - реальное расположение каталога на компьютере (роутере).
*
* При работе был частично использован скрипт TheDark GetSharedMedia
*
*
* skuwakin@gmail.com 27.03.2012
*
*/
$v_path=$_GET['mount'];
$path=$_GET['source'];
$s_path=$_GET['source'];
$files = GetDirFileArray2($path,true,false); // папки
echo ("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\r\n");
echo ("<items>\r\n");
if ($files!=="") {
foreach ($files as $f) {
echo ("<channel>\r\n");
echo ("<title>$f</title>\r\n");
echo ("<description>$f</description>\r\n");
echo ("<description><![CDATA[<table><tr><td style=\"vertical-align: top\"><img src=\"logos/image.png\" height=\"128\" width=\"128\"/></td>&f</td><h1></h1></td></tr></table>]]></description>\r\n");
echo ("<playlist_url>http://".$_SERVER['HTTP_HOST']."/testphp.php?mount=$v_path$f/&source=$s_path$f/</playlist_url>\r\n");
echo ("</channel>\r\n");
}
}
$files = GetDirFileArray2($path,false,true); // файлы
if ($files!=="") {
foreach ($files as $f) {
$f_path=str_replace ($s_path,$v_path,$path);
echo ("<channel>\r\n");
echo ("<title>$f</title>\r\n");
echo ("<logo_30x30>image.png</logo_30x30>\r\n");
echo ("<description><![CDATA[$f_path$f]]></description>\r\n");
echo ("<stream_url>$f_path$f</stream_url>\r\n");
echo ("</channel>\r\n");
}
}
echo ("</items>\r\n");
function GetPath($path) {
if ($path=="") return null;
$a = explode("/",$path); // защита
if ($a[0]!=NetServerName) return null;
foreach($a as $e) {
if ($e=="." || $e=="..") return null;
}
$a = array_splice($a,1);
$path = implode($a,"/");
return SharedMediaDir."/".$path;
}
function GetDirFileArray2($path,$isDirs,$isFiles,$ext="") {
$arr="";
clearstatcache();
if (!is_dir($path)) return "";
if (!($dh = opendir($path))) return "";
while (($FileName = readdir($dh)) !== false) {
$f = is_dir($path.$FileName);
if (!$isDirs && $f) continue;
if (!$isFiles && !$f) continue;
if ($FileName=="." || $FileName=="..") continue;
if ($ext!="") { if (!preg_match("/\.".$ext."$/i",$FileName)) continue; };
$arr[] = $FileName;
}
closedir($dh);
if (is_array($arr)) sort($arr);
return $arr;
}
?>