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