#Plex-Poster-Maker (ppm) Stuff

1 messages · Page 3 of 1

fresh gorge
#

to be fair... the only way to know if the tmdb data is "clean" is to put the resulting images in Extr Large mode and use your eys to see if text is ther... if so, you go and assign the proper language in tmdb.... and then find a proper textless poster and upload it

#

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

modern pebble
#

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.

fresh gorge
#

correct... i am gonna do that for hanna now

covert anchor
#

This is one long ass thread. I know it’s purpose. I’m just saying…

proud seal
#

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 😅

modern pebble
covert anchor
#

Would be cool to have this in docker

proud seal
covert anchor
#

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?

proud seal
#

First run, all movies/shows, second run only missing

covert anchor
#

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

fresh gorge
#

added a textless for season 1 only

proud seal
fresh gorge
#

it can take up to 8 hours before the api detects this and we see it in the results of the run

fresh gorge
proud seal
#

On the list 😂

fresh gorge
#

I know... lol... are you adding these as enhance,ents to your github issues page?

#

QQ

#

what do you look for when it comes to textless on fanart?

#

this is textless.... on fanart

proud seal
fresh gorge
#

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

proud seal
#

🤭

fresh gorge
#

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

proud seal
#

That sounds like a resource hog 🤭

modern pebble
#

I would like to take a look at that

fresh gorge
#

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...

fresh gorge
#

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...

proud seal
#

Noice

modern pebble
#

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! 😀

fresh gorge
#

you have no idea how many times I have deleted the output folder of this script to rerun

modern pebble
#

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

fresh gorge
#

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

modern pebble
#

Sounds good

fresh gorge
# modern pebble 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.

modern pebble
#

O.M.G.

#

That is slick! Did 88 title cards in 80 seconds.

fresh gorge
#

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

fresh gorge
#
      "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?
proud seal
fresh gorge
#

Just checking.... sounds like a possible enhancement to add to GH?

fresh gorge
#
$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

proud seal
#

Yeah, im also more a fan of folders, with only files it would get confusing when someone has more then 5 set

fresh gorge
#

Ok... let me take a crack at the folders thing and I will PR when ready.

fresh gorge
#

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.

proud seal
#

also tested in Docker, merged 🙂 thanks!

proud seal
fresh gorge
#

Testing now.

#

First step is getting it to work on unraid

rare tulip
#

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

fresh gorge
rare tulip
#

just looked the cleanup runs at 5am

fresh gorge
#

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.

fresh gorge
#

Separate note, what does the version line on compose file mean?

rare tulip
#

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)

fresh gorge
#

Oh

rare tulip
#

I can just offset the PPM by 60min

fresh gorge
#

So the question still remains... what time for PLeX maintenance

rare tulip
#

it only adds anything new so it runs fast

rare tulip
fresh gorge
#

Drop a meta.lig here and luma will extract it

rare tulip
#

from Plex from 2am to 5am

fresh gorge
#

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

fresh gorge
#

Like 7 minutes for -testing

proud seal
#

You definitely have to give the container more resources

fresh gorge
#

Uh oh

rare tulip
#

mine ran the same speed as running it local did

fresh gorge
#

Mine did not create files in the test folder

#

That could be part of the problem

#

I need to see what is going on...

rare tulip
#

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

fresh gorge
#

Test goes to a test sub folder within the config folder

rare tulip
#

ahh I hadn't tried that

proud seal
#

Testing worked for me in docker, i tried that too

fresh gorge
#

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

fresh gorge
#

I like that you moved stuff to the RotatedLogs subfolder keeping things nice and tidy

#

to add the summary with elapsed time

proud seal
fresh gorge
#

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?

rare tulip
#

the /config is just where the location of the config.json should be

fresh gorge
#

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...

proud seal
#

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.

fresh gorge
#

just saying that someone can edit that file

#

its ok... i get it and was just asking

proud seal
#

On container start it gets replaced with the one from my repo

fresh gorge
#

you also have something called Start.ps1

#

which is one folder back

proud seal
#

