Init
This commit is contained in:
102
app/Http/Controllers/Api/AdminApiController.php
Normal file
102
app/Http/Controllers/Api/AdminApiController.php
Normal 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);
|
||||
}
|
||||
}
|
38
app/Http/Controllers/Api/DownloadApiController.php
Normal file
38
app/Http/Controllers/Api/DownloadApiController.php
Normal 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);
|
||||
}
|
||||
}
|
39
app/Http/Controllers/Api/StreamApiController.php
Normal file
39
app/Http/Controllers/Api/StreamApiController.php
Normal 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);
|
||||
}
|
||||
}
|
43
app/Http/Controllers/Api/UserApiController.php
Normal file
43
app/Http/Controllers/Api/UserApiController.php
Normal 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);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user