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

View file

@ -6,7 +6,8 @@
<div class="column is-one-quarter"> <div class="column is-one-quarter">
<a class="clickable-img" id="{$item->id}" href="#{$item->id}" <a class="clickable-img" id="{$item->id}" href="#{$item->id}"
data-video_url="{path('/stream?url=' . urlencode($item->video->playAddr))}" 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-desc="{$item->desc}"
data-music_title="{$item->music->title}" data-music_title="{$item->music->title}"
data-music_url="{path('/stream?url=' . urlencode($item->music->playUrl))}"> data-music_url="{path('/stream?url=' . urlencode($item->music->playUrl))}">
@ -38,7 +39,11 @@
</section> </section>
<footer class="modal-card-foot has-text-centered"> <footer class="modal-card-foot has-text-centered">
<div class="container"> <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> <p id="audio_title"></p>
<audio id="audio" controls preload="none"></audio> <audio id="audio" controls preload="none"></audio>
<div class="buttons is-centered"> <div class="buttons is-centered">

View file

@ -1,7 +1,7 @@
{ {
"name": "pablouser1/proxitok", "name": "pablouser1/proxitok",
"description": "An alternative frontend for TikTok", "description": "An alternative frontend for TikTok",
"version": "1.4.1.2", "version": "1.4.1.3",
"license": "AGPL-3.0-or-later", "license": "AGPL-3.0-or-later",
"type": "project", "type": "project",
"homepage": "https://github.com/pablouser1/ProxiTok", "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", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"content-hash": "275eed5df34976f1f82201b8aef4bddd", "content-hash": "94d34d2f322b7dfcf36f55780c95cd59",
"packages": [ "packages": [
{ {
"name": "bramus/router", "name": "bramus/router",
@ -381,12 +381,12 @@
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/pablouser1/TikTok-API-PHP.git", "url": "https://github.com/pablouser1/TikTok-API-PHP.git",
"reference": "c6667d70757fd5405ee1b51eaa6602d8758d2abd" "reference": "6d2be1b886e455d6e124453dff07de3e89c0d45a"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/pablouser1/TikTok-API-PHP/zipball/c6667d70757fd5405ee1b51eaa6602d8758d2abd", "url": "https://api.github.com/repos/pablouser1/TikTok-API-PHP/zipball/6d2be1b886e455d6e124453dff07de3e89c0d45a",
"reference": "c6667d70757fd5405ee1b51eaa6602d8758d2abd", "reference": "6d2be1b886e455d6e124453dff07de3e89c0d45a",
"shasum": "" "shasum": ""
}, },
"type": "library", "type": "library",
@ -425,7 +425,7 @@
"issues": "https://github.com/ssovit/TikTok-API-PHP/issues", "issues": "https://github.com/ssovit/TikTok-API-PHP/issues",
"email": "sovit.tamrakar@gmail.com" "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", "name": "symfony/polyfill-ctype",

View file

@ -3,7 +3,8 @@ const item_title = document.getElementById('item_title')
const audio = document.getElementById('audio') const audio = document.getElementById('audio')
const audio_title = document.getElementById('audio_title') const audio_title = document.getElementById('audio_title')
const modal = document.getElementById('modal') 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 -- // // -- HELPERS -- //
const getHash = () => window.location.hash.substring(1) 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') const toggleButton = (id, force) => document.getElementById(id) ? document.getElementById(id).toggleAttribute('disabled', force) : alert('That button does not exist')
// -- MODAL -- // // -- 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 video.src = video_url
item_title.innerText = desc 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_title.innerText = music_title
audio.src = music_url audio.src = music_url
} }