the start.ps1 just handles the schedule

rare tulip
#

That is a problem I see be cause I have a PlexPosterMake (copy).ps1 in my directory 😦

rare tulip
#

it not rewriting the existing file but creating a copy each time

proud seal
#

On a container restart?

#

Just restarted mine, only one ps1 present.

rare tulip
#

Are you using persistant volumes?

#

Going to clear everything but my config file out and retest

proud seal
#

I just bind the config to my local storage, like in the yml example, i installes my container with the yml from gh

fresh gorge
#

i do not get the "copy" thing on my side

rare tulip
#

Yea looking good... I think it was me updating the Ps1 from my local laptop

modern pebble
#

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.

rare tulip
#

I started seeing the missing poster URL also

proud seal
#

It is possible that there is no poster so thats normal, but it should not result in an error like above.

rare tulip
#

but it ran an few hours ago and update those posters

proud seal
#

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.

rare tulip
proud seal
# rare tulip

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:

rare tulip
#

Doh! LOL

proud seal
#

tmdb is the recommended one, because we can update missing files easier then on fanart.

proud seal
#

it still searches on fanart for fallback tho!

proud seal
#

okey changed the container part with the script, its now inside container, you are right, better this way.

#

was only a small change 🙂

fresh gorge
#

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

proud seal
#

Yes, that how i run my tautulli/arr scripts to, via cron and docker exec

fresh gorge
#

docker exec -it ppm sh

proud seal
#

Cron job on host:
* * * * * docker exec ppm pwsh anyscriptyouwant.ps1 >/dev/null 2>&1

fresh gorge
#

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.

proud seal
#

time for an upgrade 🤭

#

My "server" is an intel nuc, and im more then happy with that power 😅

fresh gorge
#

I submitted an [FR] that you wrote about the other day

#

is that where you run docker from?

#

the intel nuc

proud seal
#

Yeah

fresh gorge
#

did you try giving the title_card_clips.py a whirl and see how quick or slow it is?

proud seal
#

Not tried it yet, is it cpu intense ? Or does it utilize igpu too?

#

Running 50 containers on that machine 🤣

fresh gorge
#

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

proud seal
#

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 🤔

misty cobalt
#

Does this add all the images to plex once it's done creating all the images for everything?

proud seal
#

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.

misty cobalt
#

ohhh okay

#

just got it running to test with

proud seal
#

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.

misty cobalt
#

Once you've got a solid base I'll start making some suggestions 😄

proud seal
#

😅 Should I be scared?

misty cobalt
#

Nope, just things I know that TCM ran into

proud seal
#

Ive not done the switch yet, im still using tcm for my titlecards

misty cobalt
#

The main one being character replacements for fonts

#

vs ... for example, most fonts won't have the first one

proud seal
#

And "cyrillic", shōgan is a good example, one of mine font just added sh gan to the poster, cause it did not had ō

misty cobalt
#

yeah 🙂

#

also top vs bottom heavy text preference

proud seal
#

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 😅

misty cobalt
#
the adventures of
tintin

vs

the
adventures of tinin
#

so yeah there'll be a lot of niggly things 😄

proud seal
#

I know, will give me another headache for sure 😅

misty cobalt
#

I could go on and on 😉

proud seal
#

I appreciate any feedback or suggestions, but whether I can incorporate them is uncertain.🤣

fresh gorge
#

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?

proud seal
#

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 ō

fresh gorge
#

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

proud seal
#

Yes and no, just replace with the equialent non cyrllic char,

So every öòōőœ and so one would be an o

fresh gorge
#

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?

fresh gorge
#

just trying to understand conceptually how that would work

#

so a character mapper

misty cobalt
#

which is specific to the font you're using

fresh gorge
#

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

misty cobalt
#

for example on titlecardmaker's default font:

FONT_REPLACEMENTS = {
        '[': '(', ']': ')', '(': '[', ')': ']', '―': '-', '…': '...', '“': '"'
    }
fresh gorge
#

that support more of these characters

proud seal
#

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

