40 lines
1.2 KiB
PHP
40 lines
1.2 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('/path/to/downloads')
|
||
|
->url($url)
|
||
|
);
|
||
|
$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->getTitle(); // Will return Phonebloks
|
||
|
// $video->getFile(); // \SplFileInfo instance of downloaded file
|
||
|
$file_path = public_path('/downloads/'.$videotitle);
|
||
|
return response()->download($file_path);
|
||
|
}
|
||
|
}
|
||
|
$response = new \stdClass();
|
||
|
$response->error = 'No video';
|
||
|
return response(json_encode($response));
|
||
|
}
|
||
|
}
|