* @license GNU General Public License http://www.gnu.org/licenses/gpl.html * @link http://rudloff.pro * */ /** * PHP web interface for youtube-dl (http://rg3.github.com/youtube-dl/) * Main class * * PHP Version 5.3.10 * * @category Youtube-dl * @package Youtubedl * @author Pierre Rudloff * @license GNU General Public License http://www.gnu.org/licenses/gpl.html * @link http://rudloff.pro * */ Class VideoDownload { /** * Get version of youtube-dl * * @return string Version * */ static function getVersion() { exec( PYTHON.' '.YOUTUBE_DL.' --version', $version, $code ); return $version[0]; } /** * Get the user agent used youtube-dl * * @return string UA * */ static function getUA() { exec( PYTHON.' '.YOUTUBE_DL.' --dump-user-agent', $version, $code ); return $version[0]; } /** * List all extractors * * @return array Extractors * */ static function listExtractors() { exec( PYTHON.' '.YOUTUBE_DL.' --list-extractors', $extractors, $code ); return $extractors; } /** * Get filename of video * * @param string $url URL of page * @param string $format Format to use for the video * * @return string Filename * */ static function getFilename($url, $format=null) { $cmd=PYTHON.' youtube-dl'; if (isset($format)) { $cmd .= ' -f '.escapeshellarg($format); } $cmd .=' --get-filename '.escapeshellarg($url)." 2>&1"; exec( $cmd, $filename ); return end($filename); } /** * Get title of video * * @param string $url URL of page * * @return string Title * */ static function getTitle($url) { exec( PYTHON.' '.YOUTUBE_DL.' --get-title '. escapeshellarg($url), $title ); $title=$title[0]; return $title; } /** * Get all information about a video * * @param string $url URL of page * @param string $format Format to use for the video * * @return string JSON * */ static function getJSON($url, $format=null) { $cmd=PYTHON.' '.YOUTUBE_DL.' '.PARAMS; if (isset($format)) { $cmd .= ' -f '.escapeshellarg($format); } $cmd .=' --dump-json '.escapeshellarg($url)." 2>&1"; exec( $cmd, $json, $code ); if ($code>0) { return array('success'=>false, 'error'=>$json); } else { return json_decode($json[0]); } } /** * Get thumbnail of video * * @param string $url URL of page * * @return string URL of image * */ static function getThumbnail($url) { exec( PYTHON.' '.YOUTUBE_DL.' --get-thumbnail '. escapeshellarg($url), $thumb ); if (isset($thumb[0])) { return $thumb[0]; } } /** * Get a list available formats for this video * * @param string $url URL of page * * @return string Title * */ static function getAvailableFormats($url) { exec( PYTHON.' '.YOUTUBE_DL.' -F '. escapeshellarg($url), $formats ); $return=array(); foreach ($formats as $i=>$format) { if ($i > 4) { $return[]=(preg_split('/(\s\s+)|(\s+:?\s+)|(\s+\[)|\]/', $format)); } } if (empty($return)) { foreach ($formats as $i=>$format) { if ($i > 3) { $return[]=preg_split('/(\s\s+)|(\s+:?\s+)|(\s+\[)|\]/', $format); } } } return $return; } /** * Get URL of video from URL of page * * @param string $url URL of page * @param string $format Format to use for the video * * @return string URL of video * */ static function getURL($url, $format=null) { $cmd=PYTHON.' '.YOUTUBE_DL; if (isset($format)) { $cmd .= ' -f '.escapeshellarg($format); } $cmd .=' -g '.escapeshellarg($url)." 2>&1"; exec( $cmd, $url, $code ); if ($code>0) { return array('success'=>false, 'error'=>$url); } else { return array('success'=>true, 'url'=>end($url)); } } }