Code Monkey home page Code Monkey logo

posterizarr's Introduction


Buy Me A Coffee Discord


Supported Platforms 🚀💻

Docker Unraid Linux Windows MacOS

Introduction

This PowerShell script automates the process of generating images for your Plex media library. Leveraging information from your Plex library, such as movie or show titles, season and episode data, it fetches relevant artwork from Fanart.tv, TMDB, TVDB, Plex and IMDB. The script is able to focus on artwork with specific languages to grab. By default, textless artwork xx is retrieved and will fall back to en if textless is not found. This is a setting a user can decide on, either to focus on textless or on text posters. It also offers both automatic and manual modes for generating posters. The manual mode can accommodate custom creations that cannot be bulk retrieved.

Note

Posterizarr is cross-platform ready, meaning it can run on Linux, Docker (Alpine v3.17), unRAID and on Windows operating systems.

Supported Poster Types:

  • Movie/Show Posters
  • Movie/Show Backgrounds
  • Season Posters
  • TitleCards

Tip

Here is an installation walkthrough

Warning

  • The temp Folder gets cleared on every Script run, so do not put files into it.
  • Apprise integration only works in docker container, please use discord on other platforms (discord also works on docker).
  • Please start the script as Admin on first run, otherwise the script is not able to install the prerequisites.

Key Features

Tip

If you want to use the created assets with Kometa (formerly PMM) make sure to check out the Assets doc

You can find an example config for the Assets on my Kometa-Configs repo

  • Resizing: It automatically resizes every poster to 2000x3000.

  • Overlays: If you choose to, downloaded images will automatically have borders, text, and a gradient overlay applied.

    • Here are some gradient overlays that you can use instead of the default one gradient-zip
  • Automatic Library Search: The script autonomously searches for libraries within your Plex server, enhancing its usability.

  • Handling Multiple Versions: It adeptly manages multiple versions of a movie/show, ensuring comprehensive coverage.

  • CSV Export: Produces an impressive CSV file containing all queried movie/show information during the script's runtime in $ScriptRoot\logs\PlexLibexport.csv

  • Logging Capabilities: Records valuable information to a file in $ScriptRoot\logs\Scriptlog.log, facilitating troubleshooting and analysis.

    • It also generates a log with the output of every imagemagick command $ScriptRoot\logs\ImageMagickCommands.log.
    • Additionally, an ImageChoices.csv file is generated to store all the selected download options and essential information.
    • Send notification via apprise or discord Click here for Example pictures..
  • Cross-platform Compatibility: Ensures seamless operation across Linux, Docker, and Windows Plex servers, enhancing versatility.

  • Poster/Background/TitleCard Creation: It searches fanart/tmdb/tvdb/Plex for posters/backgrounds/titlecards and resizes the downloaded image to 3840x2160 (for titlecards and backgrounds) or 2000x3000 (for posters), fallback is grabbing artwork from imdb.

Note

Upon initial execution, the script may take some time to run as it compiles necessary data. Subsequent runs will look at whether a poster in the AssetPath is missing and only create missing posters, bypassing existing assets in the directory. If you are unhappy with the downloaded artwork, delete it in the AssetPath directory, rerun and the script will populate the missing artwork.

Important

Requirements:

Before utilizing the script, ensure the following prerequisites are installed and configured:

  • TMDB API Read Access Token: Obtain TMDB API Token - NOTE the TMDB API Read Access Token is the really, really long one
  • Fanart Personal API Key: Obtain Fanart API Key
  • TVDB API Key: Obtain TVDB API Key - Do not use "Legacy API Key", it only works with a Project Api Key.
  • ImageMagick: - Version 7.x is required - The script handles downloading and using a portable version of ImageMagick for all platforms. (You may need to run the Script as Admin on first run). If you prefer to reference your own installation or prefer to download and install it yourself, goto: Download ImageMagick
  • Powershell Version: 5.x or higher (Docker Image uses v7.4.2).

