{"id":16838658,"url":"https://github.com/jakewharton/posterbox","last_synced_at":"2025-04-07T13:08:16.893Z","repository":{"id":37666951,"uuid":"451000005","full_name":"JakeWharton/PosterBox","owner":"JakeWharton","description":"Rotating display of Movie and TV posters","archived":false,"fork":false,"pushed_at":"2025-03-29T21:57:15.000Z","size":4643,"stargazers_count":78,"open_issues_count":15,"forks_count":6,"subscribers_count":3,"default_branch":"trunk","last_synced_at":"2025-03-29T22:27:56.311Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JakeWharton.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-01-23T04:03:53.000Z","updated_at":"2025-01-04T07:05:46.000Z","dependencies_parsed_at":"2023-02-16T13:00:32.768Z","dependency_job_id":"5f6ecb87-8eec-4891-9c8d-e68325ae9777","html_url":"https://github.com/JakeWharton/PosterBox","commit_stats":{"total_commits":91,"total_committers":5,"mean_commits":18.2,"dds":0.4285714285714286,"last_synced_commit":"92897a24818406d0dfb29ede5ee25b1b41d55206"},"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JakeWharton%2FPosterBox","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JakeWharton%2FPosterBox/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JakeWharton%2FPosterBox/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JakeWharton%2FPosterBox/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JakeWharton","download_url":"https://codeload.github.com/JakeWharton/PosterBox/tar.gz/refs/heads/trunk","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247657281,"owners_count":20974345,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-13T12:25:16.976Z","updated_at":"2025-04-07T13:08:16.877Z","avatar_url":"https://github.com/JakeWharton.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Poster Box\n\nRotating display of Plex posters meant for a vertical TV or monitor.\n\n\u003ca href=\"sample1.png\"\u003e\u003cimg src=\"sample1.png\" width=\"32%\"/\u003e\u003c/a\u003e\n\u003ca href=\"sample2.png\"\u003e\u003cimg src=\"sample2.png\" width=\"32%\"/\u003e\u003c/a\u003e\n\u003ca href=\"sample3.png\"\u003e\u003cimg src=\"sample3.png\" width=\"32%\"/\u003e\u003c/a\u003e\n\nAvailable as a binary and Docker container.\n\n## Usage\n\nYou can run Poster Box in one of two ways:\n\n* [Command line](#command-line)\n* [Docker](#docker)\n\n### Command-line\n\nInstall on Mac OS with:\n```\n$ brew install JakeWharton/repo/posterbox\n```\n\nFor other platforms, download ZIP from\n[latest release](https://github.com/JakeWharton/posterbox/releases/latest)\nand run `bin/posterbox` or `bin/posterbox.bat`.\n\n```\n$ posterbox --help\nUsage: posterbox [OPTIONS] CONFIG\n\n  HTTP server for Poster Box frontend\n\nOptions:\n  --port PORT  Port for the HTTP server (default 9931)\n  -h, --help   Show this message and exit\n\nArguments:\n  CONFIG  TOML config file\n```\n\n\n### Docker\n\nThe container starts the webserver on port 9931.\nIt expects to load the [configuration TOML](#configuration) from `/config/config.toml` so mount a volume accordingly.\n\n[![Docker Image Version](https://img.shields.io/docker/v/jakewharton/posterbox?sort=semver)][hub]\n[![Docker Image Size](https://img.shields.io/docker/image-size/jakewharton/posterbox)][hub]\n\n[hub]: https://hub.docker.com/r/jakewharton/posterbox/\n\n```\n$ docker run -it --rm\n    -v /path/to/config:/config \\\n    jakewharton/posterbox\n```\n\n#### Docker Compose\n\n```yaml\nversion: '2'\nservices:\n  posterbox:\n    image: jakewharton/posterbox\n    restart: unless-stopped\n    volumes:\n      - /path/to/config:/config\n```\n\n\n### Configuration\n\nThe configuration file allows customization of behavior and specifies the source of content.\nAll top-level keys and sections are optional.\nAn empty configuration file is technically valid, but will result in no content being displayed.\n\n```toml\n# Duration each item is displayed as an ISO 8601 duration string (optional).\n# See https://en.wikipedia.org/wiki/ISO_8601#Durations.\n#  Value: must be positive duration\n#  Default: \"PT15S\" (15 seconds)\nitemDisplayDuration = \"PT10S\"\n\n# Transition between items (optional).\n#  Value: \"none\", \"fade\", \"crossfade\", \"slide-right\", or \"slide-left\"\n#  Default: \"fade\"\nitemTransition = \"slide-right\"\n\n# Use Plex as a content source.\n#  This section is optional but has required keys if it is present.\n[plex]\n# Plex host URL (required).\n#  Value: String containing DNS hostname or IP with protocol and optional port.\nhost = \"http://plexms:32800\"\n# Plex authentication token (required).\n# See https://support.plex.tv/articles/204059436-finding-an-authentication-token-x-plex-token/.\n#  Value: String\ntoken = \"abc123\"\n# Libraries from which to pull posters (optional). No matter the contents of this array,\n# only entries of type \"movie\" or \"show\" will be used.\n#  Value: Array of case-sensitive library names or null to use all available libraries.\n#  Default: null\nlibraries = [ \"Movies\", \"TV Shows\" ]\n# Minimum rating cut-off for poster inclusion (optional). Content with no rating is\n# treated as having a rating of 0. Audience rating takes precedence over critic rating.\n#  Value: Whole number in the range [0, 100]\n#  Default: 0\nminimumRating = 40\n# Duration between synchronizing items from Plex server as an ISO 8601 duration\n# string (optional). See https://en.wikipedia.org/wiki/ISO_8601#Durations.\n#  Value: String containing positive duration\n#  Default: \"PT15M\" (15 minutes)\nsyncIntervalDuration = \"PT30M\"\n```\n\n\n## Development\n\nTo run the latest code build with `./gradlew installDist`.  This will put the application into\n`build/install/posterbox/`. From there you can use the [command-line instructions](#command-line)\nto run.\n\nThe Docker container can be built with `docker build .`.\n\n\n## Posterr\n\nPoster Box was inspired by [Posterr](https://github.com/petersem/posterr) which is a far more\nfeature-filled and customizable tool. Posterr was not able to run smoothly on my Raspberry Pi Zero\ndue to its use of a jQuery-based carousel and creating DOM nodes for every poster when loaded.\nPoster Box has only two sets of DOM elements which are updated when off-screen and animated using\nCSS animations. If you like Poster Box but wish it had more features and integrated with more\ntools you should try Posterr!\n\n\n## License\n\n    Copyright 2022 Jake Wharton\n\n    Licensed under the Apache License, Version 2.0 (the \"License\");\n    you may not use this file except in compliance with the License.\n    You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n    Unless required by applicable law or agreed to in writing, software\n    distributed under the License is distributed on an \"AS IS\" BASIS,\n    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    See the License for the specific language governing permissions and\n    limitations under the License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjakewharton%2Fposterbox","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjakewharton%2Fposterbox","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjakewharton%2Fposterbox/lists"}