fresh gorge
#

ok.. so conceptually I now understand the request in terms of character_mapper

misty cobalt
#

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
fresh gorge
#

as far as the weight goes... how would you envision where to "split" text?

misty cobalt
#

The third option is to calculate the amount of characters and try to get as close to an even split as you can

proud seal
#

Basically a function that combines both, checking font if it is capable of displaying that char, and then a hashtable for replace if not.

misty cobalt
#
THE ADVENTURES
  OF TINTIN
fresh gorge
#

if you make your box smaller in width you might achieve this uparrow

#

but then it would break for other strings

misty cobalt
#

Or a fourth option is that people may have preferred characters to split on

for example splitting on the :

TAYLOR SWIFT:
THE ERAS TOUR
fresh gorge
#

so the split logic is also going to be based on a set of "rules"

misty cobalt
#

yes

fresh gorge
#

so yeah... thats gonna take a while I would say... the idea here originally was not to replace tcm

misty cobalt
#

Yeah of course, I did say once it's more stable

fresh gorge
#

and frankly I will most likely use it to pull textless

#

and not do any image processing

misty cobalt
#

I get that but you're going to get the exact same requests that TCM did

#

😛

fresh gorge
#

Yes.. I understand...

misty cobalt
#

"Oh I wanted to use this font but it doesn't like the é in beyonce so now I have beyonc☐"

fresh gorge
#

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

misty cobalt
#

🤣

fresh gorge
#

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

proud seal
#

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.🤣

fresh gorge
#

100% uparrow

#

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?

proud seal
#

Havnt seen anything like that in webui release, its main feature are the blueprints.

fresh gorge
#

always based on existing titlecards then.. ok

proud seal
#

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

fresh gorge
#

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

proud seal
#

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.

fresh gorge
#

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

proud seal
#

You are right, travis thinks it would create chaos 🥹

fresh gorge
#

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

modern pebble
#

@fresh gorge If I run the title_card_clips more than two times it has an error trying to rename the log file.

fresh gorge
#

Oh??please share

proud seal
fresh gorge
fresh gorge
#

Just need to fix some documentation

modern pebble
fresh gorge
fresh gorge
modern pebble
fresh gorge
#

TVDB?

#

I prefer updating tmdb

#

since its a primary source of images for ppm

modern pebble
fresh gorge
#

oh wow...

modern pebble
#

Well, for one series anyway.

fresh gorge
#

i think tmdb has the right balance of restrictions and freedom...

modern pebble
#

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.

fresh gorge
#

yup with 0 image processing

modern pebble
#

yep

fresh gorge
#

finding textless posters and season posters can sometimes be challenging

modern pebble
#

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.

fresh gorge
#

yes... I think I mentioned that... delete teh ones you dont like... change teh time, rerun and see the results

modern pebble
#

Yes. And I like that it skips the images you keep

fresh gorge
#

yup... is logs fixed?

modern pebble
#

I actually haven't tried it yet. Just killing a little time before we go meet friends for dinner.

fresh gorge
#

ahhh... np... enjoy

modern pebble
#

Log issue appears to be fixed, thanks!

fresh gorge
#

FR - spawn multiple (up to 10) parallel posters for magick processing to improve overall performance.

proud seal
#

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.

mystic juncoBOT
#

Processing your request...

mystic juncoBOT
rare tulip
#

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? 🤞 😎

fresh gorge
fresh gorge
#
.\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'
fresh gorge
#

Might be because there is a variable that was not reset or something...

fresh gorge
#

Very cool... never even knew about apprise

fresh gorge
#

I was able to repro your issue

fresh gorge
#

That would drive me nuts

#

I use folders

fresh gorge
#

specifically: "LibraryFolders": "true",

proud seal
#

but it will only work in docker container with apprise.

fresh gorge
#

Really... all those options and flexibility and it must be in docker? Too bad

proud seal
#

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

rare tulip
# fresh gorge Wow... you put all in 1 folder

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)

proud seal
#

and this is an example from windows where i have to point to the apprise exe, that would differ on so many systems 😄