Configuration:

  1. Open config.example.json located in the script directory.

  2. Update the following variables with your API keys and preferences:

    ApiPart:
    • tvdbapi: Your TVDB Project API key.

    • tmdbtoken: Your TMDB API Read Access Token.

    • FanartTvAPIKey: Your Fanart personal API key.

    • PlexToken: Your Plex token (Leave empty if not applicable).

    • FavProvider: Set your preferred provider (default is tmdb).

      • possible values are:

        • tmdb (recommended)
        • fanart
        • tvdb
        • plex (Not recommended)
          • if you prefer textless, do not set plex as fav provider as i cannot query if it has text or not.
          • that beeing said, plex should act as last resort like IMDB does for Movies and not as fav provider.

        Search order in script

    • PreferredLanguageOrder: Specify language preferences. Default is xx,en,de (xx is Textless). Example configurations can be found in the config file. 2-digit language codes can be found here: ISO 3166-1 Lang Codes.

      • If you set it to xx you tell the script it should only search for textless, posters with text will be skipped.
    • PreferredSeasonLanguageOrder: Specify language preferences for seasons. Default is xx,en,de (xx is Textless). Example configurations can be found in the config file. 2-digit language codes can be found here: ISO 3166-1 Lang Codes.

      • If you set it to xx you tell the script it should only search for textless, posters with text will be skipped.
    PlexPart:
    Notification:
    • SendNotification: Set to true if you want to send notifications via discord or apprise, else false.
    • AppriseUrl: Only possible on Docker -Url for apprise provider -> See Docs.
    • Discord: Discord Webhook Url.
    PrerequisitePart:
    • AssetPath: Path to store generated posters.

    • show_skipped: If set to true, verbose logging of already created assets will be displayed; otherwise, they will be silently skipped - On large libraries, this may appear as if the script is hanging.

    • magickinstalllocation: Path to ImageMagick installation location where magick.exe is located (Otherwise leave value as "./magick")

      • The container handles this part on his own, you can leave it as it is in config.
    • maxLogs: Number of Log folders you want to keep in RotatedLogs Folder (Log History).

    • logLevel: Sets the verbosity of logging. 1 logs Warning/Error messages. Default is 2 which logs Info/Warning/Error messages. 3 captures Info/Warning/Error/Debug messages and is the most verbose.

    • font: Font file name.

    • backgroundfont: Background font file name.

    • overlayfile: Overlay file name.

    • backgroundoverlayfile: Background overlay file name.

    • titlecardoverlayfile : Title Card overlay file name.

    • LibraryFolders: Set to false for asset structure in one flat folder or true to split into library media folders like Kometa needs it.

    • Posters: Set to true to create movie/show posters.

    • SeasonPosters: Set to true to also create season posters.

    • BackgroundPosters: Set to true to also create background posters.

    • TitleCards : Set to true to also create title cards.

    • SkipTBA : Set to true to skip TitleCard creation if the Titletext is TBA.

    • SkipJapTitle : Set to true to skip TitleCard creation if the Titletext is Jap or Chinese.

    • AssetCleanup : Set to true to cleanup Assets that are no longer in Plex.

      - !! IMPORTANT !! -
      
      Risk of Data Loss from excluded Libraries: 
      
      When you exclude libraries, any assets within these locations may be inadvertently deleted. 
      
      This happens because the script interprets these assets as "not needed anymore" during its execution since they are not found or listed as part of the active scan.
      
      Ensure that all active asset libraries are included when using that setting on true to prevent unintended deletions.
    OverlayPart:
    • ImageProcessing: Set to true if you want the ImageMagick part; if false, it only downloads the posters.
    • outputQuality: Image output quality, default is 92% if you set it to 100% the image size gets doubled.
    PosterOverlayPart:
    • fontAllCaps: Set to true for all caps text, else false.
    • AddBorder: Set to true to add a border to the image.
    • AddText: Set to true to add text to the image.
    • AddOverlay: Set to true to add the defined overlay file to the image.
    • fontcolor: Color of font text.
    • bordercolor: Color of border.
    • minPointSize: Minimum size of text in poster.
    • maxPointSize: Maximum size of text in poster.
    • borderwidth: Border width.
    • MaxWidth: Maximum width of text box.
    • MaxHeight: Maximum height of text box.
    • text_offset: Text box offset from the bottom of the picture.
    SeasonPosterOverlayPart:
    • fontAllCaps: Set to true for all caps text, else false.
    • AddBorder: Set to true to add a border to the image.
    • AddText: Set to true to add text to the image.
    • AddOverlay: Set to true to add the defined overlay file to the image.
    • fontcolor: Color of font text.
    • bordercolor: Color of border.
    • minPointSize: Minimum size of text in poster.
    • maxPointSize: Maximum size of text in poster.
    • borderwidth: Border width.
    • MaxWidth: Maximum width of text box.
    • MaxHeight: Maximum height of text box.
    • text_offset: Text box offset from the bottom of the picture.
    BackgroundOverlayPart:
    • fontAllCaps: Set to true for all caps text, else false.
    • AddBorder: Set to true to add a border to the background image.
    • AddText: Set to true to add text to the background image.
    • AddOverlay: Set to true to add the defined background overlay file to the background image.
    • fontcolor: Color of font text.
    • bordercolor: Color of border.
    • minPointSize: Minimum size of text in background image.
    • maxPointSize: Maximum size of text in background image.
    • borderwidth: Border width.
    • MaxWidth: Maximum width of text box in background image.
    • MaxHeight: Maximum height of text box in background image.
    • text_offset: Text box offset from the bottom of the background image.
    TitleCardOverlayPart:
    • UseBackgroundAsTitleCard: Set to true if you prefer show background as TitleCard, default is false where it uses episode image as TitleCard.
    • BackgroundFallback: Set to false if you want to skip Background fallback for TitleCard images if no TitleCard was found.
    • AddOverlay: Set to true to add the defined TitleCard overlay file to the TitleCard image.
    • AddBorder: Set to true to add a border to the TitleCard image.
    • borderwidth: Border width.
    • bordercolor: Color of border.
    TitleCardTitleTextPart:
    • AddEPTitleText: Set to true to add episode title text to the TitleCard image.
    • fontAllCaps: Set to true for all caps text, else false.
    • fontcolor: Color of font text.
    • minPointSize: Minimum size of text in TitleCard image.
    • maxPointSize: Maximum size of text in TitleCard image.
    • MaxWidth: Maximum width of text box in TitleCard image.
    • MaxHeight: Maximum height of text box in TitleCard image.
    • text_offset: Text box offset from the bottom of the TitleCard image.
    TitleCardEpisodeTextPart:
    • SeasonTCText: You can Specify the default text for Season that appears on TitleCard.
      • Example: STAFFEL 1 • EPISODE 5 or "SÄSONG 1 • EPISODE 1"
    • EpisodeTCText: You can Specify the default text for Episode that appears on TitleCard.
      • Example: SEASON 1 • EPISODE 5 or "SEASON 1 • AVSNITT 1"
    • fontAllCaps: Set to true for all caps text, else false.
    • AddEPText: Set to true to add episode text to the TitleCard image.
    • fontcolor: Color of font text.
    • minPointSize: Minimum size of text in TitleCard image.
    • maxPointSize: Maximum size of text in TitleCard image.
    • MaxWidth: Maximum width of text box in TitleCard image.
    • MaxHeight: Maximum height of text box in TitleCard image.
    • text_offset: Text box offset from the bottom of the TitleCard image.

  3. Rename the config file to config.json.

  4. Place the overlay.png, or whatever file you defined earlier in overlayfile, and Rocky.ttf font, or whatever font you defined earlier in font files in the same directory as Posterizarr.ps1 which is $ScriptRoot.

