youtube-download-service/app/Http/Controllers/YoutubeDownloadController.php

43 lines
1.4 KiB
PHP
Raw Permalink Normal View History

2024-06-17 10:13:49 +03:00
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
2024-06-21 06:39:02 +03:00
use YoutubeDl\Metadata\DefaultMetadataReader;
2024-06-17 10:13:49 +03:00
use YoutubeDl\Options;
use YoutubeDl\YoutubeDl;
class YoutubeDownloadController extends Controller
{
public function index(Request $request)
{
2024-06-21 06:39:02 +03:00
ini_set('max_execution_time', env('MAX_EXECUTION_TIME'));
2024-06-17 10:13:49 +03:00
$url = $request->get('videourl');
$yt = new YoutubeDl();
$collection = $yt->download(
Options::create()
2024-06-17 12:44:56 +03:00
->downloadPath(env('PATH_TO_DOWNLOAD'))
2024-06-17 10:13:49 +03:00
->url($url)
2024-06-19 07:17:32 +03:00
->format('bestvideo[ext=mp4]+bestaudio[ext=m4a]/bestvideo+bestaudio')
->mergeOutputFormat('mp4')
2024-06-17 10:13:49 +03:00
);
$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 {
2024-06-21 06:39:02 +03:00
$videotitle = $video->getFile()->getFilename();
2024-06-18 09:55:50 +03:00
$response = new \stdClass();
$response->link = $videotitle;
return response(json_encode($response));
2024-06-17 10:13:49 +03:00
}
}
$response = new \stdClass();
$response->error = 'No video';
return response(json_encode($response));
}
}