Giter Club home page Giter Club logo

posterbox's Introduction

Poster Box

Rotating display of Plex posters meant for a vertical TV or monitor.

Available as a binary and Docker container.

Usage

You can run Poster Box in one of two ways:

Command-line

Install on Mac OS with:

$ brew install JakeWharton/repo/posterbox

For other platforms, download ZIP from latest release and run bin/posterbox or bin/posterbox.bat.

$ posterbox --help
Usage: posterbox [OPTIONS] CONFIG

  HTTP server for Poster Box frontend

Options:
  --port PORT  Port for the HTTP server (default 9931)
  -h, --help   Show this message and exit

Arguments:
  CONFIG  TOML config file

Docker

The container starts the webserver on port 9931. It expects to load the configuration TOML from /config/config.toml so mount a volume accordingly.

Docker Image Version Docker Image Size

$ docker run -it --rm
    -v /path/to/config:/config \
    jakewharton/posterbox

Docker Compose

version: '2'
services:
  posterbox:
    image: jakewharton/posterbox
    restart: unless-stopped
    volumes:
      - /path/to/config:/config

Configuration

The configuration file allows customization of behavior and specifies the source of content. All top-level keys and sections are optional. An empty configuration file is technically valid, but will result in no content being displayed.

# Duration each item is displayed as an ISO 8601 duration string (optional).
# See https://en.wikipedia.org/wiki/ISO_8601#Durations.
#  Value: must be positive duration
#  Default: "PT15S" (15 seconds)
itemDisplayDuration = "PT10S"

# Transition between items (optional).
#  Value: "none", "fade", "crossfade", "slide-right", or "slide-left"
#  Default: "fade"
itemTransition = "slide-right"

# Use Plex as a content source.
#  This section is optional but has required keys if it is present.
[plex]
# Plex host URL (required).
#  Value: String containing DNS hostname or IP with protocol and optional port.
host = "http://plexms:32800"
# Plex authentication token (required).
# See https://support.plex.tv/articles/204059436-finding-an-authentication-token-x-plex-token/.
#  Value: String
token = "abc123"
# Libraries from which to pull posters (optional). No matter the contents of this array,
# only entries of type "movie" or "show" will be used.
#  Value: Array of case-sensitive library names or null to use all available libraries.
#  Default: null
libraries = [ "Movies", "TV Shows" ]
# Minimum rating cut-off for poster inclusion (optional). Content with no rating is
# treated as having a rating of 0. Audience rating takes precedence over critic rating.
#  Value: Whole number in the range [0, 100]
#  Default: 0
minimumRating = 40
# Duration between synchronizing items from Plex server as an ISO 8601 duration
# string (optional). See https://en.wikipedia.org/wiki/ISO_8601#Durations.
#  Value: String containing positive duration
#  Default: "PT15M" (15 minutes)
syncIntervalDuration = "PT30M"

Development

To run the latest code build with ./gradlew installDist. This will put the application into build/install/posterbox/. From there you can use the command-line instructions to run.

The Docker container can be built with docker build ..

Posterr

Poster Box was inspired by Posterr which is a far more feature-filled and customizable tool. Posterr was not able to run smoothly on my Raspberry Pi Zero due to its use of a jQuery-based carousel and creating DOM nodes for every poster when loaded. Poster Box has only two sets of DOM elements which are updated when off-screen and animated using CSS animations. If you like Poster Box but wish it had more features and integrated with more tools you should try Posterr!

License

Copyright 2022 Jake Wharton

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

posterbox's People

Contributors

aperfilyev avatar dependabot[bot] avatar jakewharton avatar orchestr7 avatar renovate[bot] 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

Watchers

 avatar  avatar  avatar  avatar

posterbox's Issues

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

Rate-Limited

These updates are currently rate-limited. Click on a checkbox below to force their creation now.

  • Update alpine Docker tag to v3.20.2
  • Update actions/setup-java action to v4
  • Update dependency com.github.ajalt.clikt:clikt to v4
  • Update dependency org.jetbrains.kotlin:kotlin-test to v2
  • Update dependency org.slf4j:slf4j-simple to v2
  • Update docker/build-push-action action to v6
  • Update docker/login-action action to v3
  • Update ffurrer2/extract-release-notes action to v2
  • Update gradle/wrapper-validation-action action to v3
  • Update kotlin to v2 (major) (org.jetbrains.kotlin.plugin.serialization, org.jetbrains.kotlin.multiplatform, org.jetbrains.kotlin.jvm)
  • Update softprops/action-gh-release action to v2
  • ๐Ÿ” Create all rate-limited PRs at once ๐Ÿ”

Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

Detected dependencies

dockerfile
Dockerfile
  • openjdk 18-alpine
  • alpine 3.19.1
github-actions
.github/workflows/build.yaml
  • actions/checkout v4
  • gradle/wrapper-validation-action v1
  • actions/setup-java v3.13.0
  • actions/checkout v4
  • gradle/wrapper-validation-action v1
.github/workflows/build_and_publish.yaml
  • actions/checkout v4
  • gradle/wrapper-validation-action v1
  • actions/setup-java v3.13.0
  • crazy-max/ghaction-docker-meta v1
  • docker/login-action v2
  • docker/build-push-action v4
  • ffurrer2/extract-release-notes v1
  • softprops/action-gh-release v1
gradle
gradle.properties
settings.gradle
build.gradle
gradle/libs.versions.toml
  • org.jetbrains.kotlin:kotlin-test 1.6.10
  • org.jetbrains.kotlinx:kotlinx-coroutines-core 1.6.0
  • org.jetbrains.kotlinx:kotlinx-serialization-core 1.3.2
  • org.jetbrains.kotlinx:kotlinx-serialization-json 1.3.2
  • io.ktor:ktor-client-js 2.0.0-beta-1
  • io.ktor:ktor-client-java 2.0.0-beta-1
  • io.ktor:ktor-server-core 2.0.0-beta-1
  • io.ktor:ktor-server-cio 2.0.0-beta-1
  • com.akuleshov7:ktoml-core 0.2.11
  • org.jetbrains.compose.runtime:runtime 1.0.1
  • org.jetbrains.compose.web:web-core 1.0.1
  • org.slf4j:slf4j-simple 1.7.36
  • com.github.ajalt.clikt:clikt 3.4.0
  • org.jetbrains.kotlin.jvm 1.6.10
  • org.jetbrains.kotlin.multiplatform 1.6.10
  • org.jetbrains.kotlin.plugin.serialization 1.6.10
  • org.jetbrains.compose 1.0.1
gradle-wrapper
gradle/wrapper/gradle-wrapper.properties
  • gradle 7.6.4

  • Check this box to trigger a request for Renovate to run again on this repository

Landscape layout

Could do multiple posters or maybe a Plex-like layout with title, description, ratings, etc.

Determine config update strategy

When config updates, posters could be removed and others added. We don't necessarily want to restart the world when this happens but perhaps just merge them in. Or maybe not.

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.