fresh gorge
fresh gorge
fresh gorge
#

FS, were you able to repro the issue that Riptide reported for the SWAT 2017 show?

proud seal
#

yeah, but im still searching for the "why"

fresh gorge
#

I repro'd it late last night and did not have the time to step through it and see what was going on.

proud seal
#

@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?

fresh gorge
#

My config?

proud seal
#

forgot the tag

fresh gorge
#

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

proud seal
#

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.

rare tulip
fresh gorge
#

Our laptops are locked down so I can't get to my home network

rare tulip
#

That sucks... I am lucky enough to be able to use my own laptop

fresh gorge
fresh gorge
proud seal
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

covert anchor
#

i can't wait for this to be docker

fresh gorge
covert anchor
#

i would like to set this up on my synology, is that possible?

fresh gorge
#

I don't see why not

#

I got the compose to work on unraid

covert anchor
#

the poster magic is what i'm not sure of

fresh gorge
#

How do you mean?

#

The container has all you need

#

You just need to setup the config file

covert anchor
#

ok, so it's all built into the container

fresh gorge
#

Yup

covert anchor
#

ok, then do i still go in the .json file and edit whatever keys and shit?

fresh gorge
#

1 config file and decide on what fonts and overlays you want to use

#

Yup

#

Just like you would the config.yml file

covert anchor
#

will this setup, so that i just have to copy the shit to my asset folder?

fresh gorge
#

Also, it comes with a prebuilt font, and a prebuilt overlay for poster and title cards

#

Exactly

covert anchor
#

cause i don't want to overwrite some of my existing posters like my diiivoy neon shit

fresh gorge
#

Or point it to assets2

#

Then you can flip config.yml to assets2

#

It's not suppposed to overwrite

covert anchor
#

are there any issues i need to watch out for?

fresh gorge
#

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

covert anchor
#

@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

fresh gorge
#

Just take the config.json from the site?

covert anchor
#

the file is asking for i have magick installed

fresh gorge
#

Ignore that part for docker

#

Leave it as is

#

It will download it for you if needed

covert anchor
#

do i have to create a new tmdb account?

fresh gorge
#

No you don't

#

Login to your account and go to the section for apikeys and you will see the other key to use

covert anchor
#

i'm trying to figure out how to generate a new key, but don't want to eff up my pmm key

fresh gorge
covert anchor
#

do i use the long ass read access key?

fresh gorge
#

Its like 7900883892 characters long

covert anchor
fresh gorge
#

It's a fallback

#

I guess you could

#

Never tried to

covert anchor
#

there doesn't seem to be a free version

fresh gorge
#

I setup my account and forgot about it

#

It's free

covert anchor
#

i've tried to find a free api and don't see it

fresh gorge
#

One sec

covert anchor
#

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?

fresh gorge
#

I wouldn't until you are comfortable

#

You could place it right off the config directory

#

./assets2

#

Or map another volume

covert anchor
#

sorry dude, i'm just trying to get shit all setup

#

so do i need to map my pmm assets folder to ppm?

fresh gorge
#

Well... that's an option

#

Where is your assets folder now?

covert anchor
#

ok, so what should i do right now while i'm trying to get it tested

fresh gorge
#

./assets

covert anchor
#

i like your idea of assets2, to test

fresh gorge
#

Use that path

#

Or ./assets2

covert anchor
#

so do i put that in the asset path?

fresh gorge
#

That will create the folder in the same directory that you have config.json

fresh gorge
covert anchor
#

what's the proper file name for titlecard or background for pmm?

fresh gorge
#

Magick installation: ./

fresh gorge
#

Background applies to movies and shows

#

All can be pushed by PMM to Plex

covert anchor
#

"overlayfile": "overlay.png",
"backgroundoverlayfile": "backgroundoverlay.png",
"titlecardoverlayfile": "backgroundoverlay.png",

fresh gorge
#

Those files are available on the GH

#

I use different ones

covert anchor
#

imageprocessing to false?

fresh gorge
#

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