Usage

  • Automatic Mode: Execute the script without any parameters to generate posters for your entire Plex library.
  • Testing Mode: Run the script with the -Testing switch to create Test posters before you start using it.
  • Manual Mode: Run the script with the -Manual switch to create custom posters manually.

Note

  • Ensure PowerShell execution policy allows script execution.
  • Bugs or issues encountered during usage can be reported for resolution.

Automatic Mode

Run the script without any parameters:

.\Posterizarr.ps1

This will generate posters for your entire Plex library based on the configured settings.

The posters are all placed in AssetPath\.... This can then be mounted in Kometa to use as the assets folder.

Assets Tip

Tip

Have a look at the docker-compose.yml there is an example of the /assets Volume, you either can mount the Kometa Assets dir to Posterizarr or vice versa, its up to you.

Its important that you update the containerpath you specified in your docker-compose.yml in your config.json, in my example it is /assets.

Assuming you made the config like i did, Posterizarr will now create the Posters directly in Kometa´s Asset dir.

Modes

Tautulli Mode Docker

Important

Tautulli and Posterizarr must run as a container in Docker

Note

If Discord is configured it will send a Notification on each trigger.

In this mode we use Tautulli to trigger Posterizarr for an specific item in Plex, like a new show, movie or episode got added.

To use it we need to configure a script in Tautulli, please follow these instructions.

  1. Make sure that you mount the Posterizarr directory to tautulli, cause the script needs the Path /posterizarr
    volumes:
      - "/opt/appdata/posterizarr:/posterizarr:rw"
  2. Download the trigger.py from the GH and place it in the Tautulli Script dir -> Tautulli-Wiki
    • You may have to set chmod +x to the file.
  3. Open Tautulli and go to Settings -> NOTIFICATION AGENTS
  4. Click on Add a new notification agent and select Script
  5. Specify the script folder where you placed the script and select the script file.
    • You can specify a Description at the bottom like i did.
    🖼️Example

    testing

  6. Go to Triggers, scroll down and select Recently Added.
    🖼️Example

    testing

  7. Go to Conditions, you can now specify when the script should get called.
    • In my case i specified the Media Type: episode, movie, show and season
    • I also excluded the Youtube Lib cause the videos i have there - do not have an tmdb,tvdb or fanart ID.
      • This is an recommended setting, either exclude such libs or include only those libs where Posterizarr should create art for.
    🖼️Example

    testing

  8. Next go to Arguments -> Unfold Recently Added Menu and paste the following Argument, after that you can save it.
    • Please do not change the Argument otherwise the script could fail.
    <movie>RatingKey "{rating_key}" mediatype "{media_type}"</movie><show>grandparentratingkey "{grandparent_rating_key}" mediatype "{media_type}"</show><season>parentratingkey "{parent_rating_key}" grandparentratingkey "{grandparent_rating_key}" mediatype "{media_type}"</season><episode>RatingKey "{rating_key}" parentratingkey "{parent_rating_key}" grandparentratingkey "{grandparent_rating_key}" mediatype "{media_type}"</episode>
    🖼️Example

    testing

