More details of user or tag

This commit is contained in:
Pablo Ferreiro 2022-01-05 21:25:49 +01:00
parent 31e3aafbd7
commit 493f56a052
No known key found for this signature in database
GPG key ID: 41FBCE65B779FA24
6 changed files with 31 additions and 44 deletions

View file

@ -15,41 +15,6 @@ function isValidDomain(string $url): bool {
return count($host_split) === 3 && in_array($host_split[1] . '.' . $host_split[2], $valid_domains);
}
Route::add('/images', function () {
if (!isset($_GET['url'])) {
die('You need to send a url!');
}
$url = $_GET['url'];
if (!filter_var($url, FILTER_VALIDATE_URL) || !isValidDomain($url)) {
die('Not a valid URL');
}
$img = file_get_contents($url, false, stream_context_create(['http' => ['ignore_errors' => true]]));
if ($img) {
header('Content-Type: image/jpeg');
return $img;
} else {
return 'Error while getting image!';
}
});
Route::add('/audios', function () {
if (!isset($_GET['url'])) {
die('You need to send a url!');
}
$url = $_GET['url'];
if (!filter_var($url, FILTER_VALIDATE_URL) || !isValidDomain($url)) {
die('Not a valid URL');
}
$audio = file_get_contents($url, false, stream_context_create(['http' => ['ignore_errors' => true]]));
if ($audio) {
header('Content-Type: audio/mp3');
return $audio;
} else {
return 'Error while getting audio!';
}
});
Route::add('/stream', function () {
if (!isset($_GET['url'])) {
die('You need to send a url!');
@ -61,9 +26,9 @@ Route::add('/stream', function () {
}
if (isset($_GET['download'])) {
// Download
// Download (video only)
$downloader = new \Sovit\TikTok\Download();
$downloader->url($url,"tiktok-video",'mp4');
$downloader->url($url, "tiktok-video", 'mp4');
} else {
// Stream
$streamer = new \Sovit\TikTok\Stream();

View file

@ -29,6 +29,20 @@ function getLatte(): \Latte\Engine {
$path = "{$subdir}/{$name}";
return $path;
});
// https://stackoverflow.com/a/36365553
$latte->addFunction('number', function (int $x) {
if($x > 1000) {
$x_number_format = number_format($x);
$x_array = explode(',', $x_number_format);
$x_parts = array('K', 'M', 'B', 'T');
$x_count_parts = count($x_array) - 1;
$x_display = $x;
$x_display = $x_array[0] . ((int) $x_array[1][0] !== 0 ? '.' . $x_array[1][0] : '');
$x_display .= $x_parts[$x_count_parts - 1];
return $x_display;
}
return $x;
});
return $latte;
}

View file

@ -10,15 +10,15 @@
data-video_width="{$item->video->width}"
data-video_height="{$item->video->height}"
data-music_title="{$item->music->title}"
data-music_url="{path('audios?url=' . urlencode($item->music->playUrl))}">
<img loading="lazy" src="{path('images?url=' . urlencode($item->video->originCover))}"/>
data-music_url="{path('stream?url=' . urlencode($item->music->playUrl))}">
<img loading="lazy" src="{path('stream?url=' . urlencode($item->video->originCover))}"/>
</a>
</div>
{/foreach}
</div>
<div class="buttons">
<a n:ifset="$_GET['cursor']" class="button is-danger" href="?cursor=0">First</a>
<a class="button is-danger" href="javascript:history.back()">Back</a>
<a class="button is-danger" href="?cursor={$feed->minCursor}">Back</a>
{if $feed->hasMore}
<a n-if="$feed->hasMore" class="button is-success" href="?cursor={$feed->maxCursor}">Next</a>
{else}
@ -26,6 +26,8 @@
{/if}
</div>
</section>
<!-- MODAL -->
<div id="modal" class="modal">
<div id="modal-background" class="modal-background"></div>
<div class="modal-card">
@ -38,7 +40,7 @@
</section>
<footer class="modal-card-foot has-text-centered">
<div class="container">
<a id="download_button" target="_blank" class="button is-info" href="" download>Download</a>
<a id="download_button" target="_blank" class="button is-info" download>Download</a>
<p id="audio_title"></p>
<audio id="audio" controls preload="none"></audio>
<div class="buttons is-centered">

View file

@ -7,9 +7,10 @@
{include 'components/navbar.latte'}
<section class="hero is-primary">
<div class="hero-body">
<div class="container">
<div class="container has-text-centered">
<p class="title">{$feed->info->detail->challenge->title}</p>
<p class="subtitle">{$feed->info->detail->challenge->desc}</p>
<p>Videos: {number($feed->info->detail->stats->videoCount)} / Views: {number($feed->info->detail->stats->viewCount)}</p>
</div>
</div>
</section>

View file

@ -7,7 +7,7 @@
{include 'components/navbar.latte'}
<section class="hero is-primary">
<div class="hero-body">
<div class="container">
<div class="container has-text-centered">
<p class="title">Trending page</p>
</div>
</div>

View file

@ -7,9 +7,14 @@
{include 'components/navbar.latte'}
<section class="hero is-primary">
<div class="hero-body">
<div class="container">
<div class="container has-text-centered">
<figure class="figure is-96x96">
<img src="{path('stream?url=' . urlencode($feed->info->detail->user->avatarThumb))}" />
</figure>
<p class="title">{$feed->info->detail->user->uniqueId}'s profile</p>
<p class="subtitle">{$feed->info->detail->user->signature}</p>
<p>Following: {number($feed->info->detail->stats->followingCount)} / Followers: {number($feed->info->detail->stats->followerCount)}</p>
<p>Hearts: {number($feed->info->detail->stats->heartCount)} / Videos: {$feed->info->detail->stats->videoCount}</p>
</div>
</div>
</section>