youtube-download-service/app/Http/Controllers/YoutubeDownloadController.php
2024-06-17 15:13:49 +08:00

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