Testing Mode

Run the script with the -Testing flag. In this mode, the script will create pink posters/backgrounds with short, medium, and long texts (also in CAPS), using the values specified in the config.json file.

Tip

This is handy for testing your configuration before applying it en masse to the actual posters. You can see how and where the text would be applied, as well as the size of the textbox.

.\Posterizarr.ps1 -Testing

Manual Mode

Important

Currently only movie/show/season poster creation integrated.

Source picture gets edited by script and is then moved to desired asset location.

Run the script with the -Manual switch:

.\Posterizarr.ps1 -Manual

Follow the prompts to enter the source picture path (Container needs Access to it), media folder name, and movie/show title to manually create a custom poster.

Platforms & Tools

Docker

  • Docker-Compose Example File

    • Change RUN_TIME in yaml to your needs - You need to use 24H Time Format
      • The Script gets executed on the Times you specified
      • Before starting the scheduled run it checks if another Posterizarr process is running, if yes - the scheduled run will be skipped.
    • Change volume and network to fit your environment (Make sure you have the same network as your plex container when you use local IP of plex)
    • Change TimeZone to yours, otherwise it will get scheduled to a different time you may want it to.
    • You may also have to change PUID/PGID

    If you manually want to run the Script you can do it this way:

    Automatic Mode:

    docker exec -it posterizarr pwsh Posterizarr.ps1

    Testing Mode:

    docker exec -it posterizarr pwsh Posterizarr.ps1 -Testing

