Advertisement
Guest User

Untitled

a guest
Jun 4th, 2016
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 6.22 KB | None | 0 0
  1. <?php
  2. $smbhost = '192.168.11.1';
  3. $smbuser = '';
  4. $smbpass = '';
  5. $smbdir = 'Media/YouTube/Videos';
  6.  
  7. $m = @$_REQUEST['m']; // dir
  8. $z = @$_REQUEST['z']; // raw video
  9. $v = @$_REQUEST['v']; // video player
  10. $i = @$_REQUEST['i']; // raw info json
  11. $t = @$_REQUEST['t']; // raw jpeg thumb
  12.  
  13. $m = str_replace("..","",$m);
  14. $win = false;
  15.  
  16. $smb = smbclient_state_new();
  17. smbclient_state_init($smb,null,$smbuser,$smbpass);
  18.  
  19. if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
  20.     $win = true;
  21. }
  22.  
  23.  
  24. if (!@$z && !@$v && !@$i && !@$t) {
  25.     // Default output
  26.     echo "<!DOCTYPE html>\n";
  27.     echo "<head>\n";
  28.     echo "<meta charset=\"UTF-8\">\n";
  29.     echo "<link rel=\"stylesheet\" href=\"includes/zefie.css\" />\n";
  30.     echo "<title>Video Browser";
  31.     if (@$m) { echo " - ".str_replace('//','/',$m); }
  32.     echo "</title>\n";
  33.     echo "<script type='text/javascript' src='includes/jquery-2.1.4.min.js'></script>\n";
  34.     echo "<script type='text/javascript' src='includes/jquery-dateFormat.min.js'></script>\n";
  35.     echo "<script type='text/javascript' src='includes/zefie.js'></script>\n";
  36.     echo "</head>\n";
  37.     echo "<body>\n";
  38.     if ($m && $m != "/") {
  39.         $up = preg_split("/\//",$m);
  40.         $updir = "";
  41.         for ($q = 0; $q < (count($up)-1); $q++) {
  42.             $updir .= "/".$up[$q];
  43.         }
  44.         $updir = str_replace('//','/',$updir);
  45.         echo "<div class=\"dir\" data-href='?m=".rawurlencode($updir)."'>..</div>\n";
  46.     }
  47.     $basepath = str_replace('//','/',$smbdir.'/'.@$m);
  48.     $handle = smbclient_opendir($smb,'smb://'.$smbhost.'/'.$basepath);
  49.     if ($handle) {
  50.         while (false !== ($f = smbclient_readdir($smb,$handle))) {
  51.             $file = $f['name'];
  52.             if ($file == "." || $file == ".." || $file == "meta") { continue; }
  53.             $path = str_replace('//','/',$basepath.'/'.@$m.'/'.$file);
  54.  
  55.             if ($f['type'] == 'directory')
  56.                 $dirs[] = $file;
  57.             else
  58.                 $files[] = $file;
  59.         }
  60.         smbclient_closedir($smb,$handle);
  61.     }
  62.     if (@$dirs) {
  63.         sort($dirs);
  64.         foreach (@$dirs as $file) {
  65.             $path = $smbdir."/".@$m."/".$file;
  66.             echo "<div class=\"dir\" data-href='?m=".rawurlencode(@$m."/".$file)."'>".$file."</div>\n";
  67.         }
  68.      }
  69.     if (@$files) {
  70.         sort($files);
  71.         foreach (@$files as $file) {
  72.                 if ($file != "." && $file != ".." && (strtolower(substr($file, strrpos($file, '.') + 1)) == 'mp4' || strtolower(substr($file, strrpos($file, '.') + 1)) == 'm4a'))
  73.             {
  74.                 $f = str_replace(" [".getID($file)."].".getExt($file),"",$file);
  75.                 $f = substr($f,11,strlen($f));
  76.                 echo "<div class=\"file\">".$f."</div>\n<div class='info' data-id='".getID($file)."'> &nbsp; </div>\n";
  77.             }
  78.         }
  79.     }
  80.     echo "</body>\n";
  81.     echo "</html>\n";
  82. }
  83.  
  84.  
  85. if (@$v) {
  86.     // Generate video player
  87.     $vid = findFileByID($v);
  88.     $nfo = findFileByID($v,true);
  89.     $fp = smbclient_open($smb,'smb://'.$smbhost.'/'.$smbdir.'/'.$nfo,'r');
  90.     $fdat = smbclient_fstat($smb,$fp);
  91.     $jsnr = smbclient_read($smb,$fp,$fdat[7]);
  92.     smbclient_close($smb,$fp);
  93.     $json = json_decode($jsnr);
  94.     $contype = getConType($vid);
  95.     echo "<!DOCTYPE html>\n";
  96.     echo "<head>\n";
  97.     echo "<meta charset=\"UTF-8\">\n";
  98.     echo "<link rel=\"stylesheet\" href=\"includes/zefie.css\" />\n";
  99.     echo "<title>Video Player - ".$json->title."</title>\n";
  100.     echo "</head>\n";
  101.     echo "<body>\n";
  102.     echo "<center>\n";
  103.     if ($contype == "audio/m4a" || $contype == "audio/mp3") {
  104.         echo "<audio width='800' src='?z=".$v."' controls autoplay type='".$contype."'>\n";
  105.         echo "  Your browser does not support the audio tag.\n";
  106.         echo "</audio>\n";
  107.     } else {
  108.         echo "<video width='800' height='450' controls autoplay src='?z=".$v."' type='".$contype."'>\n";
  109.         echo "  Your browser does not support the video tag.\n";
  110.         echo "</video>\n";
  111.     }
  112.     echo "</center>\n";
  113.     echo "<div class='desc'><pre>".$json->description."</pre></div>";
  114.     echo "</body>\n";
  115.     echo "</html>\n";
  116. }
  117.  
  118.  
  119. if (@$z || @$i || @$t) {
  120.     // Send file
  121.     //@error_reporting(0);
  122.     $vid = "";
  123.     if (@$z) { $vid = findFileByID($z); }
  124.     if (@$i) { $vid = findFileByID($i,true); }
  125.     if (@$t) { $vid = findFileByID($t,false,true); }
  126.     $contype = getConType($vid);
  127.     if (strlen($vid) == null) {
  128.         header("404 No Such Video ID");
  129.         echo "<!DOCTYPE html>\n";
  130.         echo "<head>\n";
  131.         echo "<meta charset=\"UTF-8\">\n";
  132.         echo "No Such Video ID";
  133.         exit;
  134.     }
  135.     if ($vid) {
  136.         sendFile($vid,$contype);
  137.     }
  138. }
  139.  
  140.  
  141. function sendFile($vid,$contype) {
  142.     require_once("includes/servlet.php");
  143.     global $smb, $smbhost, $smbdir;
  144.     $smbdata = array($smb,$smbhost,$smbdir);
  145.     serveFilePartial($vid,$smbdata,$contype);
  146. }
  147.  
  148. function findFileByID($id,$meta = false,$thumb = false) {
  149.     // scan filesystem for "[youtubeid]"
  150.     global $basedir;
  151.     if ($meta) {
  152.         $vid = scanDirectories($basedir, array("json"),$id);
  153.     } elseif ($thumb) {
  154.         $vid = scanDirectories($basedir, array("jpg","gif","png"),$id);
  155.     } else {
  156.         $vid = scanDirectories($basedir, array("m4a","mp4","mp3"),$id);
  157.     }
  158.     return @$vid[0];
  159. }
  160.  
  161. function getExt($s) {
  162.     $s = strrev($s);
  163.     $o = strtolower(substr($s,0,strpos($s,'.')));
  164.     return strrev($o);
  165. }
  166.  
  167. function getID($s) {
  168.     // Get YTID from filename
  169.     $s = strrev($s);
  170.     $st = strpos($s,"]") + 1;
  171.     $len = (strpos($s,"[") - $st);
  172.     return strrev(substr($s,$st,$len ));
  173. }
  174.  
  175. function getConType($s) {
  176.     $ext = getExt($s);
  177.     switch ($ext) {
  178.         case 'jpg':
  179.             return "image/jpeg";
  180.             ;;
  181.         case 'png':
  182.             return "image/png";
  183.             ;;
  184.         case 'gif':
  185.             return "image/gif";
  186.             ;;
  187.         case 'm4a':
  188.             return "audio/m4a";
  189.             ;;
  190.         case 'mp4':
  191.             return "video/mp4";
  192.             ;;
  193.         case 'mp3':
  194.             return "audio/mp3";
  195.             ;;
  196.         case 'json':
  197.             return "application/json";
  198.             ;;
  199.     }
  200. }
  201.  
  202. function scanDirectories($rootDir, $allowext, $ytid, $res = array()) {
  203.     global $smb, $smbhost, $smbdir;
  204.     $handle = smbclient_opendir($smb, 'smb://'.$smbhost.'/'.$smbdir.'/'.$rootDir);
  205.     while (false !== ($f = smbclient_readdir($smb,$handle))) {
  206.         $file = $f['name'];
  207.         $path = $rootDir.'/'.$file;
  208.         $ext = substr($file, strrpos($file, '.') + 1);
  209.         if(in_array($ext, $allowext)) {
  210.             $readable = ($f['type'] == 'file');
  211.             if($readable && preg_match("/\\[".$ytid."\\]/",$file))
  212.                 $res[] = $path;
  213.         }
  214.         $isdir = ($f['type'] == 'directory');
  215.         if($isdir && $file != "." && $file != "..") {
  216.             // recursive callback to open new directory
  217.             $res = scanDirectories($path, $allowext, $ytid, $res);
  218.         }
  219.     }
  220.     smbclient_closedir($smb,$handle);
  221.     return $res;
  222. }
  223.  
  224.  
  225. smbclient_state_free($smb);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement