From 211f9349c14f1c9b43ecabaa8df7405e98f6b717 Mon Sep 17 00:00:00 2001 From: Lucas Araujo Date: Tue, 9 Sep 2025 12:10:27 +0200 Subject: [PATCH 1/3] feat(Audiobookshelf): enhance stats display and add book count - Rename "Total Playtime" to "Playtime" for brevity - Add book count to stats display - Simplify time format by removing seconds - Clean up constructor and unused code - Update API endpoint for testing --- Audiobookshelf/Audiobookshelf.php | 40 +++++++++++++++++++++--------- Audiobookshelf/livestats.blade.php | 6 ++++- 2 files changed, 33 insertions(+), 13 deletions(-) diff --git a/Audiobookshelf/Audiobookshelf.php b/Audiobookshelf/Audiobookshelf.php index 3994212503..bd1278f7e8 100644 --- a/Audiobookshelf/Audiobookshelf.php +++ b/Audiobookshelf/Audiobookshelf.php @@ -6,17 +6,11 @@ class Audiobookshelf extends \App\SupportedApps implements \App\EnhancedApps { public $config; - //protected $login_first = true; // Uncomment if api requests need to be authed first - //protected $method = 'POST'; // Uncomment if requests to the API should be set by POST - - public function __construct() - { - //$this->jar = new \GuzzleHttp\Cookie\CookieJar; // Uncomment if cookies need to be set - } + public function __construct() {} public function test() { - $test = parent::appTest($this->url('status')); + $test = parent::appTest($this->url('api/me'), $this->getAttrs()); echo $test->status; } @@ -25,7 +19,15 @@ public function livestats() $status = 'inactive'; $res = parent::execute($this->url('api/me/listening-stats'), $this->getAttrs()); $details = json_decode($res->getBody()); - $data = ['totalTime' => $this->secondsToHoursMinutes($details->totalTime)]; + + if ($details->totalTime > 0) { + $status = 'active'; + $data = [ + 'totalTime' => $this->secondsToHoursMinutes($details->totalTime), + 'bookCount' => $this->get_book_count() + ]; + } + return parent::getLiveStats($status, $data); } @@ -35,6 +37,22 @@ public function url($endpoint) return $api_url; } + private function get_book_count() + { + $res = parent::execute($this->url('api/libraries'), $this->getAttrs()); + $libraries = json_decode($res->getBody())->libraries; + + $book_count = 0; + foreach ($libraries as $library) { + $lib_id = $library->id; + $res = parent::execute($this->url('api/libraries/' . $lib_id . '/items'), $this->getAttrs()); + $library_details = json_decode($res->getBody()); + $book_count += $library_details->total; + } + + return $book_count; + } + private function getAttrs() { return [ @@ -46,12 +64,10 @@ private function getAttrs() ]; } - private function secondsToHoursMinutes($seconds) { $hours = floor($seconds / 3600); $minutes = floor(($seconds % 3600) / 60); - $return_seconds = floor($seconds % 60); - return $hours . 'h ' . $minutes . 'min ' . $return_seconds . 'sec'; + return $hours . 'h ' . $minutes . 'm'; } } diff --git a/Audiobookshelf/livestats.blade.php b/Audiobookshelf/livestats.blade.php index 8b3ede6dd4..bbfaddbfc5 100644 --- a/Audiobookshelf/livestats.blade.php +++ b/Audiobookshelf/livestats.blade.php @@ -1,6 +1,10 @@ From e3b578c23b2797d87220eeb44268d3dc365ccbda Mon Sep 17 00:00:00 2001 From: Lucas Araujo Date: Wed, 10 Sep 2025 20:21:36 +0200 Subject: [PATCH 2/3] style: fix constructor formatting in Audiobookshelf class --- Audiobookshelf/Audiobookshelf.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Audiobookshelf/Audiobookshelf.php b/Audiobookshelf/Audiobookshelf.php index bd1278f7e8..3e77376a03 100644 --- a/Audiobookshelf/Audiobookshelf.php +++ b/Audiobookshelf/Audiobookshelf.php @@ -6,7 +6,9 @@ class Audiobookshelf extends \App\SupportedApps implements \App\EnhancedApps { public $config; - public function __construct() {} + public function __construct() { + + } public function test() { From 1c802eaae707757c72d2f38d635c80324553483b Mon Sep 17 00:00:00 2001 From: Lucas Araujo Date: Sat, 13 Sep 2025 17:30:51 +0200 Subject: [PATCH 3/3] refactor: rename methods and variables to follow camelCase convention --- Audiobookshelf/Audiobookshelf.php | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/Audiobookshelf/Audiobookshelf.php b/Audiobookshelf/Audiobookshelf.php index 3e77376a03..3e75701d71 100644 --- a/Audiobookshelf/Audiobookshelf.php +++ b/Audiobookshelf/Audiobookshelf.php @@ -7,7 +7,6 @@ class Audiobookshelf extends \App\SupportedApps implements \App\EnhancedApps public $config; public function __construct() { - } public function test() @@ -26,7 +25,7 @@ public function livestats() $status = 'active'; $data = [ 'totalTime' => $this->secondsToHoursMinutes($details->totalTime), - 'bookCount' => $this->get_book_count() + 'bookCount' => $this->getBookCount() ]; } @@ -39,20 +38,20 @@ public function url($endpoint) return $api_url; } - private function get_book_count() + private function getBookCount() { $res = parent::execute($this->url('api/libraries'), $this->getAttrs()); $libraries = json_decode($res->getBody())->libraries; - $book_count = 0; + $bookCount = 0; foreach ($libraries as $library) { $lib_id = $library->id; $res = parent::execute($this->url('api/libraries/' . $lib_id . '/items'), $this->getAttrs()); $library_details = json_decode($res->getBody()); - $book_count += $library_details->total; + $bookCount += $library_details->total; } - return $book_count; + return $bookCount; } private function getAttrs()