youtube-download-service/app/Http/Controllers/YoutubeDownloadController.php
2024-06-21 11:39:02 +08:00

43 lines
1.4 KiB
PHP

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use YoutubeDl\Metadata\DefaultMetadataReader;
use YoutubeDl\Options;
use YoutubeDl\YoutubeDl;
class YoutubeDownloadController extends Controller
{
public function index(Request $request)
{
ini_set('max_execution_time', env('MAX_EXECUTION_TIME'));
$url = $request->get('videourl');
$yt = new YoutubeDl();
$collection = $yt->download(
Options::create()
->downloadPath(env('PATH_TO_DOWNLOAD'))
->url($url)
->format('bestvideo[ext=mp4]+bestaudio[ext=m4a]/bestvideo+bestaudio')
->mergeOutputFormat('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();
$response = new \stdClass();
$response->link = $videotitle;
return response(json_encode($response));
}
}
$response = new \stdClass();
$response->error = 'No video';
return response(json_encode($response));
}
}