#Plex-Poster-Maker (ppm) Stuff
1 messages · Page 3 of 1
which usually can end up in PPM folder as it comes from another source like fanart...
thats what I did for all my library
this way anyone that has the same shows/movies as myself, ends up with textless
Well, I guess it was working as expected, it was just pulling bad artwork. Unless you integrate OCR into the script, I don't know how it would know it was a bad poster. We just need to find another show that has a textless poster for Season 1 and no textless for Season 2 (and higher) and see if it will use the Season 1 poster for Season 2 and etc.
correct... i am gonna do that for hanna now
This is one long ass thread. I know it’s purpose. I’m just saying…
You would need to train an ai for that, OCR is not possible because of the different fonts on movie posters, also it could be text on a sign and then the ocr says its a poster with text, i tried it with tesseract and other ocr sets, i failed 😅
I didn't think it would be feasible for this
Would be cool to have this in docker
Soon 🫡
I haven’t been following, but is the goal to only create posters for shit I don’t have? Or in other words, If I run and create a bunch of shit the first run, then when I add a new movie, it will only hit up the one movie I have no poster for?
First run, all movies/shows, second run only missing
Ok. Cool
That would be dope. Then I’d have ”uniformly” created posters. And then where I was a different set, I just replace what’s in my assets folders with something else. Dope
It also works for linux, docker will be added soon, i still have to test everything, also the schedule and such things.
it can take up to 8 hours before the api detects this and we see it in the results of the run
and maybe improved/enhanced log rotation logic. 😉
On the list 😂
I know... lol... are you adding these as enhance,ents to your github issues page?
what do you look for when it comes to textless on fanart?
this is textless.... on fanart
Would be a good idea,
Textless on fanart is '00'
but has a language of 00
and yet, the logic did not fallback and grab that textless
for hanna
my bad
that is a textless show poster and not season poster on fanart
ignore me
🤭
in any case, that poster is applicable as the season 1 textless poster and I have put it on tmdb.... now its a waiting game to see what happens
BTW... i also wrote a titlecard creator in python that would open up the video in question and take a snapshot of the video about 30 seconds in to be able to upload titlecards to TMDB.... this could be interesting for @modern pebble if he wanted to address the missing titlecards online
That sounds like a resource hog 🤭
I would like to take a look at that
Let me review it and I will share. At the time, I was surprised by how fast it would create the title cards.
Almost like it was able to Grab the snapshot without loading the whole media file
I could be dreaming as well...
2024-03-06 14:20:55,821 - 2024-03-06 14:21:10,103 which is 15 seconds to process 8 files which were about 1.1GB each and across the lan and over wifi
I was not dreaming
not too bad...
Noice
Well crap... I found that using the default (?) text size of 250 for season posters caused most seasons 10 and up (2 numbers) to wrap the text. Limiting it to 200 will allow it to display on one line. Now I have to go grab a bunch of season posters again. Thankfully, I don't even have to be awake for that to happen! 😀
you have no idea how many times I have deleted the output folder of this script to rerun
Yeah, I have a super small test library.... haven't used it yet, just balls out do the full library, delete, change, run again, rinse and repeat LOL
so i have been tweaking the title_card_clips.py file as the above was really rough
id like to add the ability to specify the time of the clip as a prompt and to have it only grab clips that are missing in the destination output. The idea is that you do one show at a time... and the clips you don't like you delete.... rerun with a different time and it only adds those... you review, see what you don't like... rinse and repeat until you have what you want and then you upload what you need to tmdb... next runs of ppm will then grab the missing titlecards instead of the fallback to the background
Sounds good
drop file into a folder
create a venv
activate the venv
install requirements
run title_card_clips
open a powershell prompt and navigate to a folder and create a directory
cd pyprogs
mkdir title_card_clips
drop requirements and title_card_clips.py into the folder created
cd title_card_clips
python -m venv venv
.\venv\Scripts\activate.ps1
python pip install -r .\requirements.txt
python.exe -m pip install --upgrade pip
now you are ready to run it
usage: title_card_clips.py [-h] --path PATH [--time TIME]
python .\title_card_clips.py --path "M:\media\tv\Alex Rider [imdb-tt6964748]" will default to clipping at 45 seconds
python .\title_card_clips.py --path "M:\media\tv\Alex Rider [imdb-tt6964748]" --time 170 will clip at 170 seconds
folder is created within the script subfolder called output
max of 11 logs are rotated in the folder.
Don't forget to submit to tmdb and help the whole community. 🙂
And the csv file for fallbacks could "feed" this python script.
Tmdb api updated and that textless Hanna season 1 image is now available.
So logic for this is resolved
"BackgroundPosters": "false",
"TitleCards": "false"```
Silly question but if I wanted to run ppm, to NOT create show or movie poster, but still get backgrounds and episode cards, that's not possible, right?
Ehm, i dont think that is currently possible.
Just checking.... sounds like a possible enhancement to add to GH?
$logFolder = "logs"
$maxLogs = 10
# Check if the log folder exists
if (Test-Path -Path $logFolder -PathType Container) {
# Rename the existing log folder with a timestamp
$timestamp = Get-Date -Format 'yyyyMMdd_HHmmss'
Rename-Item -Path $logFolder -NewName "$logFolder-$timestamp"
}
# Delete excess log folders
$logFolders = Get-ChildItem -Path . -Filter "$logFolder-*" -Directory | Sort-Object CreationTime -Descending
foreach ($folder in $logFolders | Select-Object -Skip $maxLogs) {
Remove-Item -Path $folder.FullName -Recurse -Force
}
Thoughts on the above strategy for logs rotation? The maxLogs could be within config.json and logFolder would use the appropriate variable instead of "logs"
The logs folder is always with the most recent run. The oldest timestamped and renamed folders get removed based on the maxLogs value
I did not check yet, but this might need to delete $maxLogs - 1 and $maxLogs must be greater than or equal to 1
Yeah, im also more a fan of folders, with only files it would get confusing when someone has more then 5 set
Ok... let me take a crack at the folders thing and I will PR when ready.
3PRs submitted all for the same related change of adding logs rotation. 1 for README, 1 for config.json.example, and 1 for the ps1 file.
Tested on Ubuntu and Windows.
also tested in Docker, merged 🙂 thanks!
Docker Container added, Please test it, in my testings everything worked.
https://github.com/fscorrupt/Plex-Poster-Maker?tab=readme-ov-file#docker
Works prefect for me... Setup it up in portainer running on my Qnap nas 🙂
I have it set to run 30min before each PMM run 👍 and then Plex-image-cleanup to run 3am everyday
I see a possible issue with that.... what time is Plex maintenance at?
I also see another possible issue with that schedule.... first run will likely surpass 30 minutes thus not having all images run before PMM runs... so the assets might not have everything.
So if pic runs at 5am, when does PMM run?
Separate note, what does the version line on compose file mean?
PMM - PMM_TIMES=03:00,8:00,11:00,14:00,16:30
PPM - RUN_TIME=02:30,7:300,10:300,13:30,16:00
version of docker-compose (formatting)
Oh
I can just offset the PPM by 60min
So the question still remains... what time for PLeX maintenance
it only adds anything new so it runs fast
let me look for it
Drop a meta.lig here and luma will extract it
from Plex from 2am to 5am
Ok... so you should really steer clear of anything that would conflict with that 2-5am
I'd remove the 3am and 2:30am runs
Then that should be good
And consider a 5:30am ppm and 6am PMM run
PPM - RUN_TIME=02:30,7:300,10:300,13:30,16:00```
Also, I think I see some extra zeroes in this schedule
Ppm run times
It's super slow for me, but works
Like 7 minutes for -testing
You definitely have to give the container more resources
Uh oh
mine ran the same speed as running it local did
Mine did not create files in the test folder
That could be part of the problem
I need to see what is going on...
i needed to add another volume line to point at my existing assets folder - "/share/Multimedia/Plex/assets:/assets:rw" them my config just shows \\assets
Test goes to a test sub folder within the config folder
ahh I hadn't tried that
Testing worked for me in docker, i tried that too
so strange.... second run worked
just noticed that the -testing does not offer summary of time the run took
Write-log -Message "Script execution time: $FormattedTimespawn" -Path $global:ScriptRoot\Logs\Scriptlog.log -Type Info
I like that you moved stuff to the RotatedLogs subfolder keeping things nice and tidy
to add the summary with elapsed time
Merged
docker question....
if the /config is where we are supposed to put our custom files and the container is somehow putting Plex-Poster-Maker.ps1 in that directory... arent we then circumventing the whole point of the container?
shouldnt the code be part of the conatiner and not in the /config folder?
the /config is just where the location of the config.json should be
and custom fonts
and custom overlays
this is not the case right now
that file is the one that concerns me as it somehow ends up there...
It makes sense that it has the same structure on all systems, I don't make 3 different scripts for the systems.
If someone deletes it, it will be reloaded when the container is restarted.
On container start it gets replaced with the one from my repo
the start.ps1 just handles the schedule
That is a problem I see be cause I have a PlexPosterMake (copy).ps1 in my directory 😦
Why? I do not have this
it not rewriting the existing file but creating a copy each time
Are you using persistant volumes?
Going to clear everything but my config file out and retest
I just bind the config to my local storage, like in the yml example, i installes my container with the yml from gh
i do not get the "copy" thing on my side
Yea looking good... I think it was me updating the Ps1 from my local laptop
These lines don't show in the logs, not sure if it's just because the API response was null or it's a real error.
Thanks, i will have a look👍
I started seeing the missing poster URL also
It is possible that there is no poster so thats normal, but it should not result in an error like above.
Okey this is strange then 🤔 cause the result also says that it did nothing, is sometjing in the image.csv?
Please send me the complete log folder of this run.
you do not have set the favprovider value the correct way, that why its looking so strange on your site, you have set FANART.TV in config file, but it should be fanart.
i saw i did not had this on readme, its now there:
Doh! LOL
tmdb is the recommended one, because we can update missing files easier then on fanart.
Changed it 🙂
it still searches on fanart for fallback tho!
okey changed the container part with the script, its now inside container, you are right, better this way.
was only a small change 🙂
whats actually pretty cool about this container is that I could put other ps1 scripts in the config folder and run them
interactive session, launch pwsh and then run ps1 files
Yes, that how i run my tautulli/arr scripts to, via cron and docker exec
docker exec -it ppm sh
Cron job on host:
* * * * * docker exec ppm pwsh anyscriptyouwant.ps1 >/dev/null 2>&1
i am on unraid, and my server is more than 10 years old... so its just slow in general for me... compared to running the ps1 from my more modern and powerful workstation.
time for an upgrade 🤭
My "server" is an intel nuc, and im more then happy with that power 😅
I submitted an [FR] that you wrote about the other day
is that where you run docker from?
the intel nuc
Yeah
did you try giving the title_card_clips.py a whirl and see how quick or slow it is?
Not tried it yet, is it cpu intense ? Or does it utilize igpu too?
Running 50 containers on that machine 🤣
nice.. so to answer your question.. I honestly dont know because I am just importing 3 python modules and expecting them to optimize how its done
Just checked the modules, file handeling and image processing with PIL = CPU intense, so no GPU 😬
I like the idea of your script i may look into it with ffmpeg and integrate it to directly upload it within the PlexPosterMaker script to tmdb 🤔
Does this add all the images to plex once it's done creating all the images for everything?
No, it renames the files in the format that pmm needs, so that you can then use it as asset for further processing by pmm.
Either with flat or folder structure depending on what you have set in config file, default is library structure.
There is also a testing switch where you can create all possible posters with a predefined text, so you can see how big the boxes and fonts are, before you mass run it on libs.
Once you've got a solid base I'll start making some suggestions 😄
😅 Should I be scared?
Nope, just things I know that TCM ran into
Ive not done the switch yet, im still using tcm for my titlecards
The main one being character replacements for fonts
… vs ... for example, most fonts won't have the first one
And "cyrillic", shōgan is a good example, one of mine font just added sh gan to the poster, cause it did not had ō
But that is already on my todo list, i have an function from years ago for that case back where i wrote scripts for an rus company 😅
the adventures of
tintin
vs
the
adventures of tinin
so yeah there'll be a lot of niggly things 😄
I know, will give me another headache for sure 😅
I could go on and on 😉
I appreciate any feedback or suggestions, but whether I can incorporate them is uncertain.🤣
Well... not sure I understand.... when you write this versus taht.. I dont know if you mean... I like this over that... or that you want an option to do this and to do that
FONTS issues are more a factor of the font you use, no?
if your font does not support characters, then it will "fail" to render on the poster
bottom and top heavy are not concepts I understand and furthermore do you prefer one over the other?
You can script it to do another split on line if it begins with The or any other pref. And char escape to use another char instead of the cyrillic one so o instead of ō
so lets break that down a little more.. one thing at a time...
fonts wise... if the font does not support the character, you would want to replace it with the equivalent character that is supported by that font?
i ask because on both of these points, I did a lot of research when we built the 7 styles of People Posters
Yes and no, just replace with the equialent non cyrllic char,
So every öòōőœ and so one would be an o
ok, but how would you know when to do that?
you would rely on the user to add something to the config.json that says replace_characters: true?
you have a character mapper
which is specific to the font you're using
yeah... definitely the way to go but painful in so many ways... for me personally... I'd rather ask the font creators to make better fonts
for example on titlecardmaker's default font:
FONT_REPLACEMENTS = {
'[': '(', ']': ')', '(': '[', ')': ']', '―': '-', '…': '...', '“': '"'
}
that support more of these characters
It is also possible with .net you can do a char measuring to see if that char gets displayed with that font, if not it has a lower lenght
ok.. so conceptually I now understand the request in terms of character_mapper
re top/bottom heavy, this would be classed as "top heavy" since the majority of characters go to the first line
people may prefer bottom heavy so that their text is
THE
ADVENTURES OF TINTIN
as far as the weight goes... how would you envision where to "split" text?
The third option is to calculate the amount of characters and try to get as close to an even split as you can
Basically a function that combines both, checking font if it is capable of displaying that char, and then a hashtable for replace if not.
THE ADVENTURES
OF TINTIN
if you make your box smaller in width you might achieve this 
but then it would break for other strings
Or a fourth option is that people may have preferred characters to split on
for example splitting on the :
TAYLOR SWIFT:
THE ERAS TOUR
so the split logic is also going to be based on a set of "rules"
yes
so yeah... thats gonna take a while I would say... the idea here originally was not to replace tcm
Yeah of course, I did say once it's more stable
and frankly I will most likely use it to pull textless
and not do any image processing
Yes.. I understand...
"Oh I wanted to use this font but it doesn't like the é in beyonce so now I have beyonc☐"
I an looking for a GAP replacement... not because I dont like GAP, but it serves two different purposes
Tell the Queen Bee to change her name
🤣
lol
totally understand Yoz
so the abiklity to pull textless posters was a huge feature for me and GAP could not fulfill that
so yeah... a split feature is cool and a character_mapper feature is also cool
Over time, these things will surely be incorporated in some form, but currently, I'm quite happy with how well it's working. After all, it's only one month old and emerged from my fun and laziness.🤣
100% 
Yozora, do you know if TCM can extract titlecard clips from videos? LIke it lets you clip a frame from 30 seconds in or something like that?
Havnt seen anything like that in webui release, its main feature are the blueprints.
always based on existing titlecards then.. ok
Yeah, it pulls the info from tmdb to, for episode pictures.
Thats the way i do it, i have one backdrop picture per show and i set this backdrop picture on each episode inside the show.
With tcm
I think it looks cleaner then having an different pic per ep
yes and no... I guess its personal preference at the end of the day...
I mean.. yes its definintely cleaner
no as in I prefer seeing different episode titlecard clips
but if they dont exist on tmdb, then I want to know and create and upload to tmdb
Yeah, i will have look at this next week i may can integrate a function to upload missing ep pic inside the ppm run to tmdb.
hmmm.... I think i have heard that api to upload images directly to tmdb is not permitted... however I am likelye wrong about this and just misread something
You are right, travis thinks it would create chaos 🥹
because it would... look at the default language issue... do you have a direct communication link with him?
would love to understand why my proposal for a fix would be so drastic
@fresh gorge If I run the title_card_clips more than two times it has an error trying to rename the log file.
Oh??please share
Nah, just searched on forum and found an old thread
I also updated things in my GH so maybe it's been fixed...
Just need to fix some documentation
I cleared the logs, grabbed the latest off your GH, and ran it. This was the result of an attempted third run.
thanks... I am still updating my GH and will start standardizing the logging and other stuff in my hodge-podge of python scripts... stay tuned
thanks for your patience... the readme has been updated and the script has as well. please try it now. Still working through the other python ones, but tcc should be fixed
No worries, I was just deleting the logs and running. I did find out TVDB is pretty picky about uploaded images 🙁
I was doing both
oh wow...
Well, for one series anyway.
i think tmdb has the right balance of restrictions and freedom...
Seems to. They didn't delete the poster and background I uploaded like TVDB did.
I created a second directory to run PPM to download artwork without processing and then I'm going to go through and upload to TMDB for the stuff that needs it.
yup with 0 image processing
yep
finding textless posters and season posters can sometimes be challenging
Yes, which is where TCC comes into play. I did find I sometimes need to run it at a variation of times to get a really "good" image to upload.
But it makes it so easy.
yes... I think I mentioned that... delete teh ones you dont like... change teh time, rerun and see the results
Yes. And I like that it skips the images you keep
yup... is logs fixed?
I actually haven't tried it yet. Just killing a little time before we go meet friends for dinner.
ahhh... np... enjoy
Log issue appears to be fixed, thanks!
FR - spawn multiple (up to 10) parallel posters for magick processing to improve overall performance.
Denied, logic is per lib and per item in lib, only first run takes some time, after that its finished in under 7min. To be able to process more at once it would require a complete rewrite and also it must be handled differently as it currently does.
Processing your request...
A message by ratounade_57777 was moved to #1216711943080116234 message by bullmoose20
Yup. Understood.
keep getting this error but every thing else is ruuning fine
also any plans on adding discord notifications for start and end of script like in PMM? 🤞 😎
can you share youre redacted config.json file
.\notif.ps1 -WebhookUrl 'YOUR_WEBHOOK_URL_HERE' -Username 'Plex-Poster-Manager' -Content '' -EmbedTitle 'PPM Started' -EmbedDescription 'PPM Just ended...' -EmbedColor '16711680'
or as a function inside the script:
function Send-DiscordMessage {
param (
[string]$WebhookUrl,
[string]$Username = 'Plex-Poster-Maker',
[string]$Content = 'I guess I can put whatever I want here',
[string]$EmbedTitle = 'Optional Embed Title',
[string]$EmbedDescription = 'Optional Embed Description',
[string]$EmbedColor = '5763719' # Hex color code for green
)
$Embed = @{
title = $EmbedTitle
description = $EmbedDescription
color = $EmbedColor
}
$Body = @{
'username' = $Username
'content' = $Content
'embeds' = @($Embed)
}
Invoke-RestMethod -Uri $WebhookUrl -Method 'post' -Body ($Body | ConvertTo-Json) -ContentType 'Application/Json'
}
# Example of using the function
$webhookUrl = 'https://discord.com/api/webhooks/YOUR_WEB_HOOK'
# Call the function with desired parameters
Send-DiscordMessage -WebhookUrl $webhookUrl -Username 'Plex-Poster-Manager' -Content '' -EmbedTitle 'PPM Just Ended' -EmbedDescription 'It just ended now' -EmbedColor '16711680'
I get this error as well. Looks like for the season poster, when it finds text for Swat Season 2, it falls back to fanart and you get the error
Might be because there is a variable that was not reset or something...
I will integrate apprise 👍
Very cool... never even knew about apprise
I was able to repro your issue
specifically: "LibraryFolders": "true",
ohh boy ^^ 😄
but it will only work in docker container with apprise.
Really... all those options and flexibility and it must be in docker? Too bad
yeah cause i dont want to handle python installation in my script
apprise is only available via python or via a selfhosted docker container or i install it directly in my container image
To be able to use it in script on windows and on linux i would have to cover the install process
but PRs are welcome if you want to integrate it 😄
in container its only 2 lines in dockerfile
It's the dump all asset folder that PMM uses. I am not using folders now because it is easier to show large pics view and just mouse wheel scroll looking for messed up posters (like ones that somehow are foreign or an incorrect match)
and this is an example from windows where i have to point to the apprise exe, that would differ on so many systems 😄
What are your thoughts on offering a fallback to the function I posted above? Where it's just a simple discord webhook? Apprise for docker and Unix, while windows would ignore that and use the function?
Ahhhh yes... for sure... when you are first trying to clean things up and add posters and stuff to tmdb, having it all in one folder is the best way
already in testing 🙂
FS, were you able to repro the issue that Riptide reported for the SWAT 2017 show?
yeah, but im still searching for the "why"
I repro'd it late last night and did not have the time to step through it and see what was going on.
@rare tulip i saw in your config that you prefer en over textless but you also do all image processing with text apply and so on, is this right or just a typo in config?
My config?
forgot the tag
I saw the same but then still got the same error.
With xx, en, de
I am at office today so limited to 0 access to my machines as I am only able to reach them over my little phone screen....
I did get it down to, poster creation for swat, deleted only the season posters, reran, and problem shows up
Other oddity, season 7 has a textless, but ppm still downloads the text version.
And seemingly a duplicate of season06
If I delete just season7 poster, then it downloads the textless
If I delete season6 and season 7, problem comes back
Just trying to find a way to simplify the logs and troubleshooting....
Also noticed a logging issue. See the space in the filename? Seems to be logging related only which is strange to me... this happens on all files and not just swat
okey i think i found it why it searches on fanart, i do have a logic issue in there, gonna have a look on thuseday, im also not at home right now, because its a poster with text it searches on fanart, related to the only textless order i had before, i may have forgotten to adjust that part.
As a 99.9% remote worker I despise office days 🤣 ... but I run Tailscale in docker in my lab and then have total access when remote 🙂
Our laptops are locked down so I can't get to my home network
That sucks... I am lucky enough to be able to use my own laptop
Makes sense from what I am seeing as well in my limited review of this bug
Well, pros and cons I guess...and they won't let me connect a personal machine to the work network, so I am kinda stuck. But that's fine... I make do...
but back to my question: @rare tulip
LOL I go back and forth... I liked the textless but was having a bunch that were really ugly looking so I went back to normal. You guys are fine tuning everything so I might go back to textless
i can't wait for this to be docker
It is
Docker compose is there https://github.com/fscorrupt/Plex-Poster-Maker
well shit, that last i heard it was still being worked on
i would like to set this up on my synology, is that possible?
the poster magic is what i'm not sure of
How do you mean?
The container has all you need
You just need to setup the config file
ok, so it's all built into the container
Yup
ok, then do i still go in the .json file and edit whatever keys and shit?
1 config file and decide on what fonts and overlays you want to use
Yup
Just like you would the config.yml file
will this setup, so that i just have to copy the shit to my asset folder?
Also, it comes with a prebuilt font, and a prebuilt overlay for poster and title cards
Exactly
cause i don't want to overwrite some of my existing posters like my diiivoy neon shit
Or point it to assets2
Then you can flip config.yml to assets2
It's not suppposed to overwrite
are there any issues i need to watch out for?
Captures differences
Yes.
Hence I suggest assets2
This way you can see how it works
Decide on if you want borders or not
Textless or not
Text overlay or not
Raw file or with a gradient overlay
First thing is to get all your keys and stuff in order. The tmdb one is not the same as PMM tmdb key
Once that is done, decide on your primary source. I suggest tmdb
Then decide if you want textless, then en, then another language for posters
Like if you want to grab Spanish posters, you would put es, xx, en
This would prefer Spanish, then if that's not found, textless, then English
I use xx,en
I want textless
Then you decide how you want to alter the downloaded images. Font, color, border, border color, gradient overlay. They can all be switched on or off depending on what you want
There is a -testing mode where you can try it out and it shows you what the output will look like so that you can decide if the boundaries you gave it for text and borders is acceptable
The readme is pretty thorough.. take a peek at that as it's pretty easy
@fresh gorge f me... LOL
i set up the docker compose, where do i download or setup the config file? that's not listed in the docker compose section
Just take the config.json from the site?
the file is asking for i have magick installed
do i have to create a new tmdb account?
No you don't
Login to your account and go to the section for apikeys and you will see the other key to use
i'm trying to figure out how to generate a new key, but don't want to eff up my pmm key
my config
You don't need to
do i use the long ass read access key?
Exactly
Its like 7900883892 characters long
can i skip fanart?
there doesn't seem to be a free version
i've tried to find a free api and don't see it
One sec
nevermind, it dorked me around.
now how do i properly set my asset path? do i put the "real" path to where my assets are located?
I wouldn't until you are comfortable
You could place it right off the config directory
./assets2
Or map another volume
sorry dude, i'm just trying to get shit all setup
so do i need to map my pmm assets folder to ppm?
ok, so what should i do right now while i'm trying to get it tested
./assets
i like your idea of assets2, to test
so do i put that in the asset path?
That will create the folder in the same directory that you have config.json
Yes
what's the proper file name for titlecard or background for pmm?
Magick installation: ./
Not sure what you mean?
Title cards are for show episodes only
Background applies to movies and shows
All can be pushed by PMM to Plex
"overlayfile": "overlay.png",
"backgroundoverlayfile": "backgroundoverlay.png",
"titlecardoverlayfile": "backgroundoverlay.png",
imageprocessing to false?
Well... for image processing... do you want to apply text to the image?
Do you want to apply a gradient?
Do you want to apply a border?
Those are all "image processing " tasks
do i put all this shit in my ppm directory?
Yes
If you don't use image processing then the zip stuff not needed
You have a test library in Plex?
not at the moment, but i can create one
You should add all libraries to the exclude line and only do one so you see the results
You can also stop the run and it will just continue where you left off
Wipe the directory and it will just start over
Change the path and it will "start over"
The other thing once it's started is I would docker exec -it ppm bash
so once i have it going, then i can set it to my pmm assets, and then it would only add missing shit?
Yes
But I would always recommend a backup first
To be sure
You use flat or directories in your assets in PMM?
directories
So set library folders: true in ppm
Wanna share a redacted config.json before you run it?
will luma redact?
do i need to create the assets2 directory?
Nope
It will create it right off the folder where config.json is
If you used ./assets2
can i dm you the config?
If you like. Sure
Looks fine.
Not sure if you gonna like the font
But log into container interactively and ls -al
You should see two ps1 files
i don't remember remember how to log in interactively
yes, i see them
Type pwsh
ok
This will activate the powershell within the interactive session
Now run Plex-Poster-Maker.ps1 -testing
This should kick off a test session to give you an idea if things are setup ok and what the output will look like
A sub folder called test will have all the results
Screenshot please?
Isn't it PlexPosterMaker.ps1?
which you can see i tried that
maybe .\PlexPosterMaker.ps1
I usually start typing Plex and hit tab to auto-complete
And it should decide if it needs the .\PlexPosterMaker.ps1 -testing
this worked
now it's running
yeah
It should create about 8-10 images
yes
So that's the font you chose
is that what the font looks like?
what font did you use?
I used the same as we use on our defaults
ComfortAa-Medium
Which is why I sent you the zip file that contains other fonts
But you can drop whatever .ttf file into the directory and then update the config.json
ok, that i'm ready to run, do i just change the run time in my docker compose?
which i tried, and it isn't creating the assets2 folder
I'd just run without the testing
so do i do the same thing, just drop the -testing
It's in the same directory as the the config.json file
That's where assets2 will be created
Exactly
it only did one movie and was finished
Huh?
i can see it when i do ls -al, but doesn't show in macos
right, but why can't i see it in macos
I feel like your path might need to be ./config/assets2
how do i delete that directory in powershell
cd assets2
i'm there already
ok
Yes
Is it safe to say that you have a Plex library called Movies - Not Shared
And your config is excluding all the others.
yes,
Ok. So try with the new path
There you go
So consider that if you add overlays, you may want to resize the textbox
If you look at my config you'll see what I think are decent settings for ComfortAa-Medium
some shit doesn't have an image in the folder, does that mean it oculdn't find anything
Depends on the logs
Should tell you what happened
There is a csv file that also has details
that's with your settings
FYI, if tmdb has posters that are labelled "No language" but they contain text because people did not classify things correctly, then you might not get textless images. Just set the language to the proper language and when the api updates, if there is a textless, it will grab it.
Did you delete the file before rerunning?
yes
Oh... interesting. I did not think those were my settings
well unless i copied the wrong shit
But I have been testing like crazy so who knows
so this creates a folder for each library, but i don't want it to do what
You said that is what you did in PMM
That's not my config btw as my textbox is narrower
my assets directory in pmm is straight up /config/assets/<<movie name..
i copied your config from above
unless you have another config somewhere?
dammit, i think i figured out what i did. i copied the numbers to the example instead of to my own config
There you go
but how do i still use the folders, but not have it put a separate folder for each library?
And set LibraryFolders: false for a flat structure
Kill run with ctrl-c
Update config.json
Delete the folders
Rerun
You could delete the whole assets2 from macOS
I also use a different gradient overlay
Not as dark
But you can decide
my pmm assets structure is /config/assets/<<movie name>>/poster.jpg
Movie name is the folder name, no?
yes, i just don't have them in a library folder
Lemme think for a second
So it's not flat
The issue is that you end up with an assets folder that has ./assets/<library name>/<movie>
like so
all my movies, no matter the library are thrown in the "Movies" asset folder
so if i only want it to use textless, do i just not use en as a fallback?
Well yes
But this was designed to give you something instead of nothing in each directory
But yeah
xx only
And then empty folders would mean textless not found on tmdb or fanart or tvdb or IMDb
It may still have a final fallback of downloading text as a last resort from your preferred site
so my next question, what's the easiest way to integrate with pmm?
The csv produced will tell you
Well...if you "trust" it as your asset source, point the PMM assets to it per library
Done
but i still want to use some of my existing assets? do i just copy those over to the ppm directory?
Or the other way
Up to you
Here is a suggestion
Rename your current and live assets folder to assets2
Make ppm assets the new source
Copy from assets2 to assets for the posters from diiivoy and others that you want
Done
do then i just need to map the ppm assets so that pmm can use it right?
Or the other way around
In the ppm, new additional volume map to point to where PMM sees the assets folder
This way you ain't touching anything on your PMM config
Well config.yml would still need to point to libraryfoldee per library as a change as well
and in essense, my assets would stay up to date, because as i added shit ppm would search for a poster on it's daily run
what do you mean?
I think the container has a built in schedule
Twice a day
Ppm can't merge all movie libraries into one folder
Like you currently have
Bedtime for me
thanks a bunch for your help
@proud seal and @fresh gorge did find one issue. i had a couple assets already that were named poster.png. PPM still created a poster.jpg
I need log files 🫡
If you have another folder structure then ppm has with libraryfolders true then its normal that it recreates them. My script only checks in his desired location. So for assets in: path you specified/lib folder name/title folder name/poster.jpg
And in flat asset path you specified/poster.jpg
Two things....
I have 4 libraries defined in Plex: TV Shows, Movies, TestTV Shows, TestMovies
This script will output (LibraryFolders: true) 4 folders:
assets/TV Shows
assets/Movies
assets/TestTV Shows
assets/TestMovies
In PMM, I have two folders defined for assets. In both sections of my config, for TV related stuff, I point to: assets/tv and in the movie related sections, I point to assets/movies
As such, people with existing structures as I have described above would need to make some changes and in theory, duplicate folders exist... because a 4K library and a non-4K library for the same movie would need 2 posters instead of just one.
Secondly
And I have not reviewed this... again, people with existing assets, if they drop into the assets, gif, jpg, jpeg, png (or any other poster.ext) and since you drop in .jpg files, only if the .jpg does not exist will you write to the folder.
And if they only have poster.png there, then they end up with poster.png(their original) and the ppm .jpg one.
He has a library folder setup like I described where movie based libraries are all in 1 movies folder and then each movie name as sub folders off that
So 4K Movies, Movies in his assets is:
assets/Movies/Ant-Man/poster.jpg
Not:
assets/Movies/Ant-Man/poster.jpg
assets/4K Movies/Ant-Man/poster.jpg
And in his case, he has some folders with:
/assets/Movies/Ant-Man/poster.jpg
/assets/Movies/Ant-Man2/poster.png
After running ppm ends up with:
/assets/Movies/Ant-Man/poster.jpg
/assets/Movies/Ant-Man2/poster.png
/assets/Movies/Ant-Man2/poster.jpg
Just verified that you check for the existence of jpg files in 40 places (searched for jpg)
Maybe this:
$PosterImageoriginal = "$AssetPath\$LibraryName\$FolderName\poster.jpg"
Should be:
$PosterImageoriginal = "$AssetPath\$LibraryName\$FolderName\poster.*"
But always create .jpg
yeah i know, but i wont cover all those kind of structures, if he want to use ppm he has to adjust his current config in pmm.
It only bloats the code unnecessarily, the change in pmm only takes a few seconds.
i may could change the test to poster.* but the structure change is something i wont add, cause some other peaople could have other wishes too 😄
i will have a look on all this including the logic part tomorrow
I agree on the folder structure
It is extra maintenance for people with multiple libs and same movie in both... when doing things manually
Not here
Where it's automated
If he is using PMM then all he needs to do is add a volume line in the PPM yaml file that points "assets" to the existing folder. My assets go in Multimedia/Plex/assets which is what PMM pulls from so I just add - "/share/Multimedia/Plex/assets:/assets:rw" to the yaml and put /assets in the config
I think he figured that out... and thanks for sharing as we never saw what he ended up with
Replacing .jpg with .* will reduce overall character count by about 80... lol
Btw, did you ever mess around with magick and the -quality setting for outputting jpg files?
I might try to do a run with -quality 100 which is not lossless to compare with a default and see the size diff
Tip on your embed... put your logo as an embed image at top right
That way it's always your logo
Put logo on GH and point to it when creating embed
Or to the downloaded local version
Consider putting Errors as a header with a number instead of within the sentence as you have
Errors, Fallbacks, etc...
Also, if clean run, embed color is green. If errors, red. If testing, blurple. If fallbacks or not textless/primary language, then yellow.
It's looking great.
yeah gonna play with it tomorow currently i only have red and green
sadly apprise does not support payloads for discord, so i have to use for discord a seperate notification as when someone puts telegram or gotify as apprise url :/
For some reason I can't get the container to run this morning. I killed everything and started from scratch but still just getting this error. Anyone else having an issue?
I noticed that the .ps1 is not downloading into the folder
the only thing I added is the config and font
i've adjusted, the issue still is as explained. i have poster.png, and you're savign a poster.jpg
remove the ppm image too, i think it does not get updated, the ps1 file is now in container not in config folder
i know, is noted, the check will be added in next release
thanks bull, i thought i shared that was working. that's when i discovered the issue with the poster.png and poster.jpg
yeah good catch 👍
this service is cool. i just put it on hold until the extension fix
when will be next release? LOL
this week 🙂
now that i got it working, i'm anxious. LOL
Killed everything and rebuilt and now working 🙂
im on a trip and have limited access, thats why there is no release earlier, but i return tomorrow and will then integrate/fix all the things, after testing it gets published 🙂
Would you be ok with me adding a PR to allow for outputQuality: 100% in the JSON and adjust the 82 lines with the -quality argument for magick.exe? My tests ran well... and I will share the results here of the test folder output at different quality levels
better after i added my changes, cause i already changed a lot on script 😄
No problem and this is why I asked
Just seeing if I could help on some small stuff... and not have you duplicate efforts
Oh... and it seems that default compression is as documented.... 92%
Going from 92% at 5.25MB ends up at 10.4MB at 100%
Ringing and other artifacts are improved though.
And this might make me have to re-evaluate whether all the defaults should be redone at 100% as people have complained about dithering and ring artifacts in the past
A mere 100K files to regenerate
💩
In my opinion, this is dope as shit
Gives most posters the same general style / look as far as title overlay. But then my pmm overlays. Lol. I use about every overlay
Like me... so I might end up with ImageProcessing:false allowing me to leverage all the overlays without them covering any text from the poster image as I prefer textless.
The idea is that with the test folder, you can apply overlays to that to tweak your ppm settings so that your overlays and the textbox don't collide
As well, maybe tweak your PMM overlay locations to avoid collisions
Ok. What exactly is the image processing again?
So a possible workflow... take a movie that has ALL the possible overlays or at least the one with all the bottom overlays. And take that movie and add it to your test Plex library.
Then you replace the poster with the one from the test output from PMM, AND you remove the Overlay label.
Then you run your PMM against the test library and see what happens.
If there are overlaps,
Tweak the PPM settings, recreate the test, replace the poster in Plex and remove overlay label, rerun PMM for overlays only against Plex test library and review the results
This is an iterative way to find your optimal settings for ppm when image processing is true
In ppm, this means no gradient-overlay.png, no borders, and no text applied to anything.
Haha. I like the gradient and the text
So then you can turn off borders by setting that to false in all sections of config.json
So you leave imageprocessing to true and you turn off the borders in the other sections
"ImageProcessing": "true"
},
"PosterOverlayPart":{
"fontAllCaps": "true",
"AddBorder": "false",
"AddText": "true",
"AddOverlay": "true",
"fontcolor": "white",
"bordercolor": "white",
"minPointSize": "95",
"maxPointSize": "250",
"borderwidth": "30",
"MaxWidth": "1300",
"MaxHeight": "500",
"text_offset": "+300"
},
"BackgroundOverlayPart":{
"fontAllCaps": "true",
"AddBorder": "false",
"AddText": "true",
"AddOverlay": "true",
"fontcolor": "white",
"bordercolor": "white",
"minPointSize": "95",
"maxPointSize": "250",
"borderwidth": "30",
"MaxWidth": "3200",
"MaxHeight": "500",
"text_offset": "+200"
},
"TitleCardOverlayPart":{
"AddOverlay": "true",
"AddBorder": "false",
"bordercolor": "white",
"borderwidth": "30"
},
"TitleCardTitleTextPart":{
"fontAllCaps": "true",
"AddEPTitleText": "true",
"fontcolor": "white",
"minPointSize": "95",
"maxPointSize": "250",
"MaxWidth": "3200",
"MaxHeight": "280",
"text_offset": "+300"
},
"TitleCardEPTextPart":{
"fontAllCaps": "true",
"AddEPText": "true",
"fontcolor": "white",
"minPointSize": "80",
"maxPointSize": "100",
"MaxWidth": "2000",
"MaxHeight": "140",
"text_offset": "+150"
}
}```
I guess I like this cause I can keep playing. If I don’t like it, I just change borders and try again. Right now I’m still undecided on the borders. But, I have tended to gravitate to posters without
Yeah. I honestly think the assets process is pretty simple. Even more simple with the folders
Search for -composite and replace with -quality $global:outputQuality -composite
"OverlayPart":{
"ImageProcessing": "true",
"outputQuality": " 92%"
},
# Poster Overlay Part
$global:ImageProcessing = $config.OverlayPart.ImageProcessing
$global:outputQuality = $config.OverlayPart.outputQuality
@proud seal , that is essentially what I did to config.json and the ps1
Oh! Just remembered how a bunch of new real estate arrived now that flixpatrol is gone
@fresh gorge yeah, i realized i had that. we need to move aspect somewhere else. it sit's it's fat ass right in the middle of most titles
maybe all this shit @fresh gorge
Is that Universal logo the studio overlay?
yes
cool, let me know where you throw them (template variables)
Like gonna mess with this tomorrow
Is that new in the nightly? Using the 1.20 release and not seeing it.
no it's not new in nightly. it's been that way since at least 1.19 i think
I'll have to check my config, maybe I'm not using studio for movies.
Not seeing it on any of my movies
i use most, if not all the overlays
what are you doing on the right with flags? you have just the flags and no language text. what variables do you use for both the language, and language (subtitles)
Looks like I'm only using the studio collection and not the overlay. Going to have to change that!
Are you guys using the mediastinger overlay? I am and that's where I'd put the studio overlay so I need to find a spot for it. I really only like the overlays along the top and bottom edges (plus the ribbon). I didn't want to "clutter" up the poster with a bunch of stuff.
yes, i use the mediastinger
I think I'll stick it top right. I think it will get covered by the watched check but if unwatched it will be apparent.
i use the defaults pretty much the way they are, minus the exception of moving the ratings to the right side
I only use a couple defaults without template variables.
so then you'll need to figure out where to put status if you put mediastinger in it's place
I'd move it to top right corner
I just realized I need to move the overlays to compensate for the border
Yeah, I forgot about the border that PPM was adding. I need to move them all in/up/down to compensate. I didn't make the streaming bigger, just the position.
- pmm: streaming template_variables: horizontal_align: left vertical_align: bottom vertical_offset: 3 horizontal_offset: 3
I think the logic I used was streaming on movies, networks on shows
Okay, I'm out. Have a good one!
Or don't use borders?
+ poster 'png,jpg..." check integrated
+ apprise/discord integrated
+ logic fixes
+ outputQuality added
Silly thing.... for -testing, if people have a config that does not use borders, why are test outputs showing borders?
Unless I am wrong? Which is entirely possible... still early for me
yre wrong, too early for you 🙂
@proud seal If I am using Discord with ppm running in docker do I just add the discord webhook? Do I need the appriseURL or should I just comment that out?
you can add it either to appriseurl, discord or both, it handles in script if discord is found in url
Complete side-suggestion
If you're planning on allowing more "styles" of posters, since you can use fanart, you could grab movie logos and recreate this style automatically
I couldn't get the notifications to work until I used the standard discord webhook in the ApriseURL line also... but not formatted the way the example stated. now it's working 🙂
i have it set like this and it works in container for me
Yea, I had the Discord line right but until the apprise line was set it wouldn't work... I'll try clearing out the discord line like you have
both ways should work, i also tried with cleared apprise url (you have to restart container, cause i updated 30min ago a small bug for the notification url.)
I cleared out the Apprise and the discord works. The only thing I notice is the timestamp shows 6:09am when it's 11:09am here
have you changed the TZ env in docker compose?
yes to TZ=America/New_York
ah okey, its an discord utc formatting error, please restart container and try again.
That did it 🙂
Nice, had to change date formatting 
Will -testing send alerts or not?
Let me get all the latest code and docker going again
Hmm... still not getting discord alerts... have you considered (at least for docker) some kind of ppm version logged to the logs so you have a good idea if the run was a Unix run, docker run, windows run, and what version of your script?
Send the redacted config please.
Currently i do not have a versioning
🤣
We all have such days
As for versioning, I guess it's a [FR]
I did the same thing LOL
Cannot reproduce that, even when i completley delete my test folder i do not get those errors 🤔 not on docker and not on windows.
magick: invalid argument for option @ error/magick-cli.c/MagickImageCommand/993.
Only on the background part
None of this gets logged to the logfiles, hence the screenshots
@proud seal i simply turned borders to false, and now i get ZERO text
So you took latest script and then changed the boarder part? Or what did you do?
If you did so, you also have to update config file cause there was a change for a new setting: output quality
Just tried a testrun without boarders, it works with latest script/config on my site.
i just modified my config.json
Docker or windows?
docker
Docker always has latest script, so you have to add that part to config file.
This setting:
I have it on my todo list to integrate a check for config changes,
But did not found a good solution yet 😅
Check the example for all the rows. If a row is missing, report the missing row as an error and abort
Call the function something like function online_json_check
Or that lol
So with the notifications, would I just set the Discord webhook and clear the Apprise? Or do they both need to be set?
Hey guys. how long does it take u guys to do the Title Cards?
atm mine is take from 23 to 50 secs. So it take roughly 255-500 hours for my 40k library if my maths is right. Is that about right or is my system being slow (its fine if it is, I just wanted to know so im not wasting time when it could be faster)?
I have it set up in a docker
For me, docker is much slower than running on my local machine
"BackgroundOverlayPart":{
"fontAllCaps": "true",
"AddBorder": "false",
"AddText": "false",
"AddOverlay": "false",
"fontcolor": "white",
"bordercolor": "white",
"minPointSize": "95",
"maxPointSize": "250",
"borderwidth": "30",
"MaxWidth": "3200",
"MaxHeight": "500",
"text_offset": "+200"
},
When -testing you check for true.true then true,false then false true. Since this is false false, nothing sets the 2126-2131 variables to the right of the magick command, and what is set does not exist because the backgroundShortText.jpg never was created before these lines
So in theory, if false,false it means no border and no overlay
And I also have no text for background
So the backgroundShortText does not exist
4seconds per title card
docker or not? I get that just running the script without docker but from 20-50 secs while in docker
I will probably run the script for initial run and use docker to maintain it. I just wasnt sure if I was being a retard again lol
Local is 4-5 seconds per title card
Docker is slower because that machine is running 30 containers and is about 14 years old
I still have the errors with the swat tv show for the seasons. @proud seal
Then you have to give the container more cpu/ram, i set it to unlimited and i have better performance in container then on my windows machine, for example, only the query takes about 5min on windows for me, on docker im finished after 1min 13sec.
They dont, but you can.
okey i will have a look, but that was from the beginning then 😄 cause i did not changed anything in there.
should be fixed now, had no time to really look into it, it was a variable that did not get reseted to $null
+ Simple Versioning added
+ json Properties validator
+ $null changes for the season part
+ Testing mode adjusted and fixed
In theory, false, false,false for background, title card, or poster would just be the pink landscape or portrait images
should be fixed, i still apply the border but without text.
Is setting cpu and ram something that you do within the docker compose file?
i think by default, a container has no resource constraints and can use as much of a given resource as the host's kernel scheduler allows.
but i dont know unraid.
if you also have a lot of containers running at the same time you share the power over all containers, this can lead into slow script runs.
i have lot of containers running, but they do not consume much, so in my case its really fast on my docker host.
on the other hand when i run this on my windows machine where my vmware takes 80% of resources, its slow 😄
Hmmm with compose, I cannot access the cpu pinning in unraid. I'll need to look into this.
Might be nice to post a notification when ppm starts. And with the settings used and version. This way you can also see when and if scheduled runs happen.
i think this is to much, for this info you have the scriptlog. on error you also get a message in discord.
how are the files named? i only see 3 file names.
because its a simple count: $backgroundsscount = ($gettestimages | Where-Object { $_.name -like 'back*' }).count
Do you count before you delete the base images or after you remove them from that folder?
It's the test directory... I don't rename anything
count is after
what are your settings?
i do get 13 images if i select addtext -> false on background part.
So strange....now it's there
😄
is that what you expected$
Yes, basically your settings without text, boarder and overlay
Ok. Was not sure if that box was supposed to be there with that dimension
The dimension must be your setting?
And the issues with the number of folders is a docker one. The perms get all messed up and files can't be deleted or created... it's messed up for me... so I need to troubleshoot that. I also tested local on windows and the swat issue is resolved
I will double check but that does not look right...
Definitely not 3200 wide
What issue? For me the script behaves the same on docker.
So sometimes, unraid and docker perms get to a point where the container can't write to the file system because of perms. I can't even delete the files from a windows mapped drive
I need to drop to terminal and go and delete the folders manually
My windows machine is running under my user account and in a folder that has all my permissions set... I don't currently push to the file share on my unraid server as I am testing things and need to still tweak.
So I think it's related to umask and pgid puid
For example, my Plex container is as such:
was a copy issue on my site, should now be fixed
you can remove the pgid/puid/umask part and change it to your needs, its just how my perms are on my server.
I am not very good with compose and stuff so I just set it to what my others are set to. Hoping that resolves it.
Minor request, I hope, anything you can do about this divider?
Maybe just use underscore? And less of them?
______
Instead of
-------
And another minor thing I just noticed... never noticed this before... running back to back runs of ppm only shows ppm banner the first time... subsequent runs don't show it.
On mobile, on desktop it matches, yeah im not happy with that either, underscore does not work 😬
Hmm 🤔 i thought i already fixed that
This happens on local run and on docker run
The banner thingy
At least the version control shows there
I think it should stand out more in red, because it gets lost, but that's just minor as well.
Even consider a notification so that people that set it and forget it will know there is a new version available through a notification rather than sifting through logs. Just an idea...
Yeah, it was fast implement, needs improvements 
Another minor / silly thing that would help me personally and maybe others... is having a little more information on what system ran the script?
like the top one was my current windows machine and the bottom one is the docker
Do you forget where you run your things?😅
like I said.. its mostly now because of testing, but its a "nice to have"
Normally you only have 1 instance or?
Yeah but that could find his way in footer
Finished - os - version and and and...
cool. let me pull
ahh.. ok... no problem. I am trying some stuff to allocate more cpus/ram to the compose file.
I guess I should have updated the version number to 1.0.3?
Normally yea, but that was really a small PR 😅
PR #39 submitted to correct order of "parts" in readme to match config. PlexPart was after Notification, swapped order to follow config order.
now you can pull 🙂
Tried on docker, it came back with docker 🤔
But this was on 1.0.3 so maybe it wasn't fully ready at that point.
Ah yeah, on 1.0.3 it was unknown 🤣👍
Yeah so that's why I am rerunning to see what it becomes... it will probably say docker as it does for you... but since there is unraid, who knows...
Pretty sure I found another "count" issue or a variable that was not reset for fallback on Episode TitleCard posters
S01E01 shows fallback true in CSV, but in logs, shows that it found a textless on my primary of tmdb, so what would cause the fallback?
So I was playing with a different poster overlay and got the name wrong in the config. Log says it's not the right size, which I guess is correct since it doesn't exist, but I think there should be more of an error? The display shows that magick couldn't find the file, but it doesn't say anything in the logs.
Yeah.. I think that we now have a way to validate that all the lines are there in the json file, and now there should be some validation that the files and paths exist before continuing... so in theory, if your file does not exist, post the error to the logs and abort run
You are right, but for playing around there is the testing mode, so if you want to test, please use it 😅
For user errors in config file there is currently only validation for things that could break something, if you enter wrong names of overlays - stupid, start over or use testing mode.
But yeah, some sort of validation for at least if it exists could be integrated, i wont validate every line in config.
Perhaps I shouldn't have said "playing around". I was changing the overlay file being used but I incorrectly used an underscore instead of a hyphen in the filename. I think the line should have been written to the log file. I'm not sure what would have happened if I left it running, or how easy it would have been to find the problem if I hadn't seen the error displayed. In fact, I didn't even see where it said the file didn't exist, the yellow line caught my eye and I was going to check the dimensions on the file and then I caught the line above it.
Had it started the image processing that would have scrolled off the screen and I wouldn't have seen the error about the file.
Noted and FR added.
And the way to go is - if you change something in config do a testing run afterwards, you should take those 2min before you may make a mess
Yeah, probably. I like to live on the edge LOL
BTW, this is meant as CONSTRUCTIVE criticism, not criticism. I really appreciate what you're doing.
g'night!
I have something that I wrote to address this and will test it later
https://github.com/fscorrupt/Plex-Poster-Maker/pull/41 pr submitted for your review when you can @proud seal
thanks, small adjustments made but its merged now 🙂
Works. 🙂
@proud seal not sure if you saw this. If yes, ignore me: #1206503798869196880 message
@covert anchor here is my progress so far:
I have made adjsutments to the config.json of ppm
There is a streaming.yml overlay issue that I cannot seem to fix
Movies seems ok
Episode titlecards, needs a lot more work
FYI - I am focused on just the overlays that need to be moved, which is why you dont see all of them
@fresh gorge what adjustments did you make to the config.json?
Well I am still running some tests but essentially the height and width of the textbox is what I am tweaking so that the ribbon and the left overlays don't touch the box. I will share later today as I get closer... just wanted to share my progress
@covert anchor 
thats what I came up with.... and thus we would end up with something like this:
Could be longer, there are seasons with year in it. Like Season 2012 • episode 100 or episodes with over 1000 too 😬
Yup... which is why I was going to ask if you would change teh default text in the script -testing to handle that. And of course, the size of the box is what matters... the font should autosize
now I need to do a full kitchen sink overlay run with all overlays to see what happens with those test images
Autosize yes, but then it may is to small🤭
Yeah no prob, i can add a ultra long EP text too.
Will have a look on monday for that 👍
Season 9999 • Episode 9999
yes... it will probably get small... but teh dimensions of the box is what I was after for now...
and moving all the defaults into a home on the poster and titlecard
I could also make that box "taller" which might resolve the size issue a bit... although having that split over two lines would not look great IMO
Yeah, you would also get more space if you remove the runtime text. Like i do:
Yes.. the text Runtime: makes it very wide
I am trying to stick to defaults as much as I can.... we'll see where it ends up
Nice... how do you do that
template_variables:
- pmm: runtimes template_variables: overlay_level: episode
This is all I have in my config
need to look up the variables
Thats why i have it local in a file, cause i do not run nightly 😬
pros and cons
I see what you are doing by making your own overlay with name: "text(<<runtimeH>>h <<runtimeM>>m)"
is there a way to just add that to the -pmm: runtimes
I can update it any time if it changes, nightly can break things 🤭
i just showed you
or do I need to kill it and use yours
you are a coder and understand... others have challenges
Riptide, I gave you the link and the variable
I am looking but I don't see any examples of how they go together
- pmm: runtimes template_variables: overlay_level: episode name: "text(<<runtimeH>>h <<runtimeM>>m)"
no
- pmm: runtimes
template_variables:
text: ''
builder_level: episode
this is what I am trying
OHHH 🙂
Because the detault is Runtime:
and the var is text
but I will need to try that against my test lib
sometimes things don't like ''
a blank or null value
I thought episode_info was the "S01E01" info
Damn you had be looking sideways LOL
fixed?
Ok, rerunning it
Before I try the text: ''