This commit is contained in:
2025-09-18 15:31:27 +02:00
commit 2abba0c2b7
406 changed files with 31879 additions and 0 deletions

View File

@@ -0,0 +1,102 @@
<?php
namespace App\Http\Controllers\Api;
use App\Helpers\CacheHelper;
use App\Models\Episode;
use App\Models\Studios;
use App\Models\Subtitle;
use App\Http\Controllers\Controller;
class AdminApiController extends Controller
{
/**
* Get Tags (API).
*/
public function getTags()
{
$tags = CacheHelper::getAllTags();
$tagWhiteList = [];
foreach ($tags as $tag) {
$tagWhiteList[] = $tag->name;
}
return response()->json(['message' => 'success', 'tags' => $tagWhiteList], 200);
}
/**
* Get Studios (API).
*/
public function getStudios()
{
$studios = Studios::orderBy('name', 'ASC')->get();
$studioList = [];
foreach ($studios as $studio) {
$studioList[] = $studio->name;
}
return response()->json(['message' => 'success', 'studios' => $studioList], 200);
}
/**
* Get Subtitles (API).
*/
public function getSubtitles(int $episode_id)
{
$subs = Subtitle::all();
$subsWhiteList = [];
foreach ($subs as $sub) {
$subsWhiteList[] = $sub->name;
}
$episode = Episode::where('id', $episode_id)->firstOrFail();
$episodetags = [];
foreach ($episode->subtitles as $tag) {
$episodetags[] = $tag->subtitle->name;
}
return response()->json(['message' => 'success', 'subs' => $subsWhiteList, 'episodesubs' => $episodetags], 200);
}
/**
* Get Episode Tags (API).
*/
public function getEpisodeTags(int $episode_id)
{
$tags = CacheHelper::getAllTags();
$tagWhiteList = [];
foreach ($tags as $tag) {
$tagWhiteList[] = $tag->name;
}
$episode = Episode::where('id', $episode_id)->firstOrFail();
$episodetags = [];
foreach ($episode->tags as $tag) {
$episodetags[] = $tag->name;
}
return response()->json(['message' => 'success', 'tags' => $tagWhiteList, 'episodetags' => $episodetags], 200);
}
/**
* Get Episode Studio (API).
*/
public function getEpisodeStudio(int $episode_id)
{
$studios = Studios::orderBy('name', 'ASC')->get();
$studioList = [];
foreach ($studios as $studio) {
$studioList[] = $studio->name;
}
$episode = Episode::where('id', $episode_id)->firstOrFail();
$episodestudio = [$episode->studio->name];
return response()->json(['message' => 'success', 'studios' => $studioList, 'episodestudios' => $episodestudio], 200);
}
}

View File

@@ -0,0 +1,38 @@
<?php
namespace App\Http\Controllers\Api;
use App\Models\Downloads;
use App\Models\Episode;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
class DownloadApiController extends Controller
{
/**
* Get Download URL for users who are not logged in.
*/
public function getDownload(Request $request)
{
$validated = $request->validate([
'episode_id' => 'required',
'captcha' => 'required|captcha'
]);
$episode = Episode::where('id', $request->input('episode_id'))->firstOrFail();
// Increase download count, as we assume the user
// downloads after submitting the captcha
$download = Downloads::find($episode->getDownloadByType('FHD')->id);
$oldCount = $download->count;
$download->count++;
$download->save();
return response()->json([
'message' => 'success',
'download_url' => $download->url,
'download_count' => $oldCount,
], 200);
}
}

View File

@@ -0,0 +1,39 @@
<?php
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use App\Models\Episode;
use Illuminate\Http\Request;
class StreamApiController extends Controller
{
/**
* Get Data used by the Video Player.
*/
public function getStream(Request $request)
{
$validated = $request->validate([
'episode_id' => 'required',
]);
$episode = Episode::where('id', $request->input('episode_id'))->firstOrFail();
$subtitles = $episode->subtitles
->mapWithKeys(fn($sub) => [$sub->subtitle->slug => $sub->subtitle->name])
->toArray();
return response()->json([
'title' => $episode->title.' - '.$episode->episode,
'poster' => $episode->gallery()->first()->image_url,
'interpolated' => $episode->interpolated,
'interpolated_uhd' => $episode->interpolated_uhd,
'stream_url' => $episode->url,
'stream_domains' => config('hstream.stream_domain'),
'asia_stream_domains' => config('hstream.asia_stream_domain'),
'extra_subtitles' => $subtitles
], 200);
}
}

View File

@@ -0,0 +1,43 @@
<?php
namespace App\Http\Controllers\Api;
use App\Helpers\CacheHelper;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Conner\Tagging\Model\Tag;
class UserApiController extends Controller
{
/**
* Get Tags (API).
*/
public function getBlacklist(Request $request)
{
$user = $request->user();
$tagWhiteList = [];
$tagBlackList = [];
// All Tags
foreach (CacheHelper::getAllTags() as $tag) {
$tagWhiteList[] = $tag->name;
}
// User Tags
if ($user->tag_blacklist) {
foreach ($user->tag_blacklist as $tag) {
$t = Tag::where('slug', $tag)->first();
$tagBlackList[] = $t->name;
}
}
return response()->json([
'message' => 'success',
'tags' => $tagWhiteList,
'usertags' => $tagBlackList
], 200);
}
}