Vito0912 / abs_flutter

The unofficial cross-platform app for Audiobookshelf, available on Android, iOS, Windows, and Linux.
9 stars 3 forks source link

Audiobookshelfly

Translation status

For Android, iOS1,2, macOS1,2, Windows, Linux, and Web*3

Important

If you're interested in trying out the Android version of this app, please reach out to me via email. I'll add you to the beta testing group on the Google Play Store. It is currently private. Your participation is crucial, as I need testers to be able to create a public beta.

Alternatively, you can download the APK from the release section. However, joining the beta would greatly assist in bringing the app to the Play Store sooner.

This is a third-party app for the Audiobookshelf server, designed to maintain a single codebase for multiple OS platforms.\ The app is written in Dart and utilizes the Flutter framework.\ While the current version may not include all the features of the first-party app, it is a work in progress with ongoing development.

1 iOS functionality requires additional work. Since I do not own a Mac, I cannot fully test it. However, I have only used libraries compatible with iOS.\ 2 The Audiobookshelf server must be accessible via SSL, so you need a domain with a valid SSL certificate.\ *3 The web version requires the server to allow CORS.

Translation

For more details and to contribute, please refer to TRANSLATION.md.
All translations are managed through Weblate Hosted.

A big thank you to Weblate for providing their services!

Translation status

Platform Matrix

Platform Matrix Android iOS Windows Linux Web
Playing Audio
Playing Podcasts
Reading eBooks*5
Up-to-date Sync
Advanced Player Controls*1
Car Support*2 🟨 🟨
Car Mode (Big Buttons for Car)
No Extra Setup Needed ❌*6 ❌*3
Media Notifications
Caching
Offline Support ❌*5
Socket Support*5

1 Chapter support, sleep timer, playback speed, custom skip time, and more\ 2 Android Auto and Apple CarPlay are not supported as standalone apps, but media controls are supported\ 3 You need to allow CORS on the server so the web app can access it\ 5 Will be added in the future\ *6 A secure SSL connection is needed.

iOS requires some additional setup to configure the necessary plugins. Unfortunately, I’m unable to test, build, or fix errors on iOS since I don’t have access to a Mac. However, I’ve only used packages and libraries that are compatible with Apple, so once the setup is complete, there shouldn't be any issues building the app for iOS.

As for Linux, the app hasn’t been tested on that platform yet.

Features

Currently worked on

🎙️ Widgets - Widgets!

Summary

🔀 Fast Account Switching - Switch between multiple Audiobookshelf accounts with different servers in just two clicks.\ 🚀 Advanced Caching - Caches items, libraries and more to save a ton of mobile data\ 📄 Pagination - Load more items when you reach the end of lists to save data.\ 📈 Does Not Rely on a Socket - Use the app even with an occasionally interrupted connection.\ 📅 Up-to-date Sync - The app stays synchronized with the server when connected to the internet.\ 🔁 Queue Support - Add multiple items to the queue and play them in order. Even works offline.\ 🔊 Advanced Player Controls - Skip chapters, set a sleep timer, adjust playback speed, and more.\ 📴 Offline Support - Listen to your audiobooks even when you're offline. Sync offline up to one year\ 🔎 Fast Search - Search for audiobooks. Preserves query while switching library or user.\ 📖 History - Track where you paused, skipped, and resumed.\ 📊 Stats - View your listening habits over the past 365 days, including total time, frequency, and recent activity.\ HTML Support - Converts HTML in descriptions and makes links clickable.\ 🚀 Fast Loading - Option to enable fast loading that loads even the biggest libraries in a fraction of time.\ 🚗 Car Player Mode (Big Buttons) - Big buttons for easy control while driving.\ ⚙️ Many Settings - Customize the app to your liking. Head to Settings to learn more.\ Tray Icon - Control the app from the tray icon. (Desktops)\

Additional to First-party App

The features listed below have been requested for the first-party app.\ If no specific platform is mentioned, the feature is available on all platforms.

🚀 Fast Account Switching\ 📅 Up-to-date Sync\ 🔁 Queue Support\ HTML Support\ 🚀 Advanced Caching\ 🚗 Car Player Mode (Big Buttons)\ Tray Icon

Missing from First-party App

The features listed below are available in the first-party app but are not yet included in this app.\ The goal is to eventually include all first-party features.

🚗 Car Support - Currently limited to media controls.\ 📖 Reading eBooks

Attribution

The following attributions highlight contributions that were essential to this project.\ For a complete list of libraries used, please refer to the pubspec.yaml file.\ The libraries mentioned below had a particularly significant impact on the development of the app.

Library License Publisher Repository
openapi_generator (flutter) BSD-3-Clause devappliance.com GitHub
OpenAPI Generator Apache-2.0 - GitHub
Riverpod MIT dash-overflow.net GitHub [GitHub](
OpenLeaf for modified iridum Apache-2.0 JideGuru GitHub
iridium_reader_widget - Mantano GitHub
iridium - Mantano GitHub

Thanks to everybody contributing to Audiobookshelf to make this software so awesome. Thanks to everybody who contributed to Audiobookshelf-App to make this software so awesome. Many features of this app are based on the first-party app.

Images

Guided Login

The login screen allows users to easily toggle between https:// and http://.

This ensures that you can enter your server address correctly and avoid any connection issues.

Guided Login Screen

Rich Player

The player interface is packed with features designed to enhance your listening experience.

It includes a history tracker so you can easily resume from where you left off, speed control to adjust playback to your preference, and volume control for a seamless audio experience.

Additionally, the chapter view allows you to navigate through your audiobook easily, and the sleep timer can be reset simply by shaking your device.

Rich Player Interface Player Compact View

Listen Offline!

With offline listening, you can enjoy your audiobooks even when you’re off the grid, whether traveling, commuting, or in an area with limited connectivity.

The app provides clear indicators of what has been downloaded and what remains to be synced, ensuring you never lose track of your progress.

Once connected to the internet, your offline progress will automatically sync with the server.

Download View Downloaded Files View Download Button No Internet Connection

Rich Settings

The settings section offers a comprehensive range of customization options, allowing you to tailor the app to your specific needs.

From enabling dark mode to setting download preferences, you have full control over your listening experience.

Jump to Settings

Settings Screen

History

The history feature keeps a detailed log of your listening activities, including when you paused, skipped, or resumed playback.

This makes it easy to track your progress and revisit previous sections of your audiobooks.

Listening History

Item View

The item view screen provides details about each audiobook.

Here you can access the book's description, which supports clickable HTML links, allowing for easy navigation to related content.

You can also view important metadata such as the current position, overall progress, remaining time, and more.

Additionally, the item view allows you to filter content by author, narrator, or genre, helping you find related titles quickly.

Book Item View

Detailed Stats View

The stats view gives you a detailed breakdown of your listening over time.

You can track how much time you've spent listening each day, view your progress over the last seven or thirty days, and analyze your overall listening trends.

Listening Stats Additional Listening Stats

Known Bugs

Sleep Timer

Limitations

Filters and search

Contributing

Please sort the keys in the en.json file (and other edited) alphabetically before submitting a pull request.\ You can use the following command to sort the keys:

dart pub global activate arb_utils
arb_utils generate-meta .\lib\l10n\intl_en.arb
arb_utils sort .\lib\l10n\intl_en.arb

Or for an IDE that supports running code from a README, you can use the following Dart code:

arb_utils generate-meta .\lib\l10n\intl_en.arb
arb_utils sort .\lib\l10n\intl_en.arb