Allow download without watermark

This commit is contained in:
Pablo Ferreiro 2022-02-07 21:07:51 +01:00
parent dd5964cb97
commit 2c73bd0388
No known key found for this signature in database
GPG key ID: 41FBCE65B779FA24
5 changed files with 28 additions and 13 deletions

View file

@ -9,7 +9,14 @@ class ProxyController {
static private function isValidDomain(string $url) {
$host = parse_url($url, PHP_URL_HOST);
$host_split = explode('.', $host);
return count($host_split) === 3 && in_array($host_split[1] . '.' . $host_split[2], self::VALID_TIKTOK_DOMAINS);
$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;
}
static public function stream() {
@ -29,7 +36,8 @@ class ProxyController {
if (isset($_GET['id'], $_GET['user'])) {
$filename .= '-' . $_GET['user'] . '-' . $_GET['id'];
}
$downloader->url($url, $filename, 'mp4');
$watermark = isset($_GET['watermark']);
$downloader->url($url, $filename, $watermark);
} else {
// Stream
$streamer = new \Sovit\TikTok\Stream();

View file

@ -6,7 +6,8 @@
<div class="column is-one-quarter">
<a class="clickable-img" id="{$item->id}" href="#{$item->id}"
data-video_url="{path('/stream?url=' . urlencode($item->video->playAddr))}"
data-video_download="{path('/stream?url=' . urlencode($item->video->playAddr) . '&download=1&id=' . $item->id . '&user=' . $item->author->uniqueId)}"
data-video_download_watermark="{path('/stream?url=' . urlencode($item->video->playAddr) . '&download=1&id=' . $item->id . '&user=' . $item->author->uniqueId) . '&watermark='}"
data-video_download_nowatermark="{path('/stream?url=' . urlencode('https://tiktok.com/@' . $item->author->uniqueId . '/' . $item->id) . '&download=1&id=' . $item->id . '&user=' . $item->author->uniqueId)}"
data-desc="{$item->desc}"
data-music_title="{$item->music->title}"
data-music_url="{path('/stream?url=' . urlencode($item->music->playUrl))}">
@ -38,7 +39,11 @@
</section>
<footer class="modal-card-foot has-text-centered">
<div class="container">
<a id="download_button" target="_blank" class="button is-info" download>Download</a>
<div class="buttons is-centered">
<a target="_blank" id="download_watermark" class="button is-info" download>Download with watermark</a>
<a target="_blank" id="download_nowatermark" class="button is-info">Download without watermark</a>
</div>
<p>Please be patient with the No Watermark option. It takes a while to download</p>
<p id="audio_title"></p>
<audio id="audio" controls preload="none"></audio>
<div class="buttons is-centered">

View file

@ -1,7 +1,7 @@
{
"name": "pablouser1/proxitok",
"description": "An alternative frontend for TikTok",
"version": "1.4.1.2",
"version": "1.4.1.3",
"license": "AGPL-3.0-or-later",
"type": "project",
"homepage": "https://github.com/pablouser1/ProxiTok",

10
composer.lock generated
View file

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "275eed5df34976f1f82201b8aef4bddd",
"content-hash": "94d34d2f322b7dfcf36f55780c95cd59",
"packages": [
{
"name": "bramus/router",
@ -381,12 +381,12 @@
"source": {
"type": "git",
"url": "https://github.com/pablouser1/TikTok-API-PHP.git",
"reference": "c6667d70757fd5405ee1b51eaa6602d8758d2abd"
"reference": "6d2be1b886e455d6e124453dff07de3e89c0d45a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/pablouser1/TikTok-API-PHP/zipball/c6667d70757fd5405ee1b51eaa6602d8758d2abd",
"reference": "c6667d70757fd5405ee1b51eaa6602d8758d2abd",
"url": "https://api.github.com/repos/pablouser1/TikTok-API-PHP/zipball/6d2be1b886e455d6e124453dff07de3e89c0d45a",
"reference": "6d2be1b886e455d6e124453dff07de3e89c0d45a",
"shasum": ""
},
"type": "library",
@ -425,7 +425,7 @@
"issues": "https://github.com/ssovit/TikTok-API-PHP/issues",
"email": "sovit.tamrakar@gmail.com"
},
"time": "2022-02-06T13:17:16+00:00"
"time": "2022-02-07T20:07:07+00:00"
},
{
"name": "symfony/polyfill-ctype",

View file

@ -3,7 +3,8 @@ const item_title = document.getElementById('item_title')
const audio = document.getElementById('audio')
const audio_title = document.getElementById('audio_title')
const modal = document.getElementById('modal')
const download_button = document.getElementById('download_button')
const download_watermark = document.getElementById('download_watermark')
const download_nowatermark = document.getElementById('download_nowatermark')
// -- HELPERS -- //
const getHash = () => window.location.hash.substring(1)
@ -21,10 +22,11 @@ const isModalActive = () => modal.classList.contains('is-active')
const toggleButton = (id, force) => document.getElementById(id) ? document.getElementById(id).toggleAttribute('disabled', force) : alert('That button does not exist')
// -- MODAL -- //
const swapData = ({ video_url, desc, video_download, music_title, music_url }) => {
const swapData = ({ video_url, desc, video_download_watermark, video_download_nowatermark, music_title, music_url }) => {
video.src = video_url
item_title.innerText = desc
download_button.href = video_download
download_watermark.href = video_download_watermark
download_nowatermark.href = video_download_nowatermark
audio_title.innerText = music_title
audio.src = music_url
}