Git Product home page Git Product logo

audiobookshelf-web's People

Contributors

aamirazad avatar advplyr avatar ahobsonsayers avatar apocer avatar benonymity avatar berksmbl avatar cassieesposito avatar clhatch avatar dieseltech avatar filp avatar fogolin avatar gamendorf avatar gavinisumanth avatar goodnewz avatar jvanbruegge avatar krishna-santosh avatar lkiesow avatar maflo321 avatar mark-monteiro avatar mayli avatar mediacowboy avatar neingeist avatar nevivurn avatar nichwall avatar rbh-se avatar sapd avatar sas-1 avatar therealbithive avatar turion avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

audiobookshelf-web's Issues

New Guide - Podcast

Guide which covers how podcasts work. Would like some graphics. The guide does not need to be in the same order as below, but should have all of the following:

  • Adding a podcast
  • Setting up autodownload
  • Adding a podcast where you already have the files
  • Manual download of episodes
  • Current features
  • Planned features (links to notable GH issues)
  • What users can do and what server owners can do

[Enhancement]: Add an Example .opf File to the Documentation

Describe the feature/enhancement

Add an example .opf file to the documentation section on Additional Metadata. Proposal attached (includes subtitle and asin elements which will be in the next release.

Note: the app supports multiple series / volumeNumber elements, however, when they are read in from a .opf file each one overwrites the previous.

[Enhancement]: Kubernetes deployment

Describe the feature/enhancement

The documentation describes in detail how to deploy audiobookshelf using Docker and docker-compose, with examples given in the repository. However, no such documentation exists for using Kubernetes.
Reading through the existing issues, it becomes apparent that some users do deploy the project on Kubernetes clusters, and there are different reasons why this could make sense.

I found that existing community-driven solutions found online, e.g. helm-charts, need to be updated at best and are often even unsafe to use. Thus, I created my own configuration using kustomize. Others might benefit from official documentation about deploying on Kubernetes.

The documentation should look similar to the one using docker-compose and include examples in the repository.

Docker container fails to start.

Followed the documentation but am greeted with this error on start up.

docker logs --tail 100 -f audiobookshelf
npm ERR! code ENOENT
npm ERR! syscall open
npm ERR! path /srv/package.json
npm ERR! errno -2
npm ERR! enoent ENOENT: no such file or directory, open '/srv/package.json'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent 

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2021-12-30T23_55_28_173Z-debug.log

The latest image was pulled from docker hub.

for completeness, this is the docker inspect



docker inspect audiobookshelf
[
    {
        "Id": "f97338c516c4ae6a96abcc57802d13e77550149e6a8da590751026c384f52838",
        "Created": "2021-12-30T23:55:20.632879758Z",
        "Path": "docker-entrypoint.sh",
        "Args": [
            "npm",
            "start"
        ],
        "State": {
            "Status": "exited",
            "Running": false,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 0,
            "ExitCode": 254,
            "Error": "",
            "StartedAt": "2021-12-30T23:55:23.018582086Z",
            "FinishedAt": "2021-12-30T23:55:28.253236425Z"
        },
        "Image": "sha256:bc26f7405ad2cdadba339fa7bec94576ed0c8adfd2f7546abe25cc6776b5d38b",
        "ResolvConfPath": "/var/lib/docker/containers/f97338c516c4ae6a96abcc57802d13e77550149e6a8da590751026c384f52838/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/f97338c516c4ae6a96abcc57802d13e77550149e6a8da590751026c384f52838/hostname",
        "HostsPath": "/var/lib/docker/containers/f97338c516c4ae6a96abcc57802d13e77550149e6a8da590751026c384f52838/hosts",
        "LogPath": "/var/lib/docker/containers/f97338c516c4ae6a96abcc57802d13e77550149e6a8da590751026c384f52838/f97338c516c4ae6a96abcc57802d13e77550149e6a8da590751026c384f52838-json.log",
        "Name": "/audiobookshelf",
        "RestartCount": 0,
        "Driver": "btrfs",
        "Platform": "linux",
        "MountLabel": "",
        "ProcessLabel": "",
        "AppArmorProfile": "docker-default",
        "ExecIDs": null,
        "HostConfig": {
            "Binds": [
                "ab-metadata:/metadata",
                "/mnt/media/audio/Audiobooks:/srv/audiobooks:ro",
                "ab-config:/config"
            ],
            "ContainerIDFile": "",
            "LogConfig": {
                "Type": "json-file",
                "Config": {}
            },
            "NetworkMode": "bridge",
            "PortBindings": {
                "80/tcp": [
                    {
                        "HostIp": "",
                        "HostPort": "9888"
                    }
                ]
            },
            "RestartPolicy": {
                "Name": "no",
                "MaximumRetryCount": 0
            },
            "AutoRemove": false,
            "VolumeDriver": "",
            "VolumesFrom": null,
            "CapAdd": [
                "AUDIT_WRITE",
                "CHOWN",
                "DAC_OVERRIDE",
                "FOWNER",
                "FSETID",
                "KILL",
                "MKNOD",
                "NET_BIND_SERVICE",
                "NET_RAW",
                "SETFCAP",
                "SETGID",
                "SETPCAP",
                "SETUID",
                "SYS_CHROOT"
            ],
            "CapDrop": [
                "AUDIT_CONTROL",
                "BLOCK_SUSPEND",
                "DAC_READ_SEARCH",
                "IPC_LOCK",
                "IPC_OWNER",
                "LEASE",
                "LINUX_IMMUTABLE",
                "MAC_ADMIN",
                "MAC_OVERRIDE",
                "NET_ADMIN",
                "NET_BROADCAST",
                "SYSLOG",
                "SYS_ADMIN",
                "SYS_BOOT",
                "SYS_MODULE",
                "SYS_NICE",
                "SYS_PACCT",
                "SYS_PTRACE",
                "SYS_RAWIO",
                "SYS_RESOURCE",
                "SYS_TIME",
                "SYS_TTY_CONFIG",
                "WAKE_ALARM"
            ],
            "CgroupnsMode": "private",
            "Dns": [],
            "DnsOptions": null,
            "DnsSearch": null,
            "ExtraHosts": [],
            "GroupAdd": null,
            "IpcMode": "private",
            "Cgroup": "",
            "Links": null,
            "OomScoreAdj": 0,
            "PidMode": "",
            "Privileged": false,
            "PublishAllPorts": false,
            "ReadonlyRootfs": false,
            "SecurityOpt": null,
            "UTSMode": "",
            "UsernsMode": "",
            "ShmSize": 67108864,
            "Runtime": "runc",
            "ConsoleSize": [
                0,
                0
            ],
            "Isolation": "",
            "CpuShares": 0,
            "Memory": 0,
            "NanoCpus": 0,
            "CgroupParent": "",
            "BlkioWeight": 0,
            "BlkioWeightDevice": null,
            "BlkioDeviceReadBps": null,
            "BlkioDeviceWriteBps": null,
            "BlkioDeviceReadIOps": null,
            "BlkioDeviceWriteIOps": null,
            "CpuPeriod": 0,
            "CpuQuota": 0,
            "CpuRealtimePeriod": 0,
            "CpuRealtimeRuntime": 0,
            "CpusetCpus": "",
            "CpusetMems": "",
            "Devices": [],
            "DeviceCgroupRules": null,
            "DeviceRequests": null,
            "KernelMemory": 0,
            "KernelMemoryTCP": 0,
            "MemoryReservation": 0,
            "MemorySwap": 0,
            "MemorySwappiness": null,
            "OomKillDisable": null,
            "PidsLimit": null,
            "Ulimits": null,
            "CpuCount": 0,
            "CpuPercent": 0,
            "IOMaximumIOps": 0,
            "IOMaximumBandwidth": 0,
            "MaskedPaths": [
                "/proc/asound",
                "/proc/acpi",
                "/proc/kcore",
                "/proc/keys",
                "/proc/latency_stats",
                "/proc/timer_list",
                "/proc/timer_stats",
                "/proc/sched_debug",
                "/proc/scsi",
                "/sys/firmware"
            ],
            "ReadonlyPaths": [
                "/proc/bus",
                "/proc/fs",
                "/proc/irq",
                "/proc/sys",
                "/proc/sysrq-trigger"
            ],
            "Init": false
        },
        "GraphDriver": {
            "Data": null,
            "Name": "btrfs"
        },
        "Mounts": [
            {
                "Type": "volume",
                "Name": "ab-metadata",
                "Source": "/var/lib/docker/volumes/ab-metadata/_data",
                "Destination": "/metadata",
                "Driver": "local",
                "Mode": "z",
                "RW": true,
                "Propagation": ""
            },
            {
                "Type": "bind",
                "Source": "/mnt/media/audio/Audiobooks",
                "Destination": "/srv/audiobooks",
                "Mode": "ro",
                "RW": false,
                "Propagation": "rprivate"
            },
            {
                "Type": "volume",
                "Name": "ab-config",
                "Source": "/var/lib/docker/volumes/ab-config/_data",
                "Destination": "/config",
                "Driver": "local",
                "Mode": "z",
                "RW": true,
                "Propagation": ""
            }
        ],
        "Config": {
            "Hostname": "21f1be409137",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "ExposedPorts": {
                "80/tcp": {}
            },
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "NODE_VERSION=10.13.0",
                "YARN_VERSION=1.10.1",
                "NODE_ENV=production"
            ],
            "Cmd": [
                "npm",
                "start"
            ],
            "Image": "advplyr/audiobookshelf:latest",
            "Volumes": {
                "/config": {},
                "/metadata": {},
                "/srv/audiobooks": {}
            },
            "WorkingDir": "/srv",
            "Entrypoint": [
                "docker-entrypoint.sh"
            ],
            "OnBuild": null,
            "Labels": {}
        },
        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "e693fddb559d3a57492ebd4624ce6f2488e94cc90ea5063914969bcf2731ce69",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {},
            "SandboxKey": "/var/run/docker/netns/e693fddb559d",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "",
            "Gateway": "",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "",
            "IPPrefixLen": 0,
            "IPv6Gateway": "",
            "MacAddress": "",
            "Networks": {
                "bridge": {
                    "IPAMConfig": {},
                    "Links": null,
                    "Aliases": null,
                    "NetworkID": "9d5f0c47807f5d328190d6391ceefb518afbd3972ac7a0aada4cff5ae1f813e8",
                    "EndpointID": "",
                    "Gateway": "",
                    "IPAddress": "",
                    "IPPrefixLen": 0,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "",
                    "DriverOpts": null
                }
            }
        }
    }
]