unRAID

Tip

If you are an unRAID user, just use the Community app from @nwithan8 it is listed in Store.

  • Change RUN_TIME to your needs - You need to use 24H Time Format
    • Example: 06:00 or 06:00,14:00.....
  • AssetPath in config needs to be /assets not the path you entered.

How to create the Posterizarr.xlsm

📝Posterizarr Excel Creation using Module1.bas:
  1. Open Excel: First, open Microsoft Excel on your computer. You can do this by clicking on the Excel icon in your applications menu or by searching for "Excel" in your computer's search bar and selecting it from the results.

  2. Access the Visual Basic for Applications (VBA) Editor:

    • While in Excel, press Alt + F11 on your keyboard. This keyboard shortcut will open the VBA editor window.
  3. Import Module:

    • In the VBA editor window, you'll see a menu bar at the top.
    • Right-click on any existing module or in the project explorer (usually located on the left-hand side).
    • From the dropdown menu, select Import File....
    • A file explorer window will open. Navigate to the location where you saved the Module1.bas file.
    • Select the Module1.bas file and click Open.
  4. Run the Macro:

    • Now, go back to the Excel window.
    • Look for the View tab at the top of the Excel window.
    • Click on the View tab.
    • Within the Macros group, you'll find a button labeled Macros. Click on it.
    • In the dropdown menu, select View Macros.
    • A Macros dialog box will appear, listing all available macros.
    • In the list, you should see the PromptUser macro.
    • Select PromptUser from the list.
    • Finally, click the Run button.

Following these steps will allow you to import the Module1.bas file containing the VBA code into Excel and then run the PromptUser macro.

How to use the Posterizarr.xlsm

🎥Posterizarr Excel:

excel

Showcase

Images from Testing Mode

🖼️Posters

testing

🖼️Backgrounds

backgroundtesting

🖼️TitleCards

titlecardtesting

Webhook

🖼️Discord Webhook:

webhook

Example Pictures

🖼️ImageChoices.csv:

imagecsv

🖼️Assets after Posterizarr run:

Font - Colus-Regular.ttf outputnew

Font - Comfortaa-Medium.ttf output

Tip

  • It was made using this Posterizarr config.
🖼️Assets after Kometa run:

Font - Colus-Regular.ttf kometa-overview-new

Font - Comfortaa-Medium.ttf kometa-overview

Tip

  • It was made using this Kometa config.

Search Order

🔍Movie Poster & Background:

If TMDB is your fav Provider

  • TMDB
  • FANART
  • TVDB
  • PLEX
  • IMDB (Movies only)

If TVDB is your fav Provider

  • TVDB
  • TMDB
  • FANART
  • PLEX
  • IMDB (Movies only)

If FANART is your fav Provider

  • FANART
  • TMDB
  • TVDB
  • PLEX
  • IMDB (Movies only)

🔍Show Poster & Background:

If TMDB is your fav Provider

  • TMDB
  • FANART
  • TVDB
  • PLEX

If FANART is your fav Provider

  • FANART
  • TMDB
  • TVDB
  • PLEX

If TVDB is your fav Provider

  • TVDB
  • TMDB
  • FANART
  • PLEX

🔍Show Season Poster:

If TMDB is your fav Provider

  • TMDB
  • FANART
  • TVDB
  • PLEX

