1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
<?php
require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/session.php"; global $isLoggedIn;
if (!$isLoggedIn) header("Location: /login") and die();
if (isset($_GET['id'])) {
header("Content-Type: application/json");
$data = json_decode(exec("yt-dlp -q -x --no-playlist --skip-download --dump-json \"https://www.youtube.com/watch?v=" . str_replace('"', '\'', $_GET['id']) . "\""), true);
$qualities = array_values(array_filter(array_map(function ($i) {
return [
"quality" => $i["height"],
"id" => $i['format_id']
];
}, $data["formats"]), function ($i) {
return !is_null($i["quality"]);
}));
$hd = array_values(array_filter($qualities, function ($i) {
return $i["quality"] >= 720;
}));
$selected = count($hd) > 0 ? $hd[0] : $qualities[count($qualities) - 1];
$stream = array_values(array_filter($data["formats"], function ($i) use ($selected) {
return $i["height"] === $selected["quality"] && $i["acodec"] !== null && $i["acodec"] !== "none";
}))[0];
echo(json_encode([
"title" => $data["fulltitle"],
"author" => $data["channel"],
"count" => [
"channel" => $data["channel_follower_count"],
"likes" => $data["like_count"],
"views" => $data["view_count"]
],
"duration" => $data["duration"],
"stream" => $selected,
"url" => $stream["url"],
"duration_pretty" => $stream["duration_string"],
"poster" => $data["thumbnail"],
], JSON_PRETTY_PRINT));
}
|