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));
 | |
|     }
 | |
| }
 |