48 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
<?php
 | 
						|
 | 
						|
namespace App\Http\Controllers;
 | 
						|
 | 
						|
use Illuminate\Http\Request;
 | 
						|
use YoutubeDl\Options;
 | 
						|
use YoutubeDl\YoutubeDl;
 | 
						|
 | 
						|
class YoutubeDownloadController extends Controller
 | 
						|
{
 | 
						|
    public function index(Request $request)
 | 
						|
    {
 | 
						|
        $url = $request->get('videourl');
 | 
						|
        $yt = new YoutubeDl();
 | 
						|
 | 
						|
        $collection = $yt->download(
 | 
						|
            Options::create()
 | 
						|
                ->downloadPath(env('PATH_TO_DOWNLOAD'))
 | 
						|
                ->url($url)
 | 
						|
                ->remuxVideo('mp4')
 | 
						|
        );
 | 
						|
        $videotitle = '';
 | 
						|
        foreach ($collection->getVideos() as $video) {
 | 
						|
            if ($video->getError() !== null) {
 | 
						|
                $error = "Error downloading video: {$video->getError()}.";
 | 
						|
                $response = new \stdClass();
 | 
						|
                $response->error = $error;
 | 
						|
                return response(json_encode($response));
 | 
						|
            } else {
 | 
						|
                $videotitle = $video->getFile()->getFilename(); // Will return Phonebloks
 | 
						|
                $videotitle = str_replace('webm', 'mp4', $videotitle);
 | 
						|
                //$file_path = public_path('/'.'downloads/'.$videotitle);
 | 
						|
        	    //return response()->download($file_path);
 | 
						|
                // $video->getFile(); // \SplFileInfo instance of downloaded file
 | 
						|
                //$file_path = public_path('/downloads/'.$videotitle);
 | 
						|
                $response = new \stdClass();
 | 
						|
                $response->link = $videotitle;
 | 
						|
                return response(json_encode($response));
 | 
						|
                //return redirect()->route('download', [$videotitle]);
 | 
						|
                //return response()->download($file_path);
 | 
						|
            }
 | 
						|
        }
 | 
						|
        $response = new \stdClass();
 | 
						|
        $response->error = 'No video';
 | 
						|
        return response(json_encode($response));
 | 
						|
    }
 | 
						|
}
 |