Plex Movie Poster Display

Sorry for the lack of an update. With everything going on I have not had time to work on this project as much as I wanted. However with the situation starting to get back to normal(ish), I hope to finish the updates I started and work towards the next release. Thank you to everyone for the nice comments and the great suggestions.

avatar

Matt

I Do Stuff
Version 2
Please provide feedback, suggestions, or issues.
Instructions updated for Raspbian Buster with desktop.
The comments are open.

About

Plex Movie Poster Display is a side project I started a few years ago. I always thought it would be cool to have a display outside my media room that would show the poster of the movie or TV show that was currently playing. I searched the internet and found similar projects, which were all windows programs.  There was just one problem… I wanted to run this project on a Raspberry Pi 3 running Linux. So, unsatisfied with the solutions I found online, I decided to build my own.

This script scraps http://IP_ADDRESS_OF_PLEX_SERVER>:32400/status/sessions and displays the poster, current progress, and description of the currently playing movie or TV show on a screen. If the client is not playing any media the script shows random movie posters from the Plex Server.

Items Used

Plex
Raspberry Pi 3 B+
Raspberry Pi 3 B+ Case (With Fan)
SD Card
Wireless Keyboard
2 Pack 1.5 Ft HDMI Cables
A display to show the posters.
Plex Movie Poster Display Code (GitHub)

Prerequisites

A working Plex Server.
Your X-Plex-Token.

PMPD Installation

Sorry, there is no upgrade path from PMPD version 1 to version 2. There
are just to many changes. Please backup your PMPD directory and
install fresh.

Download and install Raspbian Buster with desktop onto SD card.
(This is outside the scope of the how-to. If you need help please follow the installation instructions here.)

To enable ssh you will need to create a blank file called ‘ssh’ on the SD Card before installing it into you Raspberry Pi.

To enable wireless and ssh on your Raspberry Pi without a monitor, check out my howto here.

Note: I recommend changing the default Raspberry Pi password before continuing.

Install Required software packages

sudo apt update && sudo apt upgrade -y
sudo apt-get install nginx php-fpm php-xml git unclutter -y

Setup PHP with NGINX

cd /etc/nginx
sudo nano sites-enabled/default
  - Add index.php to line with index index.html index.htm index.nginx-debian.html;
    (Around line 44)

Scroll Down, uncomment the following lines, and save the file.

location ~ \.php$ {
  include snippets/fastcgi-php.conf;
  fastcgi_pass unix:/run/php/php7.3-fpm.sock;
}

Setup PHP information file.

cd /var/www/html/
sudo mv index.nginx-debian.html index.php
sudo nano index.php
  - Add <?php echo phpinfo(); ?> to top of file.
  - Save file.

Restart / Start NGINX and Test

sudo /etc/init.d/nginx reload

Opening a browser to http://<ip_address_of_your_raspberry_pi> . If everything is installed correctly. you should see the php information screen similar to this ( PHP 7.3.4-2 has been tested and works ).

Example PHP Info Page

Increase NGINX File Size Limitation

By default NGINX limits the file size you can upload (I think it defaults to 1MB). I recommend increasing the allowed file size so you can upload larger custom images.

sudo nano /etc/nginx/nginx.conf

- add the follow in the http section after types_hash_max_size 2048;
client_max_body_size 25M;

- Restart NGINX
sudo /etc/init.d/nginx reload

Opening a browser to http://<ip_address_of_your_raspberry_pi> and make sure NGINX is still working properly .

Increase PHP upload_max_filesize

sudo nano /etc/php/7.3/fpm/php.ini

- Change upload_max_filesize (Around line 845)
upload_max_filesize = 25M

- Save File
- Reboot Raspberry Pi (Might not need to reboot, but I had to for change to work).

Install Plex Movie Poster Display

Get Code from GitHub

cd /your_preferred_directory 
sudo git clone https://github.com/MattsShack/Plex-Movie-Poster-Display.git
cd Plex-Movie-Poster-Display
sudo cp -R * /var/www/html
  - You can replace index.php used for in the testing above.

Permissions

sudo chmod -R 774 /var/www/html/
sudo chown -R pi:www-data /var/www/html/

First Time Use

Open Browser to http://<ip_of_raspberry_pi>/admin.php and login with username admin and password password1 .

Login Page

Chromium Kiosk Mode on Startup

Pre Raspbian Buster: Create a .desktop file with the correct configuration to hide the mouse pointer (needs unclutter installed), start chromium in kiosk mode, and display posters.

sudo nano /etc/xdg/autostart/chromium.desktop

-Add the following to the file
[Desktop Entry]
Type=Application
Exec=/usr/bin/unclutter & /usr/bin/chromium-browser --noerrdialogs --disable-session-crashed-bubble --disable-infobars --kiosk http://IP_ADDRESS_OF_RASPBERRY_PI
Hidden=false
X-GNOME-Autostart-enabled=true
Name[en_US]=AutoChromium
Name=AutoChromium
Comment=Start Chromium

-Save File
-Reboot to Test

Raspbian Buster: After upgrading to Raspbian Buster I was not able to use the .desktop file method to auto start Chromium. Instead I had to create a directory and file. I am not sure if this method needs unclutter installed so I left it in the instructions.

mkdir -p /home/pi/.config/lxsession/LXDE-pi/
nano /home/pi/.config/lxsession/LXDE-pi/autostart

Add the following 
@chromium-browser --kiosk [PMPD IP Address]

-Save File
-Reboot to Test

Raspberry Pi Boot Config Settings

 ( Use at own risk ) 
sudo nano /boot/config.txt

-Remove black border from around screen. Uncomment 
disable_overscan=1

- Rotate Screen 90 Degrees
display_rotate=1

- Remove Raspberry Pi Power Warning
avoid_warnings=2

- Fix color depth on Raspberry Pi
framebuffer_depth=32
framebuffer_ignore_alpha=1

Description Scrolling Example

Change Logs

v2 Beta 1
PHP7 compatibility.
Support for multiple Movie Sections.
Completely new admin page.
Basic username and password protection of admin page.
New options for font size and colors.
New options for font outline size and colors.
New poster stats and cache clearing.
New custom image stats and cache clearing.
New options for multiple custom images uploaded. (Can still only select one for now).
First try at installation documentation.

