2022-01-03 10:11:24 -05:00
|
|
|
<?php
|
|
|
|
use Steampixel\Route;
|
|
|
|
|
2022-01-08 10:03:57 -05:00
|
|
|
const VALID_TIKTOK_DOMAINS = [
|
|
|
|
"tiktokcdn.com", "tiktokcdn-us.com", "tiktok.com"
|
|
|
|
];
|
|
|
|
|
2022-01-05 14:16:50 -05:00
|
|
|
/**
|
|
|
|
* Check if an url has a valid domain
|
|
|
|
* @param string $url URL you want to check
|
|
|
|
* @return bool
|
|
|
|
*/
|
|
|
|
function isValidDomain(string $url): bool {
|
|
|
|
$host = parse_url($url, PHP_URL_HOST);
|
|
|
|
$host_split = explode('.', $host);
|
2022-01-08 10:03:57 -05:00
|
|
|
return count($host_split) === 3 && in_array($host_split[1] . '.' . $host_split[2], VALID_TIKTOK_DOMAINS);
|
2022-01-05 14:16:50 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
Route::add('/stream', function () {
|
2022-01-03 10:11:24 -05:00
|
|
|
if (!isset($_GET['url'])) {
|
|
|
|
die('You need to send a url!');
|
|
|
|
}
|
|
|
|
|
|
|
|
$url = $_GET['url'];
|
2022-01-05 14:16:50 -05:00
|
|
|
if (!filter_var($url, FILTER_VALIDATE_URL) || !isValidDomain($url)) {
|
2022-01-03 10:11:24 -05:00
|
|
|
die('Not a valid URL');
|
|
|
|
}
|
|
|
|
|
|
|
|
if (isset($_GET['download'])) {
|
2022-01-05 15:25:49 -05:00
|
|
|
// Download (video only)
|
2022-01-03 17:28:36 -05:00
|
|
|
$downloader = new \Sovit\TikTok\Download();
|
2022-01-05 15:25:49 -05:00
|
|
|
$downloader->url($url, "tiktok-video", 'mp4');
|
2022-01-03 17:28:36 -05:00
|
|
|
} else {
|
|
|
|
// Stream
|
|
|
|
$streamer = new \Sovit\TikTok\Stream();
|
|
|
|
$streamer->stream($url);
|
2022-01-03 10:11:24 -05:00
|
|
|
}
|
|
|
|
});
|