any thougths ?

Contributor guide updates

Add some more explanation on how to add a new guide (for people who aren't comfortable messing with code but can write words)

Add a brief explanation and commands of how I make gifs using OBS and imagemagick

Guide translations

It would be good to add the ability to translate guides and make them available in other languages. There has been discussion around weblate. I'm wondering if it's worth getting a dedicated VPS that could run weblate, and then add a demo ABS instance when that is ready.

adjust UI text in "Your Stats" section

image

the numbers indicating the minutes for "week listening", "Daily average", "Best Day" all sort of just merges in the UI if the number is high.

Possibly change this to "Hours + Minutes" or reduce the font of the numbers?

Update Guide - Library Creation

  • Graphics are from 2.2.x, but need to be changed for 2.4.x.
  • Update language and add new features
  • Add better warning at beginning to double check docker mounts because if users have not mounted correctly and use the web UI to upload they will lose media when they update

Actual "user" guides

I think there needs to be some guides for users who don't manage a server. Currently all guides are for server administration, and most troubleshooting is done by the server admin.

I don't know where this should go. Maybe rename "user guides" to "server guides" and then have a new "user guides" section? It would also be nice if there was a way to get to these guides in the app/browser so the user doesn't have to navigate away (but a Help button in the side menu that links to the ABS website would suffice)

The user/server guides could still be in the same page, but separate them like the book/podcast view on https://www.audiobookshelf.org/docs/

  • Something stopped working after an app update
    • Try to reset the app (sign in again), sometimes things get messed up
  • My playback position is weird
    • The server should remember the playback position between multiple devices, but sometimes there are issues if you have poor cell service or are listening on multiple devices
  • The iOS beta is full
    • Apple has a hard limit on how many people can be part of the beta. Users who have not updated their app recently are purged periodically to make room, but no guarantees on when there will be room
  • Why can't I add users in the app?
    • The app is designed to use the server, not manage the server. If you need to manage the server from your phone, you can log in to the server in your mobile web browser
  • Customizing shelves
    • how to customize, information about options

Continue Listening is showing books that have been completed (100%)

Web docker version 2.5.0

Expectation... if a book is completed/finished, then it should not be displayed in the "Continue Listening" section.

image

image

Bonus issue:

When I finished "Blood Rites" (book 6), I would have expected to see "Dead Beat" (book 7) in the "Continue Series" section, but it did not display there.

New Guide - RSS Feeds

Guide on how to share content from an ABS server to another service works using RSS feeds. Would like some graphics. The guide does not need to be in the same order as below, but should have all of the following:

  • Why to open an RSS feed
  • Creating a feed
  • Managing existing feeds (in server settings)
  • Planned features, if applicable (links to notable GH issues)
  • What users can do and what server owners can do, if applicable

Translation FAQ

Add an explanation somewhere that the mobile apps are planned to be translated and will reuse the server translations, just hasn't been set up yet.

Link to relevant GH issues, but then it's on the website and less likely to be lost.

Add mermaid.js support

(from discord conversation and advplyr research in how to add mermaid for me)

To make it easier to keep diagrams up to date, mermaid.js would be nice.

advplyr attempted to integrate this, but it looks like the website needs to update to nuxt-v2 for it to work properly.

Nuxt should be updated at some point anyway

New Guide - m4b conversion

How to use the builtin m4b converter. Maybe a short list of links for other tools that can be used too

Would like screenshots and possibly some graphics. The guide does not need to be in the same order as below, but should have all of the following:

  • How to convert a book/settings
  • Reminder to remove from cache when complete (and why this isn't done automatically)
  • Non exhaustive list of other tools (Mac, Windows, Linux, GUI/CLI)
  • Planned features (links to notable GH issues)
  • What users can do and what server owners can do, if applicable

New Guide - Multiple servers in app/Offline mode

Guide on how to have multiple users/servers connected from the same mobile app. Also explain how offline mode works. Would like some graphics. The guide does not need to be in the same order as below, but should have all of the following:

  • Why to do this (shared device/multiple friends with servers)
  • How sync works both when connected and offline
  • Planned features, if applicable (links to notable GH issues)
  • Notable issues, if applicable (links to GH issues)
  • What users can do and what server owners can do, if applicable

Improve UI

While the guides and docs on the website just keep getting better and better, It seems like multiple aspects of the UI is in need of some smoothing out. Problems seem most notable in the nav bar, which is jarringly inconsistent between pages and sometimes non-existent. This seems especially problematic when page links move from the left side of the screen to the right and are added/removed/change their names. You can usually get where you need to go, but having four different systems of navigation within as many clicks of each other doesn't seem very user-friendly. Additionally, the FAQ tab is only visible on the docs or the guides page, and isn't even present on the navbar when you are in the FAQ tab itself. On small screens, the sidebar also disappears which mades navigation through guides impossible as brought up in #28, and the showcase tab disappears entirely.

All just CSS nitpicking, but still worth addressing.

Screenshots

Bottom right navigation:
Screenshot 2023-12-29 at 12 00 00 AM

Top right navigation
Screenshot 2023-12-29 at 12 00 12 AM

Top left navigation
Screenshot 2023-12-29 at 12 00 25 AM

Mobile shortened navigation:
Screenshot 2023-12-29 at 12 00 45 AM

Mobile guides:
Screenshot 2023-12-29 at 12 00 55 AM

Mobile sidebar not showing up

When browsing the website on mobile, the sidebar for the guides and documentation is missing. This is not a problem for https://www.audiobookshelf.org/docs because the user can scroll through everything on the same page, but causes problems for https://www.audiobookshelf.org/guides.

Would it be possible to add some sort of hamburger menu (quick googling shows this may be a "flyout menu") to get the list of guides on mobile?

This issue is mitigated by switching to desktop view in a mobile browser.

New Guide - podman container deployment

I think adding a guide for podman container deployment will be a good addition to the docs as it will allow Fedora or Fedora based distro users to easily install audiobookshelf as the latest version of podman is pre-installed in Fedora.

Example podman quadlet container for audiobookshelf

# audiobookshelf.container
[Container]
ContainerName=audiobookshelf
Image=ghcr.io/advplyr/audiobookshelf:latest
AutoUpdate=registry
NoNewPrivileges=true
PublishPort=127.0.0.1:13378:80
Volume=./Audiobooks:/Audiobooks
Volume=./Books:/Books
Volume=./config:/config
Volume=./metadata:/metadata

[Service]
Restart=always

[Install]
WantedBy=default.target

Guides to be added/updated

This is a list of guides that I think would be useful on the ABS website. Some of these topics are things that can easily be figured out by clicking around the user interface, but new users seem to keep asking things related to this so it should be more clear in the documentation, or having questions about capabilities before installing ABS and various video reviews are out of date.

I'll try and keep this top comment up to date as other things come up on Discord or ABS versions are released, but not sure how well I'll keep each guide up to date (the guides I originally wrote are 19 patch versions behind as of writing this).

  • Update collections to include playlists and differentiate them
  • User permissions and sharing
  • Limiting user access by tags/library
  • What options are there
  • Should we have a list of things potentially on the roadmap, or just leave it off so users don't constantly ask about when something will be added?
  • Podcasts
  • Explicitly state that ABS is designed to download to and serve podcasts from the server. But for now the answer is "if you don't want the server downloading episodes then use a normal podcast app"
  • Book Multiple/sub series creation
  • Encoding books into m4b, and other tools that someone can use
  • List of links to tools that can be used (ffmpeg, audiobook converter, whatever people keep recommending because I just know what I use)
  • Sourcing books
  • Don't think we really need this, but maybe a link to somewhere that has a list of DRM removers.
  • Specify that ABS does not De-DRM books and has no intention of doing so
  • Access control
  • already discussed on the User page, but could use some more detail/expanded examples like with Subseries. Information is currently buried so unlikely to find if just browsing the guides
  • Update library creation guide
  • changes to library creation (for example the Audiobook only option) need to be added
  • Restore from backup guide

New Guide - Setting up local storage on app

Guide on how to set up local storage on Android.
Would like some graphics. The guide does not need to be in the same order as below, but should have all of the following:

  • Why to do this (providing files to other apps)
  • Planned features, if applicable (links to notable GH issues)
  • Notable issues, if applicable (links to GH issues)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.