From 3f32c8a27af9464778f0d11186dea486da0a090d Mon Sep 17 00:00:00 2001 From: w33b Date: Sat, 20 Sep 2025 15:34:37 +0200 Subject: [PATCH] Add basic patreon filebrowser --- app/Http/Controllers/DownloadsController.php | 21 +++ app/Livewire/DownloadsPatreon.php | 73 +++++++++ .../livewire/downloads-patreon.blade.php | 141 ++++++++++++++++++ .../views/search/download-patreon.blade.php | 4 + routes/web.php | 4 + 5 files changed, 243 insertions(+) create mode 100644 app/Http/Controllers/DownloadsController.php create mode 100644 app/Livewire/DownloadsPatreon.php create mode 100644 resources/views/livewire/downloads-patreon.blade.php create mode 100644 resources/views/search/download-patreon.blade.php diff --git a/app/Http/Controllers/DownloadsController.php b/app/Http/Controllers/DownloadsController.php new file mode 100644 index 0000000..1cc068a --- /dev/null +++ b/app/Http/Controllers/DownloadsController.php @@ -0,0 +1,21 @@ +user(); + if (!$user->is_patreon) { + abort(404); + } + + return view('search.download-patreon'); + } +} diff --git a/app/Livewire/DownloadsPatreon.php b/app/Livewire/DownloadsPatreon.php new file mode 100644 index 0000000..cce068e --- /dev/null +++ b/app/Livewire/DownloadsPatreon.php @@ -0,0 +1,73 @@ + ['except' => '', 'as' => 'fS'], + 'order' => ['except' => '', 'as' => 'order'], + ]; + + public function updatingFileSearch() + { + $this->resetPage(); + } + + public function render() + { + $orderby = 'created_at'; + $orderdirection = 'desc'; + + switch ($this->order) { + case 'az': + $orderby = 'url'; + $orderdirection = 'asc'; + break; + case 'za': + $orderby = 'url'; + $orderdirection = 'desc'; + break; + case 'created_at_desc': + $orderby = 'created_at'; + $orderdirection = 'desc'; + break; + case 'created_at_asc': + $orderby = 'created_at'; + $orderdirection = 'asc'; + break; + case 'size_asc': + $orderby = 'size'; + $orderdirection = 'asc'; + break; + case 'size_desc': + $orderby = 'size'; + $orderdirection = 'desc'; + break; + default: + $orderby = 'created_at'; + $orderdirection = 'desc'; + } + + $downloads = Downloads::when($this->fileSearch != '', fn ($query) => $query->where('url', 'like', '%'.$this->fileSearch.'%')) + ->where('size', '>', 0) + ->where(fn ($q) => $q->where('type', '=', 'UHD')->orWhere('type', '=', 'UHDi')) + ->orderBy($orderby, $orderdirection) + ->paginate(20); + + return view('livewire.downloads-patreon', [ + 'downloads' => $downloads, + 'query' => $this->fileSearch, + ]); + } +} diff --git a/resources/views/livewire/downloads-patreon.blade.php b/resources/views/livewire/downloads-patreon.blade.php new file mode 100644 index 0000000..09b5827 --- /dev/null +++ b/resources/views/livewire/downloads-patreon.blade.php @@ -0,0 +1,141 @@ +
+
+ +
+
+ + +
+ +
+
+ +
+ + + +
+ +
+
+
+ + +
+
+
+ +
+ +
+
+
+
+
+
+
+
+
+
+ + +
+ +
+
Title
+
Size
+
Date
+
Download
+
+ + + @foreach ($downloads as $download) + @php + $title = explode('/', $download->url)[2]; + $bytes = $download->size; + $units = ['B', 'KB', 'MB', 'GB', 'TB']; + $power = $bytes > 0 ? floor(log($bytes, 1024)) : 0; + $fileSize = round($bytes / pow(1024, $power), 2) . ' ' . $units[$power]; + @endphp + +
+ +
+ + {{ $title }} + +
+ + +
+ {{ $fileSize }} +
+ + +
+ {{ $download->created_at->format('Y-m-d') }} +
+ + +
+ @php + $dlpdomains = config('hstream.download_domain_4k'); + $now = \Illuminate\Support\Carbon::now(); + $expire = \Illuminate\Support\Facades\Crypt::encryptString($now->addHours(6)); + $file = \Illuminate\Support\Facades\Crypt::encryptString('hentai/'.$download->url); + $downloadURL = $dlpdomains[array_rand($dlpdomains)].'/download/'.$file.'/'.$expire; + @endphp + + + +
+
+ @endforeach +
+ +
+
+
+
+ {{ $downloads->links('pagination::tailwind') }} +
+
diff --git a/resources/views/search/download-patreon.blade.php b/resources/views/search/download-patreon.blade.php new file mode 100644 index 0000000..cc4b3a7 --- /dev/null +++ b/resources/views/search/download-patreon.blade.php @@ -0,0 +1,4 @@ + + @include('user.partials.background') + @livewire('downloads-patreon') + diff --git a/routes/web.php b/routes/web.php index 3d67879..e08acd6 100644 --- a/routes/web.php +++ b/routes/web.php @@ -1,6 +1,7 @@ group(function () { // Download Page Route::get('/download-search', [HomeController::class, 'downloadSearch'])->name('download.search'); + + // Download Page for Patreon Subscribers + Route::get('/files', [DownloadsController::class, 'index'])->name('files.index'); }); Route::get('/user/{username}', [UserController::class, 'index'])->name('user.index');