v2 Beta 2
Login page now shows message if username / password does not match.
New Progress bar for Movies and TV Shows.
New options for Progress Bar size and colors.
Add menu to admin page with links to sections.
Optimized some code. Still need to do more…

v2 Beta 3
Add custom poster transition timer.
Changed font size from select to input. (This will allow for a lot more customization.)
Fixed “Use of undefined constant” error.
Clean up unused assets.
More optimization.

v2 Beta 4
A lot of changes in this release. Prior Beta releases refresh the top, middle, and bottom divs every time the Poster Transition Speed timer expired. This would cause scrolling bottom text to refresh also, cutting off text or causing bad transition. I am working on a solution, but so far I am not happy with it.
Code optimization.
– Movies and TV Show parsing is no longer two different sections.
– Rearranged some code.
Add status.php to keeps status / stats of script. Will be used more in the future.
Add Scrolling bottom text.
– Using jquery.marquee and jquery.easing
Move Poster Transition Speed location.
Change Free space is now shown in GB.
Logging into admin page and saving config, even without changing anything, will upgrade the config file.

v2 RC1
Recommend a fresh Plex Movie Poster Display install with this release.
Add Username and Password change to admin page.
Add change font size and color for bottom text while scrolling is enabled.
Add Coming Soon selection for UnWatched, All, Recently Added, and Newest.
Fix more typos.
Fix clean cache directory error message.
More optimization.

v2 RC2
Add no-cache, no-store, must-revalidate options to admin.php page.
Fix blank image while playing media with no art (Example: Live TV).

v2 Final
RC2 is now v2 Final.

Website Changes
9.16.2019
Updated instruction to match Raspbian Buster with desktop.
Updated Chromium Kiosk Mode on Startup.
Added PHP 7.3 tested version.
Fix typos.

5.6.2019
Add Increase NGINX File Size Limitation to page.
Add Screenshots.
Fix some Typos.

5.7.2019
More Typos.
Add Increase PHP upload_max_filesize to page.

5.10.2019
Add unclutter to required software packages. This will hide the mouse.
Move Raspberry Pi Settings ( Use at own risk ) to Raspberry Pi Boot Config Settings.
Add Uncomment disable_overscan to Raspberry Pi Boot Config Settings.
Add Chromium Kiosk Mode How-to|

5.12.2019
Beta 4 Release
Add jquery.marquee to credits.

5.13.2019
Add Beta 5 Section. Maybe the last beta with new features. Need to move to RC1 and do some polish / optimizations before final 2.0 release.

5.14.2019
Beta 4 now RC1.
Updated First Time Use section.
This maybe the final release before the final.

5.18.2019
Update About Section
Add Description Scrolling Example video.

5.24.2019
Change v2 RC2 to v2 Final.
Change To Do to v2.1 To Do.
Add Future To Do.
Add Ideas for Future Releases.

5.29.2019
Update Ideas for Future Releases


5.6.2019
Add Increase NGINX File Size Limitation to page.
Add Screenshots.
Fix setup username / password typo.

5.7.2019
More Typos.
Add Increase PHP upload_max_filesize to page.

5.10.2019
Add unclutter to required software packages. This will hide the mouse.
Move Raspberry Pi Settings ( Use at own risk ) to Raspberry Pi Boot Config Settings.
Add Uncomment disable_overscan to Raspberry Pi Boot Config Settings.
Add Chromium Kiosk Mode How-to|

5.12.2019
Beta 4 Release
Add jquery.marquee to credits.

5.13.2019
Add Beta 5 Section. Maybe the last beta with new features. Need to move to RC1 and do some polish / optimizations before final 2.0 release.

5.14.2019
Beta 4 now RC1.
Updated First Time Use section.
This maybe the final release before the final.

5.18.2019
Update About Section
Add Description Scrolling Example video.

5.24.2019
Change v2 RC2 to v2 Final.
Change To Do to v2.1 To Do.
Add Future To Do.
Add Ideas for Future Releases.

5.29.2019
Update Ideas for Future Releases

v2.1 To Do

Font Outline Size and Color for the Bottom Text.
Installation script for Raspberry Pi.

Ideas for Future Releases

Art mode.
Options to display audio and video information.
Aspect ratio detection / fix (Example 3:2).
Information from items being played from music section.

Credits

Plex Movie Poster Display is built using Bootstrap , JQuery, Popper.js, jQuery – Marquee and bootstrap-colorpicker. The admin page is based on the Bootstrap “Checkout Example“.

PLEX, PLEX PASS, myPLEX, PLEX MEDIA SERVER, PLEX MEDIA CENTER, PLEX MEDIA MANAGER, PLEX HOME THEATER, PLEX TV, PLEX.TV, the Plex Play Logo (“>” in stylized format) are trademarks that are the exclusive property of Plex, Inc.