covert anchor
fresh gorge
#

Yes

#

If you don't use image processing then the zip stuff not needed

#

You have a test library in Plex?

covert anchor
#

not at the moment, but i can create one

fresh gorge
#

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

covert anchor
#

so once i have it going, then i can set it to my pmm assets, and then it would only add missing shit?

fresh gorge
#

But I would always recommend a backup first

#

To be sure

#

You use flat or directories in your assets in PMM?

covert anchor
#

directories

fresh gorge
#

So set library folders: true in ppm

#

Wanna share a redacted config.json before you run it?

covert anchor
#

will luma redact?

fresh gorge
#

Nope

#

Luma is for PMM

#

Not this

covert anchor
#

do i need to create the assets2 directory?

fresh gorge
#

Nope

#

It will create it right off the folder where config.json is

#

If you used ./assets2

covert anchor
#

can i dm you the config?

fresh gorge
#

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

covert anchor
#

i don't remember remember how to log in interactively

fresh gorge
#

docker exec -it ppm sh

#

Assuming that your docker is called ppm

covert anchor
fresh gorge
#

Type pwsh

covert anchor
#

ok

fresh gorge
#

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

covert anchor
#

dammit

#

error message

fresh gorge
#

Screenshot please?

covert anchor
modern pebble
#

Isn't it PlexPosterMaker.ps1?

fresh gorge
#

Yup

#

My bad

covert anchor
#

which you can see i tried that

modern pebble
#

maybe .\PlexPosterMaker.ps1

fresh gorge
#

ls -al

#

And what MyPostigId said

covert anchor
fresh gorge
#

I usually start typing Plex and hit tab to auto-complete

#

And it should decide if it needs the .\PlexPosterMaker.ps1 -testing

covert anchor
#

now it's running

fresh gorge
#

Cool so you able to see the contents of the test folder?

#

Like with your macOS?

covert anchor
#

yeah

fresh gorge
#

It should create about 8-10 images

covert anchor
#

yes

fresh gorge
#

So that's the font you chose

covert anchor
#

is that what the font looks like?

fresh gorge
#

Rocky

#

Yes

covert anchor
#

what font did you use?

fresh gorge
#

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

covert anchor
#

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

fresh gorge
#

I'd just run without the testing

covert anchor
#

so do i do the same thing, just drop the -testing

fresh gorge
#

It's in the same directory as the the config.json file

#

That's where assets2 will be created

covert anchor
#

it only did one movie and was finished

fresh gorge
#

Huh?

covert anchor
#

where the hell is my ./assets2 folder

#

i can't see it in my config directory

fresh gorge
#

Where is the test folder?

#

Should be right there as well

covert anchor
#

did the container create it, but i can't see it in my macOS?

fresh gorge
#

In your screenshot, are you able to go one directory back?

covert anchor
#

i can see it when i do ls -al, but doesn't show in macos

fresh gorge
covert anchor
#

right, but why can't i see it in macos

fresh gorge
#

I feel like your path might need to be ./config/assets2

covert anchor
#

how do i delete that directory in powershell

fresh gorge
#

Can you cd into that directory?

#

Then ls -al

#

And share what's in there

covert anchor
fresh gorge
#

cd assets2

covert anchor
#

i'm there already

fresh gorge
#

I need to know what issue there

#

Oh

#

Sorry

#

Ok. cd ..

covert anchor
#

ok

fresh gorge
#

rm -rf assets2

#

Recursive delete of the assets2 directory

covert anchor
#

ok, it's gone

#

now that i change my asset path, should i try again?

fresh gorge
#

Yes

#

Is it safe to say that you have a Plex library called Movies - Not Shared

#

And your config is excluding all the others.

covert anchor
#

yes,

fresh gorge
#

Ok. So try with the new path

covert anchor
fresh gorge
#

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

covert anchor
#

some shit doesn't have an image in the folder, does that mean it oculdn't find anything

fresh gorge
#

Depends on the logs

#

Should tell you what happened

#

There is a csv file that also has details

covert anchor
#

