Saturday, November 2, 2019

How to download youtube video using php API?

I have a lot of research on YouTube video download now we will show you how to download the video using Youtube using PHP API.
YouTube video downloader script below to use for download the YouTube video for offline uses. 
Check the below function of PHP API to use in downloadable 


  • setUrl() – Set the video file URL.
  • getVideoInfo() – Get the video information.
  • extractVideoId() – Get video Id from YouTube video URL.
  • getDownloader() – Get the downloader object if the pattern matches otherwise return false.
  • getVideoDownloadLink() – Get the video download URL with video info (tag, quality, title, mime, and format).
  • getStreamArray() – Get the youtube root data that contains the video information.
  • hasVideo() – Validate the YouTube video URL.
 * phptechnicalgroups
 * This is the Downloader class helps to download youtube video.
 * @class       YouTubeDownloader
 * @author      phptechnicalgroups
 * @link
 */class YouTubeDownloader {
     * Video Id for the given url
    private $video_id;
     * Video title for the given video
    private $video_title;
     * Full URL of the video
    private $video_url;
     * store the url pattern and corresponding downloader object
     * @var array
    private $link_pattern;
    public function __construct(){
        $this->link_pattern "/^(?:http(?:s)?:\/\/)?(?:www\.)?(?:m\.)?(?:youtu\.be\/|youtube\.com\/(?:(?:watch)?\?(?:.*&)?v(?:i)?=|(?:embed)\/))([^\?&\"'>]+)/";
     * Set the url
     * @param string
    public function setUrl($url){
        $this->video_url $url;
     * Get the video information
     * return string
    private function getVideoInfo(){
        return file_get_contents("".$this->extractVideoId($this->video_url)."&cpn=CouQulsSRICzWn5E&eurl&el=adunit");
     * Get video Id
     * @param string
     * return string
    private function extractVideoId($video_url){
        //parse the url
        $parsed_url parse_url($video_url);
        if($parsed_url["path"] == ""){
            $this->video_url "https://www.".$video_url;
        }elseif($parsed_url["path"] == ""){
            $this->video_url "https://".$video_url;
            $query_string $parsed_url["query"];
            //parse the string separated by '&' to array
                return $query_arr["v"];
     * Get the downloader object if pattern matches else return false
     * @param string
     * return object or bool
    public function getDownloader($url){
         * check the pattern match with the given video url
            return $this;
        return false;
     * Get the video download link
     * return array
    public function getVideoDownloadLink(){
        //parse the string separated by '&' to array
        parse_str($this->getVideoInfo(), $data);
        //set video title
        $this->video_title $data["title"];
        //Get the youtube root link that contains video information
        $stream_map_arr $this->getStreamArray();
        $final_stream_map_arr = array();
        //Create array containing the detail of video 
        foreach($stream_map_arr as $stream){
            $stream_data["title"] = $this->video_title;
            $stream_data["mime"] = $stream_data["type"];
            $mime_type explode(";"$stream_data["mime"]);
            $stream_data["mime"] = $mime_type[0];
            $start stripos($mime_type[0], "/");
            $format ltrim(substr($mime_type[0], $start), "/");
            $stream_data["format"] = $format;
            $final_stream_map_arr [] = $stream_data;         
        return $final_stream_map_arr;
     * Get the youtube root data that contains the video information
     * return array
    private function getStreamArray(){
        parse_str($this->getVideoInfo(), $data);
        $stream_link $data["url_encoded_fmt_stream_map"];
        return explode(","$stream_link); 
     * Validate the given video url
     * return bool
    public function hasVideo(){
        $valid true;
        parse_str($this->getVideoInfo(), $data);
        if($data["status"] == "fail"){
            $valid false;
        return $valid;

Download Youtube Video using PHP API

Use the helper functions of ytbDownloader class to get the download link of the YouTube video. The following process is followed to download the YouTube video file using PHP.
  • Load and initialize the downloader class.
  • Get the downloader object.
  • Set the YouTube URL.
  • Validate the YouTube video URL.
  • Get the video download link and video info.
  • Force download video file from YouTube.
<?php// Load and initialize downloader classinclude_once 'YouTubeDownloader.class.php';$handler = new YouTubeDownloader();
// Youtube video url$youtubeURL '';
// Check whether the url is validif(!empty($youtubeURL) && !filter_var($youtubeURLFILTER_VALIDATE_URL) === false){
    // Get the downloader object
    $downloader $handler->getDownloader($youtubeURL);
    // Set the url
    // Validate the youtube video url
        // Get the video download link info
        $videoDownloadLink $downloader->getVideoDownloadLink();
        $videoTitle $videoDownloadLink[0]['title'];
        $videoQuality $videoDownloadLink[0]['quality'];
        $videoFormat $videoDownloadLink[0]['format'];
        $videoFileName strtolower(str_replace(' ''_'$videoTitle)).'.'.$videoFormat;
        $downloadURL $videoDownloadLink[0]['url'];
        $fileName preg_replace('/[^A-Za-z0-9.\_\-]/'''basename($videoFileName));
            // Define headers
            header("Cache-Control: public");
            header("Content-Description: File Transfer");
            header("Content-Disposition: attachment; filename=$fileName");
            header("Content-Type: application/zip");
            header("Content-Transfer-Encoding: binary");
            // Read the file
        echo "The video is not available, please correct your YouTube URL.";
    echo "Please correct valid YouTube URL.";

Tuesday, October 9, 2018

How to download static docx file using php[Solved]

hey Guys, After lot of R&D I found the solution to download docx file using PHP.
Below is the example code.
function downloadDocx(){
$file = 'bikash_university.docx'
if (file_exists($file)) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.basename($file));
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
echo "<h1>Content error</h1><p>The file does not exist!</p>";