proxitok/app/Controllers/ProxyController.php

64 lines
1.9 KiB
PHP
Raw Normal View History

2022-01-30 23:02:52 +00:00
<?php
namespace App\Controllers;
class ProxyController {
const VALID_TIKTOK_DOMAINS = [
"tiktokcdn.com", "tiktokcdn-us.com", "tiktok.com"
];
static private function isValidDomain(string $url) {
$host = parse_url($url, PHP_URL_HOST);
$host_split = explode('.', $host);
2022-02-07 20:07:51 +00:00
$host_count = count($host_split);
if ($host_count === 2) {
// Using no watermark
return in_array($host_split[0] . '.' . $host_split[1], self::VALID_TIKTOK_DOMAINS);
} elseif ($host_count === 3) {
return in_array($host_split[1] . '.' . $host_split[2], self::VALID_TIKTOK_DOMAINS);
}
return false;
2022-01-30 23:02:52 +00:00
}
2022-02-07 22:45:07 +00:00
static private function checkUrl() {
2022-01-30 23:02:52 +00:00
if (!isset($_GET['url'])) {
2022-02-07 22:45:07 +00:00
die('You need to send a URL');
2022-01-30 23:02:52 +00:00
}
2022-02-07 22:45:07 +00:00
if (!filter_var($_GET['url'], FILTER_VALIDATE_URL) || !self::isValidDomain($_GET['url'])) {
2022-01-30 23:02:52 +00:00
die('Not a valid URL');
}
2022-02-07 22:45:07 +00:00
}
static private function getFileName(): string {
$filename = 'tiktok-video';
if (isset($_GET['user'])) {
$filename .= '-' . $_GET['user'] . '-' . $_GET['id'];
}
return $filename;
}
static public function stream() {
2022-03-11 17:56:19 +00:00
self::checkUrl();
$url = $_GET['url'];
$streamer = new \TikScraper\Stream();
$streamer->url($url);
}
static public function download() {
$downloader = new \TikScraper\Download();
$watermark = isset($_GET['watermark']);
if ($watermark) {
2022-02-07 22:45:07 +00:00
self::checkUrl();
2022-03-11 17:56:19 +00:00
$filename = self::getFileName();
$downloader->url($_GET['url'], $filename, true);
} else {
if (!isset($_GET['id'])) {
die('You need to send an ID!');
}
$filename = self::getFileName();
$downloader->url($_GET['id'], $filename, false);
2022-01-30 23:02:52 +00:00
}
}
}