that's with your settings

fresh gorge
#

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.

fresh gorge
covert anchor
#

yes

fresh gorge
#

Oh... interesting. I did not think those were my settings

covert anchor
#

well unless i copied the wrong shit

fresh gorge
#

But I have been testing like crazy so who knows

covert anchor
#

so this creates a folder for each library, but i don't want it to do what

fresh gorge
#

You said that is what you did in PMM

#

That's not my config btw as my textbox is narrower

covert anchor
#

my assets directory in pmm is straight up /config/assets/<<movie name..

covert anchor
#

unless you have another config somewhere?

fresh gorge
covert anchor
# fresh gorge

dammit, i think i figured out what i did. i copied the numbers to the example instead of to my own config

fresh gorge
#

There you go

covert anchor
#

but how do i still use the folders, but not have it put a separate folder for each library?

fresh gorge
#

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

covert anchor
#

my pmm assets structure is /config/assets/<<movie name>>/poster.jpg

fresh gorge
#

Movie name is the folder name, no?

covert anchor
#

yes, i just don't have them in a library folder

fresh gorge
#

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>

covert anchor
#

like so

#

all my movies, no matter the library are thrown in the "Movies" asset folder

fresh gorge
#

Well... mine are separated

#

So I guess this would be an enhancement request

covert anchor
#

so if i only want it to use textless, do i just not use en as a fallback?

fresh gorge
#

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

covert anchor
#

so my next question, what's the easiest way to integrate with pmm?

fresh gorge
#

The csv produced will tell you

#

Well...if you "trust" it as your asset source, point the PMM assets to it per library

#

Done

covert anchor
#

but i still want to use some of my existing assets? do i just copy those over to the ppm directory?

fresh gorge
#

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

covert anchor
#

do then i just need to map the ppm assets so that pmm can use it right?

fresh gorge
#

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

covert anchor
#

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

fresh gorge
#

There is no "merge" that exists in ppm for the library types

#

Exactly

covert anchor
fresh gorge
#

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

covert anchor
#

thanks a bunch for your help

covert anchor
#

@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

proud seal
#

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

fresh gorge
#

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.

fresh gorge
#

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

proud seal
#

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

fresh gorge
#

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

rare tulip
#

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

fresh gorge
#

I think he figured that out... and thanks for sharing as we never saw what he ended up with

fresh gorge
#

Btw, did you ever mess around with magick and the -quality setting for outputting jpg files?

proud seal
#

no, never looked at this

#

thoughts?

fresh gorge
#

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

rare tulip
#

for example

#

is this what you mean

fresh gorge
#

Yes

fresh gorge
# proud seal thoughts?

Consider putting Errors as a header with a number instead of within the sentence as you have

#

Errors, Fallbacks, etc...

fresh gorge
#

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.

proud seal
#

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 :/

rare tulip
#

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

covert anchor
proud seal
proud seal
covert anchor
covert anchor
covert anchor
proud seal
covert anchor
#

now that i got it working, i'm anxious. LOL

rare tulip
proud seal
#

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 🙂

fresh gorge
proud seal
#

better after i added my changes, cause i already changed a lot on script 😄

fresh gorge
#

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

#

💩

covert anchor
#

Gives most posters the same general style / look as far as title overlay. But then my pmm overlays. Lol. I use about every overlay

fresh gorge
#

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

covert anchor
fresh gorge
#

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