147 Replies to “Plex Movie Poster Display”

  1. So, I get to the new PMPD Login page and after having changed my username and password info in admin.php, when I login with those credentials, I get the green checkmarks for the username and password but it doesn’t actually move onto another page, stays at the login page.

    1. Well, That is not good.

      1. Does your username or password have special characters? If so, does the login work if you remove the special characters?
      2. If you change the username / password back to default does it work?
      3. Is the path to the files in the root of /var/www/html/ ?
      4. Would you mind sending me an example of your config? If so I will send you an email directly (No need to post here).

      Thank you for testing. I am getting close to releasing beta 2 and would like to fix the issue as soon as possible.

      Thank you again,
      -Matt

  2. Nevermind Matt, I got it working. I’d like to make a couple requests for future updates…
    1. the option to be able to add the Font Outline Size and Color for the Bottom Text as well.
    2. a dropdown or field box to change the amount of time between poster transitions. I prefer 10000-15000 milliseconds.
    3. Custom Image State – Enabled by default (recommend: Disabled) messed me up for quite a few minutes as to why my posters weren’t displaying after updating all the settings.
    4. Fingers crossed that future updates will be simpler!

    Thank you for the improvements and continued work on this project!
    Love being able to use multiple movie sections and the Stats section!

    1. Glad you got it working.
      1. Adding it to the list.
      2. That is in the works already. 🙂
      3. I think it should be disabled by default. I will check and fix if necessary.
      4. What do you suggest?

      Also I just released Beta 2, so when you want to try the update let me know if you have any issues. I would appreciate it.

      Thank you,
      -Matt

  3. I like the sound of the Text Scrolling for long descriptions. Look forward to trying that out when available. What I meant by simpler updating is… LOL I’m not sure now what to type into terminal to make the update to Beta 2 that you released. Honestly, I shock myself every time I work on this that I am able to find ways to get this working! LOL Thanks again. Also, FYI even though I’m selecting at the bottom of this form to Notify me of new posts by email, I am not getting anything and I only realize you responded by coming back to this page and refreshing. Not going into Spam, checked there. Thanks again Matt!

  4. The progress bar is beautiful!
    1. Note that default color for the Now Showing Bottom Font color text was black #000000 so the text wasn’t visible at first. I like the description in white #FFFFFF (manually changed it on the admin page).
    2. Recommend adding up to 75px for Font Sizes for those using larger screens. I am currently using the max 60px for most of the sizes except Now Showing Bottom text.
    3. And for the same reason maybe adding up to 25px for the Progress Bar height.
    4. Adding on the admin page the max photo size for the Custom Image upload.
    5. Option to show ALL movie posters within the sections, instead of just Unplayed ones.

    Hope that’s some helpful advice!

    1. Thank you. I think the progress bar feature that was needed. Glad you like.

      1. Noted. Added to list.
      2. Beta 3 will fix this. I was not happy with the select options, so I changed them.
      3. Beta 3 or 4 will fix this.
      4. I think this is a NGINX configuration option. I need to write up how to edit NGINX to allow larger file uploads.
      5. Good idea.

      Yes. I appreciate all the feedback. Thank you for taking the time to leave it. 🙂

      1. Addition of the Increase PHP upload_max_filesize stepsnow allows me to use photos that are 2.5MB and 3MB.

      2. Suggestion… Ability to add multiple Plex Client IP addresses that would cause the Now Showing to enable. It’s very rare that multiple instances of Plex would be running at the same time in my household but I guess if that were the case then which ever came 1st in the order of the IP addresses would display the Now Showing poster. Could this be possible Matt?

  5. Sounds great Matt, I’ll keep an eye out for Beta3.
    If I think of anything else, I’ll be sure to post it here.

  6. Beta 3 trial… Great improvements!

    Poster transition speed… I set mine to 10 secs and I timed the transitions and they’re still about 29 secs between switching. I also tried 5 and 15 secs and it still switches around 29 secs.

    Aesthetically on the PMPD Admin page, I would suggest moving the Poster Transition Speed to be the 1st selection under the Coming Soon Configuration, but that’s minor and no big deal.

    Now Showing settings and display look perfect. Hoping for scrolling text descriptions which would make it FLAWLESS!

    I ran the Increase NGINX File Size Limitation as posted and reloaded Nginx, it still did not allow me to upload a 2.2MB photo but this time I didn’t get the warning message that the file was too big so it just looked like it didn’t do anything.

    WOW! This keeps getting better Matt!
    Looking forward to the Font Outline Size and Color for Coming Soon and Custom Image Bottom Text.

    1. Thank you.

      Poster Transition Speed: I checked mine and it looks like it is working correctly. Can you make sure that you have the latest index.php file. The main changes for poster transition speed where in that file. Also you will need to restart / refresh the main page on your display to reload the index.php file for the change to take effect. (This only needs to be done if that file is edited. Usually only after an upgrade).

      Aesthetics: Not sure the location you are referring too. I had it in Server Configuration originally, but thought that seemed wrong.

      Now Showing: Thank you. Glad you like. I will be working on scrolling text next. Shooting for Beta 5.

      NGINX File Size Limitation: I think php.ini might also need a change. I will look for that setting and add it to the page.

      Thank you for testing and providing feedback. Beta 4 is already in the works.

      -Matt

      1. Thanks Matt, the reboot worked and the poster transition is switching at the correct intervals. I noticed that after changing the seconds and using the Update Settings button, it still requires a reload or the amount of time will not take immediate effect.

        What I meant regarding aesthetics of the admin page was moving the Poster Transition Speed above the Coming Soon Top Text Title and field box as seen described here: https://i.imgur.com/5bD0BEt.png

        I’ll await Beta 4!

  7. Question about Text Scrolling, when Enabled it will display at font size 30 (I believe that’s the size) and that can’t be changed when scrolling enabled, only when disabled, correct?

    I noticed that in order to get the scrolling to work for me the first time, I had to Enable & Update, Disable & Update, and Enable & Update. A Pi reboot did not help after the first Enable & Update, but it’s working for me now.

    Typo on Admin page: Scolling Text… missing the ‘r’

    Awesome sauce!!! Just keeps getting better.
    Reminder of the ALL movies selection, as opposed to just Unplayed movies for a future update. Thanks again for all the work on this.

    1. Just learned that this is also the case with the username and password change. The login will only go into effect for me after I login with the default username & password, then Logout and use my new login credentials. A reboot of the Pi did not help this issue either.

        1. Glad you like it. I like the clip you uploaded :). It was a lot of work and needs some more tweaking, but I think it is 90% the way there.
          I am going to try to figure out a way to allow font size changes without disabling and re-enabling.

          Thank you for testing.

          -Matt

      1. This will be fixed in the next release. There will be an option to change username and password from the admin page.

        -Matt

  8. Not sure if u saw this reply, it mistakenly posted at the top…
    Suggestion… Ability to add multiple Plex Client IP addresses that would cause the Now Showing to enable. It’s very rare that multiple instances of Plex would be running at the same time in my household but I guess if that were the case then which ever came 1st in the order of the IP addresses would display the Now Showing poster. Could this be possible Matt?

    1. Thank you for the suggestion. Not sure how to do this.. yet. I might work on it soon as Version 2 is complete.

      -Matt

  9. PMPD2 RC1 Trial…
    Huge thanks for the ability to change the font size for the scrollable text… Works great!The username and password change was much simpler this time around. I really like the options of Newest, Recently Added, All, & Unwatched, however I haven’t been able to get Newest to work. I tried a fresh install of everything and multiple reboots. I would think Newest would be films from 2019 and maybe 2018 but even a movie like Matrix showed up as well. Where does Newest get it’s movie list from in Plex? Does it mean Newest to Plex or newest out? Unwatched seems to work properly. Unfortunately, my Plex Recently Added list has over 1500 movies that somehow include movies I added along time ago to Plex so it’s hard to tell if that option is working properly. ALL is definitely working cause even movies Marked as Played are displaying. Great stuff Matt!

  10. Holy smokes… I just realized this works with Plex Client IP addresses for remote users! Swwweeet! Did you know this Matt?
    Wow, now I really wish it would allow multiple client IP addresses separated by a comma. I tried already yesterday, it didn’t work. LOL 😉

    1. Yes. 🙂 It works with any client IP address, but only one client IP address can be assigned. I may look into changing this once the final version 2 is out.

  11. Hey Matt, just noticed an issue. I use trailers and a pre-roll before every unplayed film starts, while those are playing, PMPD2 will display Now Showing, the progress bar with a blank black display with a tiny image icon like an image is missing. LMK if you need a video to see what I mean if you’re not able to test it yourself.

    1. That is good to know. I don’t us pre-roll, I have always wanted too but never found a good place to make one for me… , but I think I can test with a random short video. Now that you bring this up, this issue might also happen while watching Live TV. I will test both.

      Thank you!
      -Matt

      1. Trailer and pre-roll blank image fixed on Now Showing as noted in RC2.
        Not sure I understand the other update/fix:
        “Add no-cache, no-store, must-revalidate options to admin.php page.”
        Thanks once again Matt!

  12. Hey,

    This is really cool, I’d been meaning to set this up but never got around to it. Awesome work.

    Quick question though. Is there a specific screen size this is meant for because it doesn’t seem to scale properly on either of the displays I’ve tried it on.

    On one the bottom summary text is a single line, on another the poster fills right to the bottom.

    Cheers!

    1. It should work on most screen sizes. The middle div, the div that is used to show the poster, is set to scale to %100 width. This usually helps the poster display properly while minimizing distortion.
      What sizes are the screens you are using? Are they TVs or computer monitors? Also do you know what resolution they are running at?

      -Matt

      1. The only one I can say for sure was 1920×1200. The other was a Raspberry Pi plugged into a 34″ ultrawide (but didn’t use the full resoltion) that I’ve since unplugged so can’t say for sure.

        The tablet I used, once changed to 1920×1080, showed the scrolling text properly.

          1. I will see what I can do about different aspect ratios. I have an idea, but I am not sure it will work. Adding it to my to do list :).

            -Matt

  13. Thanks for working on this Matt. I’ve set this up, and most of it works great, however when nothing is playing, it doesn’t cycle through random posters, it’s just black.

    I’m not sure if it’s related, but I did have to make some small tweaks when installing. The guide doesn’t reflect it, but I needed to change a few instances of PHP 7.0 and 5.0 to 7.3 in order for it to work. Let me know if you have any suggestions. Thanks again!

    1. Sorry that you are having trouble.

      Assuming you followed the installation on the site; Can you please ssh to the box, change directory to /var/www/html, and run php -f getData.php when you are seeing the blank screens? Are there any errors? Is the image path valid in the middle div?

      Are you running this on a Raspberry Pi with fresh install of the latest Raspbian?

      -Matt

    1. Ahh, I think I might know the issue. The Plex Movie Sections is the section number (Example: 2) not name. I need to make that clearer in the instructions. Please try setting the correct section number for your movie section(s) and let me know if that helps

  14. love for the ability to have the Custom Images rotate every few posters at random
    i have made a poster for my “theater” https://imgur.com/6elx1UM

    also think that having it rotate every x posters would be great. being able to set it
    that way you hcan have to go in between posters
    like
    sherk 1 – custom – popeye – custom –
    sherk 1 – sherk 2 – popeye – custom – bttf

  15. Hope all is well Matt… Just a friendly reminder of the Font Outline Size and Color for the Bottom Text update to have matching text on the PMP display.

  16. Hi Matt,

    Love the script! I’ve put it into my Grafana display in my kitchen and it looks awesome – see it here:
    https://ibb.co/SBMyypK

    Quick question – My Recently Added Movies posters go back quite a while, I’m thinking 90 days or more, and I’d like to recude that to maybe 7 days. Is there a particular line of code I can edit that allows me to reduce the scope of time?

    Thanks bunches!

    1. Cameron,

      Did you have to modify anything to get it to scale to that small window? I’m trying to use a window module within MagicMirror (MMM-SmartWebDisplay) to display the posters, but they scale way beyond the window and I only see the top portion of it.
      Maybe the code has it check the resolution of the monitor and display 100% of that.

  17. Hi, I’m trying to set up one of these displays for myself. I followed your instructions up to opening up the web server page, and nothing showed up. I noted that when I rebooted nginx, it resulted in a failure. I thought perhaps rebooting would fix the issue, but apparently not. Perhaps the tutorial would be easier to follow if there was a video walkthrough of it and/or you showed what the code looked like after being altered? Because surely I did it wrong somehow and I’m not entirely sure where (although I have a feeling it was either adding index.php or when uncommenting that one section of code).

    Thanks in advance.

    1. Never mind, I realized I misread the instructions. But now I’m stuck on another part, where you have to edit /etc/php/7.0/fpm/php.ini. My Raspberry Pi is saying that that directory doesn’t exist.

      1. Glad you got it figured out. If there is something I can do to help make the instructions clearer, please let me know.
        What version of PHP do you have installed? I have not updated my Pi in a few months so maybe Raspbian is installing a newer default PHP version.

        From CLI type php -v or php -version.
        Try editing file /etc/php/7.X/fpm/php.ini (replace X with 1, 2, or 3)

        1. Thanks, that worked. I have version 7.3 by the way.

          I followed all the directions, but something’s still off. I have the web server running, but the display shows no posters and the admin page crashes with a “Unable to open file!” message. Reloading the page brings you back to the admin page with no changes saved. My only thought is it might be the directory (the Plex Movie Poster files are just in a folder on the desktop). Perhaps I could circumvent this by editing the config file directly? Either way it should be displaying something, yet it isn’t.

          Oh, and autostart for Chromium didn’t work either. Not the end of the world, I’ll just bookmark the IP address and leave a wireless keyboard attached.

          1. I think the reason why the program wasn’t working for me is because it expects to be working off PHP 7.0 and not 7.3.

          2. Thank you for the feedback. In a few weeks I am going to reload my Pi from scratch and update the instructions. I hope that will help.

    2. Sorry for the late reply.
      I agree a video how-to would be nice, however I currently do not have time or the expertise to make one. I am interested in learning some editing software, but that is low on my priority list. If anyone wants to make a video, post it / send it to me, I will give credit and link to it.

  18. Hey Matt, so something i’ve noticed over the past few months was that I had some movie posters that would never show up even though I had ALL selected from the Show Movies dropdown menu. This past weekend I decided to run a Refresh All Metadata on my Plex Server settings for each of my movie poster libraries that I have listed in the Plex Movie Sections field and suddenly movie posters that had never shown up over the past 3 months started to appear on my PMPD.

    Hope this helps someone else!

    1. the cli3nt Brother~
      I had the same problem but I solved it.
      Check your server’s mime configuration.
      You can let them handle files without extensions.

  19. Hi Cli3nt,

    I recently installed Movie Poster and had the same issue, here are two things to check.

    1. On your plex server go to plex
    server settings and network, find List of IP addresses and networks that are allowed without auth, put in the ip of your Raspberry Pi.

    2. In PMPD Admin in the Plex Movie Sections make sure you use the library number of the library you want to include in Coming Soon. Look for you library in the url of that plex library – com.plexapp.plugins.library?key=%2Flibrary%2Fsections%2F31&context – 31 is the library number in this url. You can have more than one library.

    Hope this helps.

    1. Thank you for the suggestions … unfortunately, I still have an empty black page

      List of IP addresses and networks that are allowed without auth:
      10.0.0.72
      Libraries: 5,6,8

      1. Cli3nt,

        Do you see anything if you choose the Custom Images Configuration and upload a file into that? When I was getting the black screen the custom still worked.

      2. Can you please ssh to the box, change directory to /var/www/html (Or your install directory), and run php -f getData.php? Do you see any errors? Is the image path valid in the middle div?

        1. PHP Warning: file_get_contents(): php_network_getaddresses: getaddrinfo failed: Name or service not known in /var/www/html/Plex-Movie-Poster-Display/getData.php on line 83
          PHP Warning: file_get_contents(http://http://10.0.0.47:32400/status/sessions?X-Plex-Token=Ywx2-RpEWDTWk5zrj2qi): failed to open stream: php_network_getaddresses: getaddrinfo failed: Name or service
          not known in /var/www/html/Plex-Movie-Poster-Display/getData.php on line 83
          PHP Fatal error: Uncaught Error: Call to undefined function simplexml_load_string() in /var/www/html/Plex-Movie-Poster-Display/getData.php:84
          Stack trace:
          #0 {main}
          thrown in /var/www/html/Plex-Movie-Poster-Display/getData.php on line 84

        2. I’ve verified multiple times that my token info is correct.

          I have also verified that line 83 does in fact load if not for the extra http:// being thrown in there.

          However, editing out the http:// in line 83:
          //Plex Module Connect to Plex
          $url = $plexServer.’:32400/status/sessions?X-Plex-Token=’.$plexToken.”;
          $getxml = file_get_contents($url);
          $xml = simplexml_load_string($getxml) or die(“feed not loading”);
          $client = ‘false’;
          $title = NULL;
          $display = NULL;
          $info = NULL;
          if ($xml[‘size’] != ‘0’) {
          foreach ($xml->Video as $clients) {
          if(strstr($clients->Player[‘address’], $plexClient)) {

          Produces a new error:
          PHP Fatal error: Uncaught Error: Call to undefined function simplexml_load_string() in /var/www/html/Plex-Movie-Poster-Display/getData.php:84
          Stack trace:
          #0 {main}
          thrown in /var/www/html/Plex-Movie-Poster-Display/getData.php on line 84

        3. Ok … so I managed to get it working … kind of

          after editing lines 83 & 173 to remove the extra http:// and realizing I didn’t have php-xml installed, it started showing the “Coming Soon” & “Now Playing” pages, however no images are loading.

          1. Can you run the cli again and post the output (remove any personal info)? Sorry I am working a lot right now and am slow to reply.

        4. There is a corresponding file in /posters/ however when I open it, it is just a blank image
          ***************************************
          me@TechnoCore:/var/www/html/Plex-Movie-Poster-Display$ php -f getData.php

          {“top”:” NOW SHOWING “,”middle”:””,”bottom”:”Guardians of the Galaxy: Light years from Earth, 26 years after being abducted, Peter Quill finds himself the prime target of a manhunt after discovering an
          orb wanted by Ronan the Accuser.”}

        5. Unsure what happened to my reply …
          this is the current result of getData.php

          “middle”:”<img src='cache\/posters\/1560972410' style='width: 100%'

        6. So I am pretty sure it is a permissions issue

          following your instructions
          chmod -R 774 /var/www/html
          locks me out of the /html directory

          chmod -R 775 /var/www/html
          works fine, but all posters being downloaded have a null value for file size which seems to be the problem

          1. Did you make sure you did:
            sudo chown -R pi:www-data /var/www/html/

            Check the owner of the folders. It should be with www-data user (or the account your web-server is using).

          2. I don’t have a “pi” user since I am running nginx on a Ubuntu box

            I have tried
            chown -R me:www-data
            and
            chown -R www-data:www-data

            both result is the same null file size value

            -rwxrwxrwx 1 me www-data 0 Sep 10 10:24 1567613275
            -rwxrwxrwx 1 www-data www-data 0 Sep 10 10:58 1567613276

          3. I did a fresh install today to update instruction for Raspbian Buster with desktop and had a similar issue. After troubleshooting I noticed it was because my ‘Plex Movie Sections’ was not set correctly. You might check that setting and see if that helps.

  20. the cli3nt Brother~
    I had the same problem but I solved it.
    Check your server’s mime configuration.
    You can let them handle files without extensions.

  21. Been awhile Matt… Hoping you could do away with the auto cache function in a future update. Seems like some of the UnWatched posters never get a chance to appear unless I manually force a Refresh All Metadata of my selected movie sections. I would be fine with just using the manual Clear movie Posters cache button once my Pi was running low on space.

  22. Hi again. I used your revised instructions to reinstall the display, and I got it up and running. But nothing’s showing on the display itself, it’s just black. My configurations saved, but it’s just not showing anything. And I can’t figure out how to exit kiosk mode on the Pi so I can enter new code.

    Any suggestions/advice?

    Thanks in advance!

    1. Sorry I have been out.
      Can you please ssh to your Pi, change directory to /var/www/html, and run php -f getData.php? Do you see an error?
      To exit kiosk mode I think you can just press the windows key on your keyboard, or Alt+F4 might work. I usually test from another machine or via SSH so I am not really sure.

      1. Here’s what it says:

        PHP Warning: file_get_contents(http://%5Bmy IP]:32400/library/sections/Family/all?X-Plex-Token=[RemovedToken]): failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request
        in /var/www/html/getData.php on line 173
        feed not loading

        1. What is in your config for “Plex Movie Sections”? This should be the Plex section ID you want PMPD to pull posters from. It is a number not a name. (Example: Correct: 2 Wrong: Movies).

  23. Thank you for the great work. I was able to get it configured, but the only thing is that it does show NOW Showing, but the Coming SOON never pops up, It just goes to a black screen and sits there. Any help would be greatly appreciated.

  24. i have a quick question before going out and buying my Raspberry Pi …can this be run on a Raspberry Zero W ??

    i am concerned with the form factor and this will hopefully be sitting in a hallway at an angle before my media room and will have one of the sides exposed

    thank you

    1. Good question. 🙂
      I do not have a Raspberry Zero W to test with. I think it will run as long as Raspbian runs, however without testing I don’t want to say it will for sure.

      If you do get decide to go with the Raspberry Zero W I would be interested in knowing how it runs.

      -Matt

  25. Works GREAT on Raspberry Pi Zero W no problem whatsoever
    On the installation it took me a couple of time to look things over and had to read through the comment when it came to Plex Movie Section being a number and not Movies also the Rpi Zero W and Debian Buster or maybe it was just my screen….I had to mess around with the boot config file a bit to get the picture right but other than that i can confirm that it is great small light doable….thank you again

  26. I been stuck at this same part and been trying over and over with the same result.

    I made the proper changes here:
    # Add index.php to the list if you are using PHP
    index index.php index.html index.htm index.nginx-debian.html;

    location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php7.3-fpm.sock;
    }

    Added this to the top of the index.php:

    I do a reload:
    pi@raspberrypi:/var/www/html $ sudo /etc/init.d/nginx reload
    [ ok ] Reloading nginx configuration (via systemctl): nginx.service.

    But index.php cannot be displayed. So I am stuck. Can someone assist please?

    Thank you.

  27. Hey Matt, I made a docker image for PMPD so I could use it in Grafana on my Unraid system. I’d like to share the image with the community so I’d like to get your permission first. What do you think?

    1. Thank you for asking. I really appreciate it.

      Absolutely, you can share with the community. If you send me a link, I will post it on the site as well.

  28. This was just what I needed. Thanks Matt. It inspired me to go through my library and clean up my poster art. I added format information for resolution, sound, and aspect ratio at the bottom of most of the films. https://imgur.com/a/wfNZG2v

    If you were to add any new features, I have a few requests.

    * Ability to insert the Custom Image Configuration into the library poster rotation. This could be a good way to make use of that feature and could go a long way to help reduce any image burn in from the top text section.

    * Ability to add a PNG for the Top Text area. It would be cool to have a theater name, or custom type design for a Coming Soon treatment.

    1. Glad you found it useful. Your changes look great! I was already working on something similar, however after seeing your layout I might have to rethink my design choice.
      Would you mind sending me your changes so I can add them to the next release of PMPD? (Of course I would make sure to give you credit.)
      I like your ideas. I will add them to my list 🙂

      -Matt

      1. Hey Matt. I’d be happy to send any graphics to help. I can’t find your email address on your site though. If you can see my email address via this comment, get in touch and we can go from there.

        1. Hi Nick

          Love your modifications to the poster art. It has inspired me to start working on this myself, but it’s going to take a lot of time with my movie collection. With Matt’s poster display this looks super sleek.

          Wondering if you could share your photoshop image settings and hi-res poster source?

    2. Really like your format information at the bottom of your posters. Great Job Nick!
      Huge fan of this PMPD project, can’t believe its been 3 years for me. As always, a huge thanks to Matt. Looking forward to any new updates.

  29. Awesome work, wondering what the utilization is. As I am curious about trying this with a Raspberry Pi Zero W device it doesn’t have the same oomf as a Pi 3B+ or Pi 4 so just checking before I make the purchase if you think it would run this.

    1. Thank you. I am working on a new version and hope it will be done in soon.
      I have not tried running PMPD on a Raspberry Pi Zero W. I have successfully installed it on a Pi 2 and 3B+, however I do not have a Zero W or Pi 4 to test on.

      If you do try the Pi Zero W please let me know if it works. 🙂

      -Matt

    2. Hi Travis, Denis had commented that he was successfully using a Pi Zero W with PMPD. See the following post:
      “Denis
      January 2, 2020 at 10:49 pm
      Works GREAT on Raspberry Pi Zero W no problem whatsoever
      On the installation it took me a couple of time to look things over and had to read through the comment when it came to Plex Movie Section being a number and not Movies also the Rpi Zero W and Debian Buster or maybe it was just my screen….I had to mess around with the boot config file a bit to get the picture right but other than that i can confirm that it is great small light doable….thank you again”

  30. Hey Matt,
    I’m stuck! I ran through your directions. I seem to have everything up and running. When I run PMPD I get a black screen. I don’t think I’m pulling in the poster data.

    I have my server IP, token, and client IP in the admin page. What should I enter under section? Just the name of my library?

    1. You’ll want to view the URL address for the specific library and take note of the source ID which is a number, such as this example : my Kids Movie library is source ID 33, seen in the middle and end of the URL address for the specific library: Flibrary%2Fsections%2F33%2Fall%3Ftype%3D1&context=content.library&source=33
      Hope that helps.

    2. Are you able to select the page in your local browser?

      If so, if you are using “@chromium-browser –kiosk” try changing to “@chromium –kiosk”

      The the browser name may have changed.

  31. Got everything up and running from your guide. I think you should probably add that it is normal to see a black screen after setup until you login and add the plex server ip and plex token / client ip info. That had me stumped for a bit.

    Also, I haven’t been able to figure out why “coming soon” doesn’t work for me. Now playing is working fine, but after the media is stopped it never switches over to coming soon.

    1. I figured it out, was literally in the comment above me. “Plex Movie Sections” are numbers not the actual name of your Libraries. Looking awesome now, thank you so much!

  32. Matt, do you have any intention of enabling this to use secure connections? I cannot get the software to work when mine is set to “required”. Thanks!

    1. I thought it did work, but I will need to test again. Thank you for point out it did now work.
      Thank you,
      -Matt

  33. Hi

    Thanks for a cool plugin…
    Is there any way to get this script working on a normal webhost ?

    I have so far uploaded the script to my webhost that runs PHP7.3 and set up the admin/config part but get only a black screen.
    I have write permission (755) for the poster and custom folder.
    I can view a custom image and text but can’t get the auto features to work.
    Niether text or pictures are showing up from the Coming Soon or Now Playing.

    1. If you’re getting a black screen make sure to check the following:
      You’ll want to view the URL address for the specific library and take note of the source ID which is a number, such as this example : my Kids Movie library is source ID 33, seen in the middle and end of the URL address for the specific library: Flibrary%2Fsections%2F33%2Fall%3Ftype%3D1&context=content.library&source=33
      Hope that helps.

      1. Seems that the webhost I have doesn’t allow (file_get_contents) to fetch xml content, for some reason many webhosts have this block and it’s apparently a common problem.
        Anyhow I installed it on my homeserver now and it works really nice.
        The only thing I’m missing right now is the ability to display what everyone is currently playing and not just 1 specific ip.
        Any (near in future) plans for adding this Matt?

        1. How do you envision multiply now playing posters displaying on the same screen? I was thinking about displaying each post for 60 seconds (maybe adjustable via admin interface) and then cycle to the next poster.

          -Matt

  34. Figured something else out. If you have this setup on a timed outlet like me, you will need chromium-browser –kiosk –app=http://your.url.here
    This avoids the session restore popup from messing up your posters 🙂 Thanks again Matt, truly awesome project!

    1. How is chromium-browser –kiosk –app=http://your.url.here working for you? I may add this to the main write up.

      Thank you
      -Matt

    2. I’m gonna have mine on a timed outlet too. off when away or when it’s night. I added this to the autostart and i no longer got the pop-up.

      But when powering up again the bottom text is gone and the poster is stretched to fill to the bottom.

      Any suggestions of how to fix that?

      If I ssh in and reboot the pi the bottom text is there and the poster is normal.

  35. @Matt,
    Thanks for the great work, need some help. I’ve got everything up and running but all that shows are Coming Soon posters, not any Now Playing items.
    Plex Movie Section has: 1,2,4,10
    (my libraries), any ideas of what could be wrong?

    1. Thank you. Have you checked to make sure the client IP address is correct? The client IP address is used to determine what poster to display for Now Playing.
      -Matt

  36. So update, I forgot to test on my Shield TV Setup with Plex. And that works! Wonder what the ordeal with the Roku’s running plex are. Oh well the Shield TV is in the Theater Room were this project was intended for anyways.

    Are there any logs or anything I can dig into to see why the Roku devices are being PITAs? Thanks again!

    1. Glad you got it working.
      I sometime have to put my gateway address in for the Roku to work. It seems odd and I don’t like it. I am currently using Android TV and it works normally.

  37. Matt,

    How do I remove the section for “Now Playing”

    I just want this as a Movie Poster slideshow of what I have on my Plex with no text above or below.

    Thanks

    1. Probably not the cleanest way, but you can go into getData.php on line 127 and change:
      $client = “true”;
      to
      $client = “false”;

      This will force the IF clause lower down to automatically display the Coming Soon section, but the processing to determine if something is actually playing from Plex will still fire.

      To fix this you could comment out everything from lines 108 through 144, but this may have other ramifications.

    2. As Jeff has already suggested, it would take some script modification to hide the Now Playing section. I can see about adding a toggle to enable / disable sections, however this would take a lot of testing and I am not sure it will make it into the next release.

  38. Love this! I was able to set it up on a 3B 1.2, and a Pi Zero W. The Zero is a bit more sluggish on large libraries, but it’s not bad – especially for what it’s doing.

    Any chance of supporting 16:10 aspect ratios? I have a 1280×800 photo frame I’m running in Portrait mode and it looks great, but the bottom margin is mostly cut off, but still usable. Thanks again, keep up the fantastic work!

  39. Would it be possible to have this script landscape, with the poster to the left and movie text to the rght,

    I am trying to use an old TV in place of a screen,

    The script is awesome btw..great work

  40. Got it working after some steps.

    Currently running on a landscape 1920×1080 monitor for now. I like the idea of running vertical but don’t have a stand or mount for it.

    By chance, would it be possible to add in background artwork as an option instead of posters for people who run it horizontal? That would look very good and appeal to a wider base. Perhaps text can be hidden or laid on top of the background to make full use of the 16:9 screen space. Thanks.

    Also: let me know if you need any graphics, want a video tutorial made, etc.

    1. Will the Custom Images Configuration work for your horizontal setup? I am assuming that the images are squished(?) some when running horizontal?
      Once the next release is finished I might take you up on a short video tutorial :). I know it would be helpful, however I do not have any video editing skills.

  41. Hey Matt,

    Love the poster display, looks awesome!

    I was wondering if there was anyway in a future update to add the ability to upload a customized border art for the posters, or to upload custom fonts?

    I was playing around with the Custom Images Configuration to try and use it to display the Plex Collection posters, though I can’t seem to find a way have it rotate through.

    Also it’d be amazing if I could upload a .gif for the top text and bottom text as an option instead of text.

    1. Thank you. The Custom Images Configuration only displays a single image at a time. It does not rotate through a series of images.
      Can you give me an example of a .gif you would like to see in the top / bottom text? The script currently doesn’t support anything but text in those areas, however it may be possible with some changes.

      1. Hey,

        Sorry it took a while for me to reply, didn’t get a notification.

        https://imgur.com/a/DrRSHMn is an example of the .gif “Now Showing” idea I was thinking of, it’d help with long term screen burn for the Title and Bottom Text areas, though if it isn’t possible that’s totally understandable.

  42. Love this project. A simple install would be great. I could help with something if you would like as I would be trying to simply these steps on my own anyways. 🙂

    Would it be possible to have an option to disable the “Summary” in the “Now Playing” section?

    Thanks again

  43. I just discovered your work over on the Facebook Plexaholics forum. Since then, I’ve bought a cheap 40″ Insignia 1080p TV and a Raspberry Pi 4. I’ve got everything working, and I’m thrilled. Thank you so much for sharing this.

    I’m trying to display taglines at the bottom of the Coming Soon screen. I initially tried “auto-scale bottom text,” but it always ends up really small on my 40″ screen. I have tried various font sizes without auto-scale enabled, but the taglines vary so much in length that I can either make sure of a fit by using a very small font or compromise on a font that works for most of them, but leaves many bleeding off the margins. What I’d really like is some way to adjust the target width of the “auto-scale bottom text” option.

    Also, and I think you’re aware of this, just before it loads the next poster, the bottom text dramatically changes size for just an instant.

    1. I think I can answer this for you Bob. I have been using Matt’s PMPD for quite some time now, 3.5 years to be exact on my 50″ Sharp Roku TV. Matt’s updates aren’t frequent but when he does make them he takes peoples’ advice and creates something that my guests find to be both attractive and “really cool.” I’m not sure if Matt even knows about the issues you are referring to… Recently Matt merged some updates from another branch of PMPD that I’ve felt was some really cool updates but not a completely finished product. I tried it out 9 months ago and again a few days ago and the items that were updated/merged still offer up some issues… luckily, I did this on a separate SD card so it didn’t effect my PMPD 2 that I still use from Matt’s PMPD. Like you, I had issues with Auto-Scale Text not working properly and displaying tiny text, custom text that scrolls during Coming Soon even though it shouldn’t and there’s no way to control Scrolling Text by itself other than under Now Showing which effects both Coming Soon and Now Showing. Scrolling should really only be for the movie Summary. I haven’t found a way to get Coming Soon Bottom Font Outline Size to work with any number size for Custom Coming Soon Bottom Text. Now Showing Top Text Option is repeated as a heading on the admin page (instead of showing Now Showing Bottom Text Option). The Text Size change you mentioned when the poster changes. I like the ability to enable/disable Cache Images and I think the options of Title, Summary, Tagline, and Custom are great if they work properly. I had high hopes for some new PMPD updates but in my personal opinion these latest updates weren’t ready for primetime.

      1. Thank you for this great feedback! I am sorry there are issues. You are correct, I was not aware of them. Currently I do not have a Raspberry Pi to test with. During our move something happened to it and, with the world / my life being a little crazy right now, I have not had a chance to purchase another one.

        You are correct I did merge some changes from another developer, however I could only look at the code and trust it work by word of mouth. I was not able to do my normal testing. Lesson learned…

        I have noted all the issues both you have mentioned and I will try to get them fixed. Stay tuned 🙂

        1. Check your Gmail inbox Matt. Hopefully the small generosity helps to get you a working Raspberry Pi. Hope all is well and thanks again for PMPD, it’s truly appreciated in my household and an awesome feature to my home theater.

          1. Wow. I am really humbled and not sure what to say.

            When I first started working on PMPD I was nervous about releasing it. I was worried that my amateur coding skills might cause issues and bring negativity, however I am humbled amount of / kindness of people using PMPD. Your gift is more than I would ever ask for or expect. I appreciate your generosity and will get a new Raspberry Pi on order asap. 🙂

            Thank you again

  44. Hey, I absolutely love this concept, but is there anyway you can support Jellyfin? Plex has been going in directions I don’t like, and there’s nothing like pairing open source software with more open source software.

    Thank you!

    1. I like the idea. I had just started playing with JellyFin before I moved. Once I fix / add the Plex features I may look into the possibility of some kind of JellyFin solution.

  45. Matt, this is awesome and I have it running and it works wonderfully with one annoying exception. The font that is generated for the movies resizes just before it switches to the next movie poster. I have tried various font sizes and auto-resize as well and not much helps. It does not stay locked in and when the posters switch, it causes the text to resize before it stays that way for the duration of the poster. It works great otherwise. Is there a way to make it not do that? I am not sure why it is doing this.

    1. Thank you for the feedback.
      I have not seen the font resize issue on my setup, however I am running a newer version that I have been working on. I hope to have it released soonish.. (busy time at work).
      What size screen are you using for you display?

  46. hi there,
    everything working so far, but my pi shows no posters.
    php -f getData.php said that the folder “posters” is missing, so I created it.
    after that the output is:

    ” {“top”:” COMING SOON”,”middle”:”url(‘cache\/posters\/1602446693’)”,”bottom”:”Scoop – Der Kn\u00fcller”}”

    The admin panel now reports posters in the cache. If I download the poster files via html they have no filetype-ending.
    So what can I do?

  47. Matt (Fellow R2 builder here) – I have now playing working… but its not pulling from the plex server any recently added posters… I created a dedicated library for this and hid it on plex because all my libraries have spaces in the name (Movies – Action) etc…
    I am using the plex server IP address running on synology and the token that I use for my home automation which returns posters fine.

    1. Awesome. If you have a link to your R2 build please share it and I will check it out. I am currently waiting on more printer filament so I can start printing again.

      So, if I understand correctly, posters are displaying fine however the recently added posters are not? I believe there are a few other people who have reported the same issue. I am working on the next version of PMPD and will test the recently poster option specifically.

      Thank you for your feedback 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.