youtube-download-service/app/Http/Controllers/YoutubeDownloadController.php
2024-06-18 15:57:28 +08:00

48 lines
1.7 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(env('PATH_TO_DOWNLOAD'))
->url($url)
->remuxVideo('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(); // Will return Phonebloks
$videotitle = str_replace('webm', 'mp4', $videotitle);
//$file_path = public_path('/'.'downloads/'.$videotitle);
//return response()->download($file_path);
// $video->getFile(); // \SplFileInfo instance of downloaded file
//$file_path = public_path('/downloads/'.$videotitle);
$response = new \stdClass();
$response->link = $videotitle;
return response(json_encode($response));
//return redirect()->route('download', [$videotitle]);
//return response()->download($file_path);
}
}
$response = new \stdClass();
$response->error = 'No video';
return response(json_encode($response));
}
}