From b0b3a7803abaeebd6d141d18d293c0a4d90d44b5 Mon Sep 17 00:00:00 2001 From: DariusIII Date: Tue, 1 Jul 2025 13:59:57 +0200 Subject: [PATCH] Try to speedup movie page --- app/Http/Controllers/MovieController.php | 23 + public/assets/images/placeholder.png | 0 resources/views/themes/Gentele/movies.tpl | 718 ++++++++++++---------- 3 files changed, 407 insertions(+), 334 deletions(-) create mode 100644 public/assets/images/placeholder.png diff --git a/app/Http/Controllers/MovieController.php b/app/Http/Controllers/MovieController.php index 040e00c64..0e12c8a2e 100644 --- a/app/Http/Controllers/MovieController.php +++ b/app/Http/Controllers/MovieController.php @@ -47,12 +47,35 @@ class MovieController extends BasePageController $rslt = $movie->getMovieRange($page, $catarray, $offset, config('nntmux.items_per_cover_page'), $orderby, -1, $this->userdata->categoryexclusions); $results = $this->paginate($rslt ?? [], $rslt[0]->_totalcount ?? 0, config('nntmux.items_per_cover_page'), $page, $request->url(), $request->query()); + // Optimize data processing - do heavy lifting in backend $movies = $results->map(function ($result) { + // Pre-process exploded data to avoid template overhead $result['genre'] = makeFieldLinks($result, 'genre', 'movies'); $result['actors'] = makeFieldLinks($result, 'actors', 'movies'); $result['director'] = makeFieldLinks($result, 'director', 'movies'); $result['languages'] = explode(', ', $result['language']); + // Pre-explode release data to reduce template processing + $result['release_ids'] = explode(',', $result['grp_release_id']); + $result['release_guids'] = explode(',', $result['grp_release_guid']); + $result['release_nfoids'] = explode(',', $result['grp_release_nfoid']); + $result['release_groups'] = explode(',', $result['grp_release_grpname']); + $result['release_names'] = explode('#', $result['grp_release_name']); + $result['release_postdates'] = explode(',', $result['grp_release_postdate']); + $result['release_sizes'] = explode(',', $result['grp_release_size']); + $result['release_totalparts'] = explode(',', $result['grp_release_totalparts']); + $result['release_comments'] = explode(',', $result['grp_release_comments']); + $result['release_grabs'] = explode(',', $result['grp_release_grabs']); + $result['release_failed'] = explode(',', $result['grp_release_failed']); + $result['release_password'] = explode(',', $result['grp_release_password']); + $result['release_innerfiles'] = explode(',', $result['grp_rarinnerfilecount']); + $result['release_haspreview'] = explode(',', $result['grp_haspreview']); + + // Pre-process category data + if (isset($result['category_name'])) { + $result['category_split'] = explode('>', $result['category_name']); + } + return $result; }); diff --git a/public/assets/images/placeholder.png b/public/assets/images/placeholder.png new file mode 100644 index 000000000..e69de29bb diff --git a/resources/views/themes/Gentele/movies.tpl b/resources/views/themes/Gentele/movies.tpl index d14c2beb3..62985489b 100755 --- a/resources/views/themes/Gentele/movies.tpl +++ b/resources/views/themes/Gentele/movies.tpl @@ -58,24 +58,9 @@
{foreach $results as $result} {if isset($result['category_name'])} - {assign var="catnamesplit" value=">"|explode:$result['category_name']} + {assign var="catnamesplit" value=$result['category_split']} {/if} - {assign var="msplits" value=","|explode:$result['grp_release_id']} - {assign var="mguid" value=","|explode:$result['grp_release_guid']} - {assign var="mnfo" value=","|explode:$result['grp_release_nfoid']} - {assign var="mgrp" value=","|explode:$result['grp_release_grpname']} - {assign var="mname" value="#"|explode:$result['grp_release_name']} - {assign var="mpostdate" value=","|explode:$result['grp_release_postdate']} - {assign var="msize" value=","|explode:$result['grp_release_size']} - {assign var="mtotalparts" value=","|explode:$result['grp_release_totalparts']} - {assign var="mcomments" value=","|explode:$result['grp_release_comments']} - {assign var="mgrabs" value=","|explode:$result['grp_release_grabs']} - {assign var="mfailed" value=","|explode:$result['grp_release_failed']} - {assign var="mpass" value=","|explode:$result['grp_release_password']} - {assign var="minnerfiles" value=","|explode:$result['grp_rarinnerfilecount']} - {assign var="mhaspreview" value=","|explode:$result['grp_haspreview']} -
@@ -88,363 +73,428 @@ {/foreach}
- {foreach $msplits as $m} - {if $m@first} -
- - {$result['title']|escape: + {if !empty($result['release_ids'][0])} + - - - - {if $mnfo[$m@index] > 0} - - NFO - - {/if} + + - {/if} - {/foreach} + {/if} + + + Group + + + + Add + +
+ {/if}
- {foreach $msplits as $m} - {if $m@first} - -
- - {$result['title']|escape:"htmlall"} - {$result['year']} - {if $result['rating'] != ''} - - {$result['rating']}/10 - - {/if} - -
- - -
- {if $result['genre'] != ''} -
- -
- {foreach explode(", ", $result['genre']) as $genre} - {$genre} - {/foreach} -
-
+ {if !empty($result['release_ids'][0])} + +
+ + {$result['title']|escape:"htmlall"} + {$result['year']} + {if $result['rating'] != ''} + + {$result['rating']}/10 + {/if} + +
- {if $result['plot'] != ''} -
{$result['plot']}
- {/if} - - {if $result['director'] != ''} -
- - Director: {$result['director']} + +
+ {if $result['genre'] != ''} +
+ +
+ {foreach explode(", ", $result['genre']) as $genre} + {$genre} + {/foreach}
- {/if} +
+ {/if} - {if $result['actors'] != ''} -
- - Starring: {$result['actors']} -
- {/if} -
+ {if $result['plot'] != ''} +
{$result['plot']}
+ {/if} - -
-
-
-
- + {if $result['director'] != ''} +
+ + Director: {$result['director']} +
+ {/if} - {if isset($catsplit[0])} - {$catsplit[0]} - {/if} + {if $result['actors'] != ''} +
+ + Starring: {$result['actors']} +
+ {/if} +
- {if isset($catsplit[1])} - {$catsplit[1]} - {/if} + +
+
+
+
+ - {if $result['rtrating'] != ''} - - RT: {$result['rtrating']} - - {/if} -
+ {if isset($result['category_split'][0])} + {$result['category_split'][0]} + {/if} -
- - {$msize[$m@index]|filesize} -
-
+ {if isset($result['category_split'][1])} + {$result['category_split'][1]} + {/if} -
- - Posted {$mpostdate[$m@index]|timeago} ago -
- - - - - -
- - - {$mgrabs[$m@index]} - - - - - {$mcomments[$m@index]} - - - - - - - {if !empty($mfailed[$m@index])} - - - {$mfailed[$m@index]} Failed + {if $result['rtrating'] != ''} + + RT: {$result['rtrating']} {/if}
+ +
+ + {$result['release_sizes'][0]|filesize} +
+
+ +
+ + Posted {$result['release_postdates'][0]|timeago} ago +
+ + + + + +
+ + + {$result['release_grabs'][0]} + + + + + {$result['release_comments'][0]} + + + + + + + {if !empty($result['release_failed'][0])} + + + {$result['release_failed'][0]} Failed + + {/if}
- {/if} - {/foreach} +
+ {/if}
{/foreach} -
+
- -
-
-
-
-
- View: Covers | List -
-
- With Selected: -
- - - {if isset($isadmin)} - - - {/if} -
-
-
-
-
- {$results->onEachSide(5)->links()} -
-
- {{Form::close()}} - - - + +
+
+
+
+
+ View: Covers | List +
+
+ With Selected: +
+ + + {if isset($isadmin)} + + + {/if} +
+
+
+
+
+ {$results->onEachSide(5)->links()} +
+
+ {{Form::close()}} + + + - - + + - + + +