43 lines
1.4 KiB
PHP
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));
|
|
}
|
|
}
|