If FANART is your fav Provider

  • FANART
  • TMDB
  • TVDB
  • PLEX

If TVDB is your fav Provider

  • TVDB
  • TMDB
  • FANART
  • PLEX

🔍Show TC with Background Poster:

If TMDB is your fav Provider

  • TMDB
  • TVDB
  • FANART
  • PLEX

Else

  • TVDB
  • TMDB
  • FANART
  • PLEX

🔍Show TC Poster:

If TMDB is your fav Provider

  • TMDB
  • TVDB
  • PLEX

Else

  • TVDB
  • TMDB
  • PLEX

Enjoy

Feel free to customize the script further to meet your specific preferences or automation requirements.

PR Rules

Important

  • Adjust on each PR the version number in script on Line 11 $CurrentScriptVersion = "1.0.55"
  • Adjust the version number in Release.txt to match the one in script.
    • this is required because the script checks against this file if a newer version is available.
  • Do not include images on a PR.

versioning

posterizarr's People

Contributors

fscorrupt avatar bullmoose20 avatar kevbentz avatar shayne55434 avatar antwanchild avatar

Stargazers

Cody avatar Maxime Miramond avatar  avatar cyb3rgh05t avatar  avatar Zachary Harvey avatar josecurioso avatar  avatar  avatar  avatar Alex Lebens avatar  avatar mZaro avatar William Austin avatar  avatar Austin Harsh avatar PriestKos avatar Mr Berns avatar  avatar Nate Harris avatar SS avatar Brian Davidson avatar  avatar Jadehawk avatar  avatar  avatar  avatar Jacob Reed avatar  avatar Anagh Kumar Baranwal avatar  avatar  avatar  avatar Jaromir Dzialo avatar  avatar  avatar FiDO avatar x1ao4 avatar  avatar  avatar  avatar  avatar  avatar  avatar Micheal Espinola avatar Scott Ruzal avatar  avatar  avatar  avatar  avatar  avatar  avatar DrAg0n141 avatar

Watchers

 avatar  avatar  avatar  avatar

posterizarr's Issues

[FR] Title Cards creation

Add the ability to create title cards as well. Include optional text switches for writing 'Season and episode number' and 'episode title' on the poster, similar to what the title card maker already does, along with overlay, border, and color values.

[FR] Add Title Card Picture Toggle

UseBackgroundPicture = True
if set to True it will use the shows background picture as TitleCard, if set to False it tries to grab episode image.

[FR] Option to not include year on poster.

If a show/movie has a duplicate name (ex. Avatar: The Last Airbender (2024) and Avatar: The Last Airbender (2005)), the script will include the year in the name on a new poster. An option to turn off/remove the year from the title on the poster would be great!

[BUG] Correct summary & imagechoices.csv

Since the csv headers changed, the summary shows false values (textless)

Also control csv that it reports correct language via api, from time to time it picks different lang that is not specified in prefered lang order (only in imageschoices language) the downloaded poster has any of the preferred lang

[FR] Ability to choose between poster language ('xx', 'en', etc.) at show and season level.

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
I like show posters to be with original English text on them, but I can't choose textless season posters too.

Describe the solution you'd like
A clear and concise description of what you want to happen.
I would like to choose the language level separately for show and season levels. "PreferredLanguageOrder": [""} option would be need separately for posters and seasons.

Describe alternatives you've considered
I would like my show posters to have original English text on them as I only apply borders to show posters, so I need to choose "en" first on the "PreferredLanguageOrder": ["en", "xx", "de"] option in the config file. At the season level I want textles posters that I apply a gradient overlay, border and season text. So, I would need a "xx" option for seasons first.

Additional context
Add any other context or screenshots about the feature request here.

[FR] Ability to mount docker.sock and run commands against other docker containers

