diff --git a/.github/workflows/description_update.yml b/.github/workflows/description_update.yml index 02b02ca..b678ca4 100644 --- a/.github/workflows/description_update.yml +++ b/.github/workflows/description_update.yml @@ -28,8 +28,8 @@ jobs: context: . push: true tags: | - binarygeek119/posterr:latest - binarygeek119/posterr:${{ github.run_number }} + binarygeek119/posterrx:latest + binarygeek119/posterrx:${{ github.run_number }} - name: Run a one-line script run: echo Hello, world! - name: Run a multi-line script diff --git a/.github/workflows/testing.yml b/.github/workflows/testing.yml index b60d51e..3a50750 100644 --- a/.github/workflows/testing.yml +++ b/.github/workflows/testing.yml @@ -29,5 +29,5 @@ jobs: context: . push: ${{ github.event_name != 'pull_request' }} tags: | - binarygeek119/posterr:testing - binarygeek119/posterr:${{ github.run_number }} + binarygeek119/posterrx:testing + binarygeek119/posterrx:${{ github.run_number }} diff --git a/Dockerfile b/Dockerfile index 671fa95..595061f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,7 +6,7 @@ RUN apk add net-tools ENV NODE_ENV=production -# Posterr talks to Plex, Jellyfin, Emby, and Kodi over HTTP(S) from settings (no extra image packages). +# PosterX talks to Plex, Jellyfin, Emby, and Kodi over HTTP(S) from settings (no extra image packages). # In Docker, set the media server "host" to a container name on a shared network, or host.docker.internal # (see docker-compose.yml extra_hosts and docker-compose.media-servers.example.yml). # diff --git a/README.md b/README.md index 4508c51..9cae16e 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,10 @@ -# Posterr -## Media display software for Plex, Jellyfin, Emby, Kodi, Sonarr, Radarr, and Readarr. (Just like the display screens in movie theatre foyers) +# PosterX +## Media display software for Plex, Jellyfin, Emby, Kodi, Sonarr, Radarr, and Readarr. (Fork of [Posterr](https://github.com/petersem/posterr) — theatre-foyer style displays for your library.) > **About this repository** -> This is an **AI-assisted fork** of [Posterr](https://github.com/petersem/posterr) by **binarygeek119**. Upstream owns the original design and core product; this repo adds the features in **New in this fork** below. -> **Source:** [github.com/binarygeek119/posterr](https://github.com/binarygeek119/posterr) · **Docker image:** [`binarygeek119/postarr`](https://hub.docker.com/r/binarygeek119/postarr) (`:latest`) -> **Sister project:** [binarygeek119/ubuntudisplayos](https://github.com/binarygeek119/ubuntudisplayos) for Ubuntu-based multi-display kiosk hosts that pair well with Posterr. +> **PosterX** is an **AI-assisted fork** of [Posterr](https://github.com/petersem/posterr) by **binarygeek119**. Upstream owns the original design and core product; this repo adds the features in **New in this fork** below. +> **Source:** [github.com/binarygeek119/posterr](https://github.com/binarygeek119/posterr) · **Docker image:** [`binarygeek119/posterrx`](https://hub.docker.com/r/binarygeek119/posterrx) (`:latest` / `:testing` from CI) +> **Sister project:** [binarygeek119/ubuntudisplayos](https://github.com/binarygeek119/ubuntudisplayos) for Ubuntu-based multi-display kiosk hosts that pair well with PosterX.   @@ -17,8 +17,9 @@   -Join the Posterr Discord channel to get updates and limited support: [https://discord.gg/TcnEkMEf9J](https://discord.gg/TcnEkMEf9J). -Please do not ask the original developer for support when using this fork version of Posterr. +**PosterX maintainer Discord:** [https://discord.gg/vftKQvpT](https://discord.gg/vftKQvpT) — updates and limited support for this fork. +Original Posterr community Discord: [https://discord.gg/TcnEkMEf9J](https://discord.gg/TcnEkMEf9J). +Please do not ask the original Posterr developer for support when using PosterX. For fork support, use GitHub: [https://github.com/binarygeek119/posterr](https://github.com/binarygeek119/posterr). **Default settings password:** `raidisnotabackup` @@ -42,18 +43,18 @@ For fork support, use GitHub: [https://github.com/binarygeek119/posterr](https:/ - Support LED Matrix displays running Awtrix software - Display custom web pages as slides (if web page compatible) - **EXPERIMENTAL!** - Rotate display -90° (for running on display devices, like Firesticks, which do not support portrait rotation) - - Post API (at '/api/sleep') to toggle sleep mode. (Pass in header values `'psw: your Posterr password'` and `'sleep: true|false'`) + - Post API (at '/api/sleep') to toggle sleep mode. (Pass in header values `'psw: your PosterX password'` and `'sleep: true|false'`) - Get API at the same endpoint will return the sleep status without any parsed parameters. - - Supports `CEC` control of a monitor together with the Posterr sleep timer. + - Supports `CEC` control of a monitor together with the PosterX sleep timer. - **TMDB “Now Showing”** list with dedicated **`/now-showing`** view, optional main-poster slides, showtimes, and library fill-in — details under **Display controls (this modified branch)** below. ### New in this fork (recent) -These are additions on top of upstream behaviour (current fork **`package.json`** version is **2.0.0**). +These are additions on top of upstream behaviour (current fork **`package.json`** version is **2.1.0**). | Area | What changed | |------|----------------| | **Release notice** | After an upgrade, a **red banner** on the **home poster view**, **`/now-showing`**, and **settings** pages reminds you that new features shipped. It clears after you open **Settings** and click **Acknowledge there are new features**. Your choice is stored in `settings.json` (`newFeaturesAcknowledgedVersion`); the banner comes back when the app **version string** in `package.json` changes again (any **X.Y.Z** bump). | -| **Settings → About** | Shows that this build is a **binarygeek119** fork, **purely AI-modified**, with a link to **[github.com/binarygeek119/posterr](https://github.com/binarygeek119/posterr)**. Original author credits and upstream links stay in the same tab. | +| **Settings → About** | Identifies this app as **PosterX** (a **binarygeek119** fork of Posterr), **purely AI-modified**, with a link to **[github.com/binarygeek119/posterr](https://github.com/binarygeek119/posterr)**. Original author credits and upstream links stay in the same tab. | | **Settings navigation** | **Sync**, **Cache**, **Now Showing**, and **TMDB API** pages use the **same sidebar and mobile icons** as each other, including **Debug** and **About**, so entries no longer disappear when you switch pages. | | **Ads (main deck + `/settings/ads`)** | When **Enabled**, ad slides rotate with the home posters (**every *n* posters**, optional **only show ads**). Upload images, prices, and optional per-slide backgrounds; metadata in **`config/ads.db`**, files under **`config/ads`**. | | **Dedicated `/ads` view** | Full-screen ad slideshow: **seconds per ad** advances each slide; **seconds on full `/ads` page before returning home** is separate (`0` = manual leave; otherwise **30–86400** seconds then redirect to **`/`**). Optional backdrop from **`config/ads-view`** (`**/custom/ads-view/**`). | @@ -78,7 +79,7 @@ These are additions on top of upstream behaviour (current fork **`package.json`* - **Poster / library sync:** manual **full sync** and **abort** from **Settings → Sync**; optional **About sync** modal. Jellyfin/Emby library paging: optional env **`POSTERR_JELLYFIN_LIBRARY_PAGE_LIMIT`** (integer **50–500**, default **300**) for items per request during large library walks. ### Free community custom posters -Community-sourced, open-use custom poster images for Posterr (and similar apps) live in **[binarygeek119/open-custom-posters](https://github.com/binarygeek119/open-custom-posters)**. Use them in your **`public/custom`** / Docker **`custom`** picture themes; open an issue to request more, or submit a pull request with your art in a folder named for your GitHub username. Discord: [open-custom-posters](https://discord.gg/AEhVjqX4Af). +Community-sourced, open-use custom poster images for PosterX (and similar apps) live in **[binarygeek119/open-custom-posters](https://github.com/binarygeek119/open-custom-posters)**. Use them in your **`public/custom`** / Docker **`custom`** picture themes; open an issue to request more, or submit a pull request with your art in a folder named for your GitHub username. Discord: [open-custom-posters](https://discord.gg/AEhVjqX4Af). --- ## Prerequisites @@ -103,7 +104,7 @@ Create the following directories in your docker folder: ```yaml services: posterr: - image: binarygeek119/postarr:latest + image: binarygeek119/posterrx:latest container_name: posterr environment: TZ: Australia/Brisbane @@ -125,7 +126,7 @@ The **`config`** volume is required not only for **`settings.json`**, but also f | Path (inside container) | Purpose | |-------------------------|---------| -| `config/settings.json` | Posterr settings | +| `config/settings.json` | PosterX settings | | `config/posterr-poster-metadata.db` | Poster / library sync metadata (SQLite) | | `config/now-showing.db` | TMDB **Now Showing** movie list (dedicated `/now-showing` screen and optional main-poster slides) | | `config/ads.db` | **Ads** slide list (titles, prices, paths) for **`/ads`** and the main poster deck | @@ -134,14 +135,14 @@ The **`config`** volume is required not only for **`settings.json`**, but also f | `config/cache/mp3cache/` | Cached TV/movie theme MP3s | | `config/cache/randomthemes/` | Optional random theme storage | -Mount **one host folder** to **`/usr/src/app/config`** (as in the Compose example). Posterr creates `cache/` and subfolders on first use. If this path is not persisted on the host, **settings, poster sync, and cached artwork are lost** when the container is recreated. +Mount **one host folder** to **`/usr/src/app/config`** (as in the Compose example). PosterX creates `cache/` and subfolders on first use. If this path is not persisted on the host, **settings, poster sync, and cached artwork are lost** when the container is recreated. **Older setups** used a separate **`saved`** volume. That layout is deprecated: on the host directory you mount as **`config`**, create **`cache/`** and move in the old **`saved/imagecache`**, **`saved/mp3cache`**, and **`saved/posterr-poster-metadata.db`** (so inside the container they appear as **`config/cache/...`**). #### Media servers (Plex, Jellyfin, Emby, Kodi) in Docker -Posterr only needs **outbound HTTP(S)** to your server — no extra packages in the image. +PosterX only needs **outbound HTTP(S)** to your server — no extra packages in the image. -| Where the server runs | What to enter as **host** in Posterr settings | +| Where the server runs | What to enter as **host** in PosterX settings | |----------------------|-----------------------------------------------| | **Another container** on the same Compose network | The **service name** (e.g. `jellyfin`, `emby`) and that service’s port (often `8096`). | | **Same machine as Docker, outside containers** (typical Kodi / bare-metal Plex) | `host.docker.internal` (with `extra_hosts` as above on **Linux**; Docker Desktop often works without it). | @@ -149,7 +150,7 @@ Posterr only needs **outbound HTTP(S)** to your server — no extra packages in **Kodi:** set server type to **Kodi**, port to Kodi’s **Web server / JSON-RPC** port (often **8080**), and **Token** only if HTTP auth is enabled in Kodi (otherwise leave blank). -Example **Jellyfin + Posterr** on one stack: see [`docker-compose.media-servers.example.yml`](docker-compose.media-servers.example.yml). Start with: +Example **Jellyfin + PosterX** on one stack: see [`docker-compose.media-servers.example.yml`](docker-compose.media-servers.example.yml). Start with: `docker compose -f docker-compose.yml -f docker-compose.media-servers.example.yml up -d` @@ -169,10 +170,10 @@ docker run -d --name posterr \ -e TZ=Australia/Brisbane \ --add-host=host.docker.internal:host-gateway \ --restart=always \ -binarygeek119/postarr:latest +binarygeek119/posterrx:latest ``` -On **Docker Engine 20.10+**, `--add-host=host.docker.internal:host-gateway` lets Posterr reach Plex/Jellyfin/Emby/Kodi running on the **host** (Linux). Omit if you only use container-to-container names on a custom network. +On **Docker Engine 20.10+**, `--add-host=host.docker.internal:host-gateway` lets PosterX reach Plex/Jellyfin/Emby/Kodi running on the **host** (Linux). Omit if you only use container-to-container names on a custom network. #### Details |Option|Details| @@ -181,8 +182,8 @@ On **Docker Engine 20.10+**, `--add-host=host.docker.internal:host-gateway` lets |/docker/posterr/config → `/usr/src/app/config`|**Required.** Holds `settings.json` **and** the **`cache/`** subtree (poster SQLite DB, `imagecache/`, `mp3cache/`). Use a persistent host directory so nothing is lost on container recreate.| |/docker/posterr/custom|Mount for **custom picture** themes under `public/custom` (omit if you do not use them)| |Ports|Change first part to a different port if needed. e.g. 9876:3000| -|BASEPATH|`"/your-prefix"` for reverse proxies that serve Posterr under a subpath. Omit or leave empty if unused.| -|extra_hosts `host.docker.internal`|Helps Posterr reach **Jellyfin, Emby, Kodi, or Plex on the Docker host** from inside the container (Linux). Requires Docker Engine **20.10+**. | +|BASEPATH|`"/your-prefix"` for reverse proxies that serve PosterX under a subpath. Omit or leave empty if unused.| +|extra_hosts `host.docker.internal`|Helps PosterX reach **Jellyfin, Emby, Kodi, or Plex on the Docker host** from inside the container (Linux). Requires Docker Engine **20.10+**. | ### Unraid - Install via **Docker** using the Compose or `docker run` examples above, or a Community Applications template if one matches this image. @@ -193,7 +194,7 @@ On **Docker Engine 20.10+**, `--add-host=host.docker.internal:host-gateway` lets --- ## Updates - - **Settings** may show an **update available** notice when Posterr’s remote version check reports a **newer version** than this install (see startup logs / settings UI). + - **Settings** may show an **update available** notice when PosterX’s remote version check reports a **newer version** than this install (see startup logs / settings UI). - **This fork:** after upgrading to a new **app version**, a **red “new features”** banner appears until **Settings → Acknowledge there are new features** (see **New in this fork**). - Optional: [Watchtower](https://containrrr.dev/watchtower/) or your stack’s policy for container updates. @@ -201,7 +202,7 @@ On **Docker Engine 20.10+**, `--add-host=host.docker.internal:host-gateway` lets ## Setup Get to the settings page in a number of ways: - On initial load, you will be prompted. - - Change the URL to _'http://hostIP:9876/settings'_ (where `hostIP` is the IP number of the machine that Posterr is installed on. Change the port number if you set a different value. 3000 is the default for the binary executables) + - Change the URL to _'http://hostIP:9876/settings'_ (where `hostIP` is the IP number of the machine that PosterX is installed on. Change the port number if you set a different value. 3000 is the default for the binary executables) - Clicking on the top banner title of any slide. - If on the 'no content' page, then click this text @@ -225,12 +226,12 @@ Get to the settings page in a number of ways: - Low resource usage. Memory: 20-35mb, Diskspace: ~75mb, CPU: < 1% (running on a Synology NAS with a Celeron processor) - Checks for updates in Now Screening / Playing every 10 seconds (Will not display updates until browser refreshed or all slides cycled through) - Browser-based, so can run the app on one machine and a browser on another. - - Browser connectivity checks and auto-reconnect when the Posterr app restarts. (eg During container updates) + - Browser connectivity checks and auto-reconnect when the PosterX app restarts. (eg During container updates) - Supports screen resolution heights from 320 pixels to around 3500 pixels. - Supports reverse proxy setup for wildcard dns or alternate base path. - Built-in recovery features should the Poster app, or your media server, go offline. - > Please see the [Posterr Wiki](https://github.com/petersem/posterr/wiki/Posterr-Configuration) for more information. + > Please see the [upstream Posterr wiki](https://github.com/petersem/posterr/wiki/Posterr-Configuration) for more information. --- ## Troubleshooting @@ -238,8 +239,9 @@ Should you encounter a problem, the solution may be listed [HERE](https://github --- ## Support - - Join the Posterr Discord channel to get updates and limited support: [https://discord.gg/TcnEkMEf9J](https://discord.gg/TcnEkMEf9J). - - Do not ask the original developer for support when using this fork version of Posterr. + - **PosterX maintainer Discord:** [https://discord.gg/vftKQvpT](https://discord.gg/vftKQvpT) (this fork). + - Original Posterr community: [https://discord.gg/TcnEkMEf9J](https://discord.gg/TcnEkMEf9J). + - Do not ask the original Posterr developer for support when using PosterX. - For fork support, use GitHub: [https://github.com/binarygeek119/posterr](https://github.com/binarygeek119/posterr). --- @@ -254,7 +256,7 @@ Matt Petersen (April 2021) --- ## Technical Details -Posterr uses the following: +PosterX uses the following: - Node & Node Express - The awesome [Node-Plex-APi](https://github.com/phillipj/node-plex-api) - Jquery @@ -269,7 +271,7 @@ Posterr uses the following: --- ## Notice -> Posterr depends on third-party applications and services. Some features may fail temporarily or permanently if those dependencies are unavailable or become incompatible. This software comes with no warranty. Images and themes you download may be copyrighted by their respective owners. +> PosterX depends on third-party applications and services. Some features may fail temporarily or permanently if those dependencies are unavailable or become incompatible. This software comes with no warranty. Images and themes you download may be copyrighted by their respective owners. --- ## License diff --git a/classes/core/posterMetadataDb.js b/classes/core/posterMetadataDb.js index 8de2d0a..4536e54 100644 --- a/classes/core/posterMetadataDb.js +++ b/classes/core/posterMetadataDb.js @@ -252,7 +252,7 @@ function logLegacySavedImageHint() { if (n > 0) return; console.log( new Date().toLocaleString() + - " Posterr: cached images are still under saved/imagecache; move files to config/cache/imagecache (and mp3cache → config/cache/mp3cache), or copy your old saved/ tree into config/cache/." + " PosterX: cached images are still under saved/imagecache; move files to config/cache/imagecache (and mp3cache → config/cache/mp3cache), or copy your old saved/ tree into config/cache/." ); } catch (e) { /* ignore */ diff --git a/classes/mediaservers/embyJellyfinBase.js b/classes/mediaservers/embyJellyfinBase.js index 5d66ef7..8d9d28e 100644 --- a/classes/mediaservers/embyJellyfinBase.js +++ b/classes/mediaservers/embyJellyfinBase.js @@ -331,7 +331,7 @@ class EmbyJellyfinBase { _mediaBrowserAuthorizationHeader(key) { const ver = (posterrPackage && posterrPackage.version) || "1.0"; const tok = String(key).replace(/\\/g, "\\\\").replace(/"/g, '\\"'); - return `MediaBrowser Client="Posterr", Device="Posterr", DeviceId="posterr", Version="${ver}", Token="${tok}"`; + return `MediaBrowser Client="PosterX", Device="PosterX", DeviceId="posterx", Version="${ver}", Token="${tok}"`; } /** @@ -404,7 +404,7 @@ class EmbyJellyfinBase { : ""; if (!key) { throw new Error( - `${this.appName}: no API key in settings. Create one in the server dashboard (Jellyfin: Dashboard → API Keys) and paste it into Posterr’s server token field.` + `${this.appName}: no API key in settings. Create one in the server dashboard (Jellyfin: Dashboard → API Keys) and paste it into PosterX’s server token field.` ); } const params = { ...(options.params || {}) }; @@ -451,9 +451,9 @@ class EmbyJellyfinBase { const status = e.response && e.response.status; if (status === 401) { if (this._usesLegacyEmbyTokenQueryAuth()) { - e.message += ` | ${this.appName}: HTTP 401 — wrong or revoked API key, or the key lacks access. Regenerate the key in the server dashboard and update Posterr. If you use a reverse proxy, ensure it forwards the X-Emby-Token header (Posterr also sends api_key on the query string).`; + e.message += ` | ${this.appName}: HTTP 401 — wrong or revoked API key, or the key lacks access. Regenerate the key in the server dashboard and update PosterX. If you use a reverse proxy, ensure it forwards the X-Emby-Token header (PosterX also sends api_key on the query string).`; } else { - e.message += ` | Jellyfin: HTTP 401 — invalid or revoked API key (Dashboard → API Keys), or the server blocked the request. Posterr uses Authorization: MediaBrowser (required on Jellyfin 10.11+ when legacy X-Emby-Token is disabled). Ensure your reverse proxy forwards the Authorization header if you use one.`; + e.message += ` | Jellyfin: HTTP 401 — invalid or revoked API key (Dashboard → API Keys), or the server blocked the request. PosterX uses Authorization: MediaBrowser (required on Jellyfin 10.11+ when legacy X-Emby-Token is disabled). Ensure your reverse proxy forwards the Authorization header if you use one.`; } } const d = e.response && e.response.data; diff --git a/config/posterr-poster-metadata.db b/config/posterr-poster-metadata.db index 4b2c0e7..8f233ff 100644 Binary files a/config/posterr-poster-metadata.db and b/config/posterr-poster-metadata.db differ diff --git a/docker-compose.debug.yml b/docker-compose.debug.yml index b7b35d1..72415c4 100644 --- a/docker-compose.debug.yml +++ b/docker-compose.debug.yml @@ -5,7 +5,7 @@ version: "3.8" services: posterr: - image: posterr + image: posterrx build: context: . dockerfile: ./Dockerfile diff --git a/docker-compose.media-servers.example.yml b/docker-compose.media-servers.example.yml index eace2de..0553955 100644 --- a/docker-compose.media-servers.example.yml +++ b/docker-compose.media-servers.example.yml @@ -1,12 +1,12 @@ -# Example: Posterr + Jellyfin on one Docker network. +# Example: PosterX + Jellyfin on one Docker network. # Copy to docker-compose.override.yml or merge into your stack, then: # docker compose -f docker-compose.yml -f docker-compose.media-servers.example.yml up -d # -# If you use this file without docker-compose.yml, add volume mounts for Posterr: +# If you use this file without docker-compose.yml, add volume mounts for PosterX: # config → /usr/src/app/config # config → /usr/src/app/config (includes cache/, ads/, ads-view/, poster DBs, etc.) # -# Posterr settings: +# PosterX settings: # Server type: Jellyfin # Host: jellyfin (service name — NOT localhost) # Port: 8096 @@ -14,9 +14,9 @@ # Libraries: names of your Jellyfin libraries (comma-separated) # # Emby: use image emby/embyserver (or linuxserver/emby), service name e.g. emby, port 8096, API key in Emby. -# Kodi: usually on the Docker host or an HTPC — in Posterr settings use host.docker.internal (with extra_hosts in +# Kodi: usually on the Docker host or an HTPC — in PosterX settings use host.docker.internal (with extra_hosts in # docker-compose.yml on Linux), or the host LAN IP. Port: Kodi HTTP control port (often 8080). Token: blank or user:pass. -# (Running Kodi inside Docker is uncommon; if you do, put Posterr on the same network and use the Kodi service name.) +# (Running Kodi inside Docker is uncommon; if you do, put PosterX on the same network and use the Kodi service name.) version: "3.8" diff --git a/docker-compose.yml b/docker-compose.yml index 6c6e735..0596adc 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,15 +1,15 @@ -# Posterr — requires Docker Engine 20.10+ for host.docker.internal (Linux). -# Jellyfin / Emby / Kodi / Plex are reached over HTTP from Posterr settings (no extra container packages). +# PosterX — requires Docker Engine 20.10+ for host.docker.internal (Linux). +# Jellyfin / Emby / Kodi / Plex are reached over HTTP from PosterX settings (no extra container packages). # # Volumes: # config/ — settings.json, cache/, ads/, ads-view/, custom-pictures/, SQLite DBs (mount whole config dir). -# Optional: public/custom — legacy uploads; on first run Posterr copies into config/ if those folders are empty. +# Optional: public/custom — legacy uploads; on first run PosterX copies into config/ if those folders are empty. version: "3.8" services: posterr: - image: posterr + image: posterrx container_name: posterr build: context: . diff --git a/index.js b/index.js index ffdeccb..21b8fa5 100644 --- a/index.js +++ b/index.js @@ -74,7 +74,7 @@ if(args.length == 2){ } console.log("-------------------------------------------------------"); -console.log(" POSTERR - Your media display"); +console.log(" POSTERX - Your media display"); console.log(" Developed by Matt Petersen - Brisbane Australia"); console.log(" "); console.log(" Version: " + pjson.version); @@ -423,7 +423,7 @@ if (!fs.existsSync(dir)) { fs.mkdirSync(dir); } -// Prevent multiple Posterr processes from running at the same time. +// Prevent multiple PosterX processes from running at the same time. const APP_LOCK_FILE = path.join(CONFIG_ROOT, "posterr-app.lock"); let appLockHeld = false; @@ -471,13 +471,13 @@ function acquireAppLockOrExit() { appLockHeld = true; console.log( new Date().toLocaleString() + - " Posterr: removed stale process lock and continued startup" + " PosterX: removed stale process lock and continued startup" ); return; } console.log( new Date().toLocaleString() + - " ✘✘ WARNING ✘✘ - Another Posterr instance is already running (pid " + + " ✘✘ WARNING ✘✘ - Another PosterX instance is already running (pid " + lockPid + "). Exiting this process." ); @@ -3191,7 +3191,7 @@ async function startup(clearCache) { console.log(""); } else { - console.log("*** You are running the latest version of Posterr ***"); + console.log("*** You are running the latest version of PosterX ***"); console.log(""); } } @@ -4488,7 +4488,7 @@ app.get(BASEURL + "/ads/data", (req, res) => { } }); -// Used by the web client to check connection status to Posterr, and also to determine if there was a cold start that was missed +// Used by the web client to check connection status to PosterX, and also to determine if there was a cold start that was missed app.get(BASEURL + "/conncheck", (req, res) => { res.send({ "status": cold_start_time, "sleep": sleep }); diff --git a/launch-posterr.ps1 b/launch-posterr.ps1 index 80d804c..0e38c3b 100644 --- a/launch-posterr.ps1 +++ b/launch-posterr.ps1 @@ -17,5 +17,5 @@ $env:POSTERR_SYNC_DEBUG = "true" $repoRoot = Split-Path -Parent $MyInvocation.MyCommand.Path Set-Location $repoRoot -Write-Host "Starting Posterr from $repoRoot ..." +Write-Host "Starting PosterX from $repoRoot ..." node ".\index.js" diff --git a/launch-posterr.sh b/launch-posterr.sh index e083a62..f3accf0 100644 --- a/launch-posterr.sh +++ b/launch-posterr.sh @@ -10,5 +10,5 @@ export POSTERR_JELLYFIN_LIBRARY_FIRST_PAGE_TIMEOUT_MS="45000" export POSTERR_JELLYFIN_LIBRARY_PAGE_LIMIT="150" export POSTERR_SYNC_DEBUG="true" -echo "Starting Posterr from $SCRIPT_DIR ..." +echo "Starting PosterX from $SCRIPT_DIR ..." node "./index.js" diff --git a/myviews/ads.ejs b/myviews/ads.ejs index 806806a..03b0e24 100644 --- a/myviews/ads.ejs +++ b/myviews/ads.ejs @@ -4,7 +4,7 @@ -
Use this page to help debug any connectivity issues with Posterr
+Use this page to help debug any connectivity issues with PosterX
+Support (maintainer): Discord — discord.gg/vftKQvpT
Posterr Verson: <%=version%>
+PosterX Verson: <%=version%>
Open server logs for output. Media server tests match your Server type (Plex, Jellyfin, Emby, or Kodi). On-demand test lists libraries/sources, then up to 5 titles from the first — same idea as the legacy Plex check.
diff --git a/myviews/header.ejs b/myviews/header.ejs index fc5e239..b8121a7 100644 --- a/myviews/header.ejs +++ b/myviews/header.ejs @@ -2,7 +2,7 @@ @@ -48,7 +48,7 @@ <%}%> -