fresh gorge
covert anchor
fresh gorge
#

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"
    }
  }```
covert anchor
#

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

fresh gorge
#

Exactly...

#

And PMM with assets makes it really easy to apply to your Plex

covert anchor
#

Yeah. I honestly think the assets process is pretty simple. Even more simple with the folders

fresh gorge
#

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

fresh gorge
covert anchor
#

@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

modern pebble
#

Is that Universal logo the studio overlay?

fresh gorge
#

Gonna shift aspect

#

Content_rating, and studio

covert anchor
covert anchor
fresh gorge
#

Like gonna mess with this tomorrow

modern pebble
covert anchor
modern pebble
#

I'll have to check my config, maybe I'm not using studio for movies.

#

Not seeing it on any of my movies

covert anchor
#

i use most, if not all the overlays

covert anchor
# fresh gorge

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)

modern pebble
#

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.

covert anchor
#

yes, i use the mediastinger

modern pebble
#

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.

covert anchor
modern pebble
#

I only use a couple defaults without template variables.

covert anchor
#

so then you'll need to figure out where to put status if you put mediastinger in it's place

modern pebble
#

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!

fresh gorge
#

Or don't use borders?

proud seal
#
+ poster 'png,jpg..." check integrated
+ apprise/discord integrated
+ logic fixes
+ outputQuality added
proud seal
fresh gorge
# proud seal

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

proud seal
rare tulip
#

@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?

proud seal
misty cobalt
#

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

https://theposterdb.com/user/tiederian

rare tulip
proud seal
rare tulip
#

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

proud seal
#

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.)

rare tulip
#

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

proud seal
#

have you changed the TZ env in docker compose?

rare tulip
#

yes to TZ=America/New_York

proud seal
#

ah okey, its an discord utc formatting error, please restart container and try again.

rare tulip
#

That did it 🙂

proud seal
#

Nice, had to change date formatting zoro

fresh gorge
proud seal
#

Yes

#

Look at screenshots on GH 🫡

fresh gorge
#

Let me get all the latest code and docker going again

fresh gorge
#

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?

proud seal
#

Send the redacted config please.

Currently i do not have a versioning

fresh gorge
#

I am an idiot

#

Maybe I should turn notifications to True

proud seal
#

🤣

fresh gorge
#

Exactly

#

Not having the best day... lol

proud seal
#

We all have such days

fresh gorge
rare tulip
fresh gorge
#

Logs to follow

proud seal
#

Cannot reproduce that, even when i completley delete my test folder i do not get those errors 🤔 not on docker and not on windows.

fresh gorge
#

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
#

Im looking at the shell, i do not get this errors 😅

covert anchor
#

@proud seal i simply turned borders to false, and now i get ZERO text

proud seal
#

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.

covert anchor
#

i just modified my config.json

proud seal
#

Docker or windows?

covert anchor
#

docker

proud seal
#

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 😅

fresh gorge
#

Call the function something like function online_json_check

modern pebble
modern pebble
#

So with the notifications, would I just set the Discord webhook and clear the Apprise? Or do they both need to be set?

wicked current
#

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

fresh gorge
#

For me, docker is much slower than running on my local machine

fresh gorge
# proud seal Im looking at the shell, i do not get this errors 😅
    "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

wicked current
#

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

fresh gorge
#

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

proud seal
proud seal
proud seal
fresh gorge
#

In theory, false, false,false for background, title card, or poster would just be the pink landscape or portrait images

proud seal
fresh gorge
#

Is setting cpu and ram something that you do within the docker compose file?

proud seal
#

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 😄

fresh gorge
#

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.

proud seal
#

i think this is to much, for this info you have the scriptlog. on error you also get a message in discord.

fresh gorge
#

6+6+1=13

#

Only 12

#

There are 0 backgrounds in that test folder

proud seal
#

how are the files named? i only see 3 file names.

#

because its a simple count: $backgroundsscount = ($gettestimages | Where-Object { $_.name -like 'back*' }).count

fresh gorge
#

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

proud seal
#

count is after

#

what are your settings?

#

i do get 13 images if i select addtext -> false on background part.

fresh gorge
#

So strange....now it's there

proud seal
#

😄

fresh gorge
#

is that what you expected$

proud seal
#

Yes, basically your settings without text, boarder and overlay

fresh gorge
#

Ok. Was not sure if that box was supposed to be there with that dimension

proud seal
#

The dimension must be your setting?

fresh gorge
#

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

fresh gorge
#

Definitely not 3200 wide

proud seal
fresh gorge
#

That's 3200 wide

fresh gorge
#

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:

proud seal
proud seal
fresh gorge
#

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.

proud seal
proud seal
fresh gorge
#

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...

proud seal
#

Yeah, it was fast implement, needs improvements zoro

fresh gorge
#

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

proud seal
fresh gorge
#

like I said.. its mostly now because of testing, but its a "nice to have"

proud seal
#

Normally you only have 1 instance or?
Yeah but that could find his way in footer

#

Finished - os - version and and and...

fresh gorge
#

cool. let me pull

proud seal
#

Not added yet, just an idea 🤣

#

Weekend, will have a look on monday 👍

fresh gorge
#

ahh.. ok... no problem. I am trying some stuff to allocate more cpus/ram to the compose file.

fresh gorge
proud seal
#

Normally yea, but that was really a small PR 😅

modern pebble
#

PR #39 submitted to correct order of "parts" in readme to match config. PlexPart was after Notification, swapped order to follow config order.

proud seal
fresh gorge
#

I think docker comes back as Unknown but need to revalidate that.

proud seal
#

Tried on docker, it came back with docker 🤔

fresh gorge
#

But this was on 1.0.3 so maybe it wasn't fully ready at that point.

proud seal
#

Ah yeah, on 1.0.3 it was unknown 🤣👍

fresh gorge
#

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...

fresh gorge
#

windows, docker, ubuntu... all testing looking great for the ./test folder

fresh gorge
#

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?

modern pebble
#

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.

fresh gorge
#

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

proud seal
#

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.

modern pebble
# proud seal For user errors in config file there is currently only validation for things tha...

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.

proud seal
#

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

modern pebble
#

BTW, this is meant as CONSTRUCTIVE criticism, not criticism. I really appreciate what you're doing.

proud seal
#

I didn't understand it any differently 🫡

#

Gn8 its 3am here 🥲

modern pebble
#

g'night!

fresh gorge
#

I have something that I wrote to address this and will test it later

fresh gorge
proud seal
fresh gorge
#

Works. 🙂

fresh gorge
#

@proud seal not sure if you saw this. If yes, ignore me: #1206503798869196880 message

fresh gorge
#

@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

covert anchor
#

@fresh gorge what adjustments did you make to the config.json?

fresh gorge
#

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

fresh gorge
#

@covert anchor uparrow

#

thats what I came up with.... and thus we would end up with something like this:

proud seal
# fresh gorge

Could be longer, there are seasons with year in it. Like Season 2012 • episode 100 or episodes with over 1000 too 😬

fresh gorge
#

now I need to do a full kitchen sink overlay run with all overlays to see what happens with those test images

proud seal
#

Yeah no prob, i can add a ultra long EP text too.

#

Will have a look on monday for that 👍

#

Season 9999 • Episode 9999

fresh gorge
#

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

proud seal
#

Yeah, you would also get more space if you remove the runtime text. Like i do:

fresh gorge
#

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

fresh gorge
#

template_variables:

proud seal
rare tulip
#

- pmm: runtimes template_variables: overlay_level: episode

#

This is all I have in my config

#

need to look up the variables

proud seal
#

Thats why i have it local in a file, cause i do not run nightly 😬

fresh gorge
#

pros and cons

rare tulip
#

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

proud seal
#

I can update it any time if it changes, nightly can break things 🤭

fresh gorge
#

i just showed you

rare tulip
#

or do I need to kill it and use yours

fresh gorge
#

Riptide, I gave you the link and the variable

rare tulip
#

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)"

fresh gorge
#

no

rare tulip
#

Like this?

#

Arrgh

#

Ok looking again 🙂

fresh gorge
#
    - pmm: runtimes
      template_variables:
        text: ''
        builder_level: episode
#

this is what I am trying

rare tulip
#

OHHH 🙂

fresh gorge
#

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

rare tulip
#

I thought episode_info was the "S01E01" info

fresh gorge
#

it is... I screwed up... lol

#

but its that easy

rare tulip
#

Damn you had be looking sideways LOL

fresh gorge
#

fixed?

rare tulip
#

Ok, rerunning it

fresh gorge
#

Before I try the text: ''