Compare commits

..

5 Commits

Author SHA1 Message Date
5b4d3d435e Display the correct file extension on download button 2026-03-06 22:06:20 +01:00
564f816fb9 Add matrix nsfw rooms 2026-03-04 14:34:16 +01:00
3709e378c3 Fix Admin Download Buttons 2026-03-03 21:17:43 +01:00
4a45dae593 Update Readme 2026-03-01 16:07:09 +01:00
2b0448d517 Add Disclaimer and Guide for Matrix 2026-03-01 16:06:58 +01:00
10 changed files with 91 additions and 43 deletions

View File

@@ -2,13 +2,13 @@
## hstream Website
### Install
### Install (Ubuntu)
```bash
# Install PHP
sudo add-apt-repository ppa:ondrej/php
apt update && apt upgrade
apt install php8.3 php8.3-xml php8.3-mysql php8.3-gd php8.3-zip php8.3-curl php8.3-mbstring
apt install php8.4 php8.4-xml php8.4-mysql php8.4-gd php8.4-zip php8.4-curl php8.4-mbstring
# Install NodeJS
curl -sL https://deb.nodesource.com/setup_20.x -o /tmp/nodesource_setup.sh
@@ -22,7 +22,7 @@ mv composer.phar composer
# Install NGINX (skip for local dev)
apt install nginx
apt install php8.3-fpm
apt install php8.4-fpm
# Install MariaDB
apt install mariadb-server
@@ -54,7 +54,7 @@ nano /etc/supervisor/conf.d/laravel-queue.conf :
[program:laravel-queue]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/hstream/artisan queue:work --queue=default --sleep=3 --tries=3 --max-time=3600
command=php84 /var/www/hstream/artisan queue:work --queue=default --sleep=3 --tries=3 --max-time=3600
autostart=true
autorestart=true
stopasgroup=true
@@ -83,9 +83,9 @@ zip -r hstream_2023_11_30.zip hstream/
### Update
```bash
php artisan down
php84 artisan down
git pull
npm run build
php artisan view:clear && php artisan optimize:clear && php artisan cache:clear && service php8.4-fpm restart
php artisan up
php84 artisan view:clear && php84 artisan optimize:clear && php84 artisan cache:clear && service php8.4-fpm restart
php84 artisan up
```

View File

@@ -15,7 +15,9 @@ class MatrixController extends Controller
{
$rooms = [
['name' => '🏠 General', 'description' => 'Our main chat.', 'alias' => 'https://matrix.to/#/#general:hstream.moe'],
['name' => '📡 Releases', 'description' => 'Were we @everyone for new releases.', 'alias' => 'https://matrix.to/#/#releases:hstream.moe']
['name' => '📡 Releases', 'description' => 'Were we @everyone for new releases.', 'alias' => 'https://matrix.to/#/#releases:hstream.moe'],
['name' => '👗 NSFW 2D', 'description' => 'Channel for R18 2D Media.', 'alias' => 'https://matrix.to/#/#nsfw:hstream.moe'],
['name' => '👗 NSFW IRL', 'description' => 'Channel for R18 IRL Media.', 'alias' => 'https://matrix.to/#/#nsfw-irl:hstream.moe']
];
return view('matrix.index', [

View File

@@ -21,6 +21,15 @@ class DownloadButton extends Component
public $background = 'bg-rose-600';
public $fileExtension = 'HEVC';
public function mount()
{
if (str_contains($this->downloadUrl, 'AV1')) {
$this->fileExtension = 'AV1';
}
}
public function clicked($downloadId)
{
$download = Downloads::find($downloadId);

View File

@@ -12,7 +12,7 @@
@else
<p class="text-lg">Episode {{ $episodeNumber }}</p>
@endif
<p class="text-xs">HEVC MKV {{ $fileSize ?? '' }}</p>
<p class="text-xs">{{ $fileExtension }} MKV {{ $fileSize ?? '' }}</p>
<p class="text-xs" id="count-{{ $downloadId }}">Downloaded {{ $downloadCount }} times</p>
</div>
</button>

View File

@@ -235,6 +235,11 @@
'/' .
$expire;
}
$fileExtension = "HEVC";
if (str_contains($download->url, 'AV1')) {
$fileExtension = "AV1";
}
@endphp
<a href="{{ $downloadURL }}" wire:click="clicked({{ $download->id }})"
download>
@@ -249,7 +254,7 @@
</svg>
</div>
<div class="flex flex-col text-center w-full">
<p class="text-xs">HEVC MKV</p>
<p class="text-xs">{{ $fileExtension }} MKV</p>
</div>
</button>
</a>

View File

@@ -1,4 +1,10 @@
<a href="{{ $dldomains[array_rand($dldomains)] }}/{{ $hdl->getDownloadByType('FHD')->url }}">
@php
$fileExtension = "HEVC";
if (str_contains($hdl->getDownloadByType('FHD')->url, 'AV1')) {
$fileExtension = "AV1";
}
@endphp
<button class="group rounded-md shadow bg-rose-600 text-white cursor-pointer flex justify-between items-center overflow-hidden transition-all hover:glow m-1 w-[150px]">
<div class="relative w-12 h-12 bg-white bg-opacity-20 text-white flex justify-center items-center transition-all"><svg id="arrow" class="w-4 h-4 transition-all group-hover:-translate-y-1" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 14l-7 7m0 0l-7-7m7 7V3"></path>
@@ -7,7 +13,7 @@
</div>
<div class="w-32 text-center">
<p class="px-5 text-sm row-span-2">Episode {{ $hdl->episode }}</p>
<p class="px-5 text-xs">HEVC MKV</p>
<p class="px-5 text-xs">{{ $fileExtension }} MKV</p>
</div>
</button>
</a>

View File

@@ -47,7 +47,8 @@
<ul class="list-disc pl-6 text-gray-700 dark:text-neutral-300 space-y-2 mb-6">
<li>Available to users registered for more than 1 month</li>
<li>Fully federated with the entire Matrix network</li>
<li>No obligation to use it its optional</li>
<li>No obligation to use it - its optional</li>
<li>Anonymized IP addresses to protect your privacy</li>
</ul>
@auth
@@ -74,7 +75,7 @@
<li>Or using our web client via <strong><a href="https://element.hstream.moe/" target="_blank" class="underline">Element Web</a></strong></li>
</ul>
<p class="text-green-700 dark:text-green-400 mb-4">
Simply sign in with your new username and password to get started.
Simply sign in with your new username (<code>{{ $user->matrix_id }}</code>) and password to get started.
</p>
</div>
@else
@@ -82,10 +83,16 @@
<h3 class="font-semibold text-green-800 dark:text-green-300 mb-2">
🎉 You are eligible!
</h3>
<p class="text-green-700 dark:text-green-400 mb-4">
<p class="text-green-700 dark:text-green-400 mb-2">
Your account is older than one month. You can create your account now.
</p>
<div class="p-4 bg-red-100 dark:bg-red-950 border border-red-100 dark:border-red-700 rounded-lg mb-4">
<p class="text-red-500 text-sm font-bold">
Important: Save your password! We don't have a password reset function yet!
</p>
</div>
@include('matrix.register')
</div>
@endif
@@ -123,7 +130,7 @@
</div>
<!-- Room List -->
<div class="bg-white dark:bg-neutral-800 rounded-2xl shadow-sm p-8">
<div class="bg-white dark:bg-neutral-800 rounded-2xl shadow-sm p-8 mb-8">
<h2 class="text-2xl dark:text-white font-semibold mb-6">Our Matrix Rooms</h2>
<div class="grid md:grid-cols-2 gap-6">
@@ -144,6 +151,19 @@
@endforeach
</div>
</div>
<!-- Guide -->
<div class="bg-white dark:bg-neutral-800 rounded-2xl shadow-sm p-8">
<h2 class="text-2xl dark:text-white font-semibold mb-4">Matrix Guide</h2>
<p class="text-gray-700 dark:text-neutral-300 mb-4">
Matrix and Element can be overwhelming for new users, so here is a guide from Element:
</p>
<ul class="list-disc pl-6 text-gray-700 dark:text-neutral-300 space-y-2 mb-6">
<li>Element Guide: <a class="font-bold text-green-800 dark:text-green-300 underline" referrerPolicy="no-referrer" href="https://static.element.io/pdfs/element-user-guide.pdf" target="_blank">element-user-guide.pdf</a></li>
</ul>
</div>
</div>
</div>
</x-app-layout>

View File

@@ -25,7 +25,7 @@
<div class="flex items-center justify-end mt-4">
<x-primary-button class="ms-4">
{{ __('Create Matrix User') }}
{{ __('Create Matrix Account') }}
</x-primary-button>
</div>
</form>

View File

@@ -52,7 +52,19 @@
<br>
@php $download = $episode->getDownloadByType('UHD'); @endphp
@isset($download)
@if (!Auth::user()->hasRole(\App\Enums\UserRole::SUPPORTER))
@if (Auth::user()->hasRole(\App\Enums\UserRole::SUPPORTER) || Auth::user()->hasRole(\App\Enums\UserRole::ADMINISTRATOR))
<p class="font-bold text-gray-800 dark:text-gray-200">
<i class="fa-solid fa-lock-open pr-[4px] text-green-400"></i> 4k
</p>
@php $dlpdomains = config('hstream.download_domain_4k'); @endphp
<div class="flex flex-wrap justify-around">
@foreach ($dlList as $hdl)
@include('modals.partials.download-button-patreon')
@endforeach
</div>
@else
@if (config('hstream.free_downloads'))
<p class="font-bold text-gray-800 dark:text-gray-200">
<i class="fa-solid fa-lock-open pr-[4px] text-yellow-600"></i> 4k
@@ -67,18 +79,6 @@
on our Discord server, you have to logout and login again.
</p>
@endif
@else
<p class="font-bold text-gray-800 dark:text-gray-200">
<i class="fa-solid fa-lock-open pr-[4px] text-green-400"></i> 4k
</p>
@php $dlpdomains = config('hstream.download_domain_4k'); @endphp
<div class="flex flex-wrap justify-around">
@foreach ($dlList as $hdl)
@include('modals.partials.download-button-patreon')
@endforeach
</div>
@endif
@else
<p class="text-gray-800 dark:text-gray-200 font-bold">
@@ -91,7 +91,19 @@
<br>
@if ($episode->interpolated_uhd)
@if (!Auth::user()->hasRole(\App\Enums\UserRole::SUPPORTER))
@if (Auth::user()->hasRole(\App\Enums\UserRole::SUPPORTER) || Auth::user()->hasRole(\App\Enums\UserRole::ADMINISTRATOR) )
<p class="font-bold text-gray-800 dark:text-gray-200">
<i class="fa-solid fa-lock-open pr-[4px] text-green-400"></i> 4k 48fps
</p>
@php $dlpdomains = config('hstream.download_domain_4k'); @endphp
<div class="flex flex-wrap justify-around">
@foreach ($dlList as $hdl)
@include('modals.partials.download-button-patreon-interpolated')
@endforeach
</div>
@else
@if (config('hstream.free_downloads'))
<p class="font-bold text-gray-800 dark:text-gray-200">
<i class="fa-solid fa-lock-open pr-[4px] text-yellow-600"></i> 4k 48fps
@@ -106,18 +118,6 @@
on our Discord server, you have to logout and login again.
</p>
@endif
@else
<p class="font-bold text-gray-800 dark:text-gray-200">
<i class="fa-solid fa-lock-open pr-[4px] text-green-400"></i> 4k 48fps
</p>
@php $dlpdomains = config('hstream.download_domain_4k'); @endphp
<div class="flex flex-wrap justify-around">
@foreach ($dlList as $hdl)
@include('modals.partials.download-button-patreon-interpolated')
@endforeach
</div>
@endif
@endif

View File

@@ -28,9 +28,15 @@
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 14l-7 7m0 0l-7-7m7 7V3"></path>
</svg>
</div>
@php
$fileExtension = "HEVC";
if (str_contains($episode->getDownloadByType('FHD')->url, 'AV1')) {
$fileExtension = "AV1";
}
@endphp
<div class="flex flex-col text-center w-full">
<p class="text-xl">Episode {{ $episode->episode }}</p>
<p class="text-xs">HEVC MKV {{ $episode->getDownloadByType('FHD')->getFileSize() ?? '' }}</p>
<p class="text-xs">{{ $fileExtension }} MKV {{ $episode->getDownloadByType('FHD')->getFileSize() ?? '' }}</p>
<p class="text-xs" id="downloadCount">Downloaded {{ $episode->getDownloadByType('FHD')->count }} times</p>
</div>
</button>