Right now im using the Tautulli docker mode script, so that when a new movie is added, it calls the trigger.py to make posterizarr generate a poster for that one movie or show. What I would like is after that is done, for posterizarr to be able to call an overlay only run on Kometa (Plex Meta Manager) so that the overlays update with new poster, Kometa doesnt do single runs against one movie, but I think just running overlays would suffice.

Describe the solution you'd like
For this to work I think you'd have to allow docker.sock to be mounted, docker cli installed in the image itself maybe, then some form of dumping a script into a scripts folder for posterizarr to run with a trigger

Describe alternatives you've considered
Not sure of others way

Additional context
Add any other context or screenshots about the feature request here.

[FR] Add versioning

Add versioning to script,log and notifications, also with a compare what the latest version is.

[FR] Add the ability to detect multiple script runs

Add the ability to detect if there already is another posterizarr run.
Currently only the docker schedule does detect this, but it should also detect if a schedule runs and a user then manually triggers a run, cause this then can damage the picture.

[BUG] FavProvider Doesn't Affect Season Searches

Describe the bug
A clear and concise description of what the bug is.
Changing FavProvider in the config file does not effect season searches for posters. When running the script, changing the provider only affects the show/movie poster search. The season posters always falls back to TMDB. You also get the fallback message at the end of the log.
Scriptlog.log

To Reproduce
Steps to reproduce the behavior:

  1. Change FavProvider to tvdb, plex, or fanart; show and season posters set to true
  2. Remove show/season assets from target folder and run script
  3. Sad faces

Expected behavior
A clear and concise description of what you expected to happen.
After changing FanProvider to a different provider, season posters should come from said fav provider first.

Screenshots & Logs
If applicable, add screenshots to help explain your problem.

Additional context
Add any other context about the problem here.

[FR] Log/Export Rotation

Rotation for all exports and logs where the user can decide how long/how many files he wants to keep via a config setting.

[FR] magick compare to detect changes in processed image versus existing image

The idea is that if you turn on CheckAll: true, this overrides the existing "capture only files you are missing" to a mode where it will validate that the processed image is the same as the one already in the assets folder. If different, replace the destination asset artwork.

This automation allows for:

  • captures the most popular and highest voted artwork from your primary provider
  • Captures changes you made to font, border, gradient, and then would know that the destination artwork needs to be changed automatically.
  • Captures updates to artwork changes to fav provider as it can take 8 hours before changes show up. This would capture it on the next run automatically.

Depending on how this is implemented, you could make it a runtime variable so that people could schedule it 1 time per week while a regular run daily.

Make Asset check work without extension

Currently it checks for poster.jpg, if someone has poster.png it will still download a new poster.
An update to the Test-path in Script is needed to omit this.

Hyphen in directory tree break movie directory recognition

Hi, I have an issue where some media directories are not correctly recognized in the scan. It seems that when there is a hyphen - in the directory tree it breaks correct movie folder recognition. Example:

Structure: /media/movies-3D/moviename (year)/file.mkv

For all movies in the directory movies-3D Plex Poster Maker will create ONE directory called 3D, opposed to individual directories for each, moviename (year). Consequently, posters for all these movies cannot be placed correctly.

Interestingly, hyphens in the movie name (e.g. Spider-Man (year) are allowed. Maybe hyphens can be escaped for the whole directory tree? That would be awesome, thanks for any help. Great tool!

[FR] corect RTL langage

Is your feature request related to a problem? Please describe.
Arabic title show in wrong direction

image

Describe the solution you'd like
support RTL languages, like arabic

Poster/Background not found.

Describe the bug
Not sure it's actually affecting my library but I get this error on 19 of my movies daily when script runs

To Reproduce
Happens with multiple movies

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots & Logs

   .7558| Start Poster Search for: X-Men.2000.REMASTERED.1080p.BluRay.H264.AAC-RARBG
[2024-04-21 02:01:16] [WARNING] |L.7560|      Can't search on TMDB, missing ID...
[2024-04-21 02:01:16] [INFO]    |L.966 |      Searching on Fanart.tv for a movie poster
[2024-04-21 02:01:16] [WARNING] |L.1046|      No movie match or poster found on Fanart.tv
[2024-04-21 02:01:16] [INFO]    |L.1904|      Searching on Plex for a Movie Poster
[2024-04-21 02:01:17] [WARNING] |L.1923|      Artwork has exif data from posterizarr/pmm/tcm, cant take it...
[2024-04-21 02:01:17] [ERROR]   |L.7746|      Missing poster URL for: X-Men.2000.REMASTERED.1080p.BluRay.H264.AAC-RARBG
[2024-04-21 02:01:17] [INFO]    |L.7747|     

Additional context
Add any other context about the problem here.

[Bug] After taking a poster with text as a fallback from favprovider, no longer displays/logs "Start Title Card Search..." line

Appears to happen only with shows, Poster and Background search for movies does not seem to be affected.

Prefer textless then english (xx,en).

After finding a title card with text at favprovider (tmdb) it will no longer display the "Start Title Card Search..." line for the show until it retrieves a textless poster.

Log included, see shows "Dirt Every Day", "The UnXplained", and "Vice". Also seems to happen with poster search (see "The UnXplained").
Scriptlog.log

[FR] Optimize the Manual Mode

Manual switch is interactive now and can only do 1 item.

  • Add the ability to specify a folder and do everything inside this folder.
  • Naming of the files must match poster,background, season or titlecard naming scheme.
  • add everything according to config (border,overlay and font)

[FR] Add config comparison

Check config.json and config.example.json if they differ.
if yes, notify user that he needs to make changes to the json, also add part if they are prerequisites

[FR] add toggle in config to ignore episodes named TBA

Is your feature request related to a problem? Please describe.
Episodes named TBA as placeholder currently get that name in episode cards and won’t get updated when official name is out.

Describe the solution you'd like
A toggle in config where we could set ignore TBA or even log TBA to a file and later get the card replaced when a different name is available.

Describe alternatives you've considered
The alternative is to totally ignore TBA and only generate the episode cards when a different title is available.

PPM Not downloading posters.

I cleared the movies asset directory to make new posters and it downloaded 500 posters and 491 backgrounds and then moved on to shows (shows/season/episode posters). I then ran the script two more times and it didn't download any more movie posters.
Scriptlog.log Third run
Scriptlog.log Second run
Scriptlog.log First run

[FR] Show and season poster options.

A way to run show posters and season posters with different options.

For example:
A user wants to run border, gradient, and no text on all show posters, but at the same time wants to run gradient, no border, and text on season posters. Currently, both season and show posters are ran identically.

[FR] Optimize Fanart search results

Currently it loops for all ids.
It could return false posters.

Add a title check or anything else to make sure its the correct movie/show

[FR] Instead of NA in Fav URL column, "build" url

Is your feature request related to a problem? Please describe.
To allow people to more easily update their fav provider with artwork, even if 0 art is found there, build up link and add that instead of NA. Maybe see if metadata is available and then build it based on the metadata url, but for the artwork.

Describe the solution you'd like
See above

Describe alternatives you've considered
All manual

Additional context
NA

[FR] Do not create a episode card if the ONLY option available is the backdrop

Is your feature request related to a problem? Please describe.
I would rather fix the source rather than download the generic backdrop as a titlecard. A toggle in the config.json to disable_backdrop_fallback: true would essentially do this

Describe the solution you'd like
See above

Describe alternatives you've considered
Need to constantly review the log file but if multiple runs have happened, then its really hard to detect when this happens unless you physically view the files. By not downloading them, then when a fix happens online, the file will be downloaded

Additional context
see above

Recommend Projects

  • React photo React

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

  • Vue.js photo Vue.js

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

  • Typescript photo Typescript

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

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

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

Recommend Topics

  • javascript

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

  • web

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

  • server

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

  • Machine learning

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

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

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

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.