Jump to content

Script: Post Media Additions to Web Hook


ginjaninja

Recommended Posts

ginjaninja

A Powershell script intended to be invoked by ScripterX to log media add events on Social Media.

Aggregates related  media events into single posts (eg episodes rolled up to seasons, seasons to series, multiple episodes to a single post, multiple seasons to a single post)
Posts JSON to a web hook

Options to alter the aggregation behaviour to personal preference.

Was originally designed for Integromat Web Hook. (free for 1000 per month) Has been used with a Facebook group and Android Push Notifications.
Could be developed to make the message structure a bit more versatile for other services / more user friendly editing.

Feature Requests Welcome.
This is a learning opportunity for scripting for me, so advice welcome on how to make code more elegant.
Also intended as a stop gap as media aggregation may be built into ScripterX in future.

post-165-0-69864300-1588779183_thumb.jpg

post-165-0-34680300-1588791995_thumb.jpg
9c7e58e0442ba10ca037bd3d771d4b71.jpg

Edited by ginjaninja
  • Like 1
Link to comment
Share on other sites

ginjaninja

Installation
 
Copy contents to a single folder (i have only tested on same server as Emby)
LogMediaAdds.ps1 should be referenced by ScripterX (you will need to install ScripterX plugin)
 
ScripterX Config
Event-OnMediaItemAddedComplete
Interpreter:

pwsh.exe
Script File:

-File "C:\Example\LogMediaAdds.ps1"
Parameters:

-EventType "onMediaItemAdded" -Type "%item.type%" -Name "%item.name%" -ID "%item.id%" -Path "%item.path%" -SeriesName "%series.name%" -SeasonName "%season.name%" -SeasonNumber "%season.number%" -EpisodeNumber "%episode.number%" -LibName "%item.library.name%" -IsVirtual "%item.isvirtual%" -SeriesID "%series.id%"

 

Event-OnMediaItemRemoved
Interpreter:

pwsh.exe
Script File:

-File "C:\Example\LogMediaAdds.ps1"
Parameters:

-EventType "onMediaItemRemoved" -Type "%item.type%" -Name "%item.name%" -ID "%item.id%" -Path "%item.path%" -SeriesName "%series.name%" -SeasonName "%season.name%" -SeasonNumber "%season.number%" -EpisodeNumber "%episode.number%" -LibName "%item.library.name%" -IsVirtual "%item.isvirtual%" -SeriesID "%series.id%"

 

(Event onmediaitemupdated is not required)
 
LogMediaAdds.ps1 creates/appends onmediaitemadded events to Queue.csv
ProcessAdded.ps1 should be scheduled (eg in Windows task scheduler) maybe every 5 minutes. (although to begin with you may want to run manually so you can see the output to aid with troubleshooting)
ProcessAdded.ps1 will process Queue.csv and send to PostAdded.ps1
PostAdded.ps1 will construct a message and post to a Webhook and log activity in Post.CSV
 
 
refer to Config.psd1 to enter your own Emby URL, Integromat Web Hook URL, Emby Api Key, and other user preferences
you will need to create an Api Key in Emby server admin, the api key gives the script access to Emby.
 
Other Notes
The scripts have been tested with Powershell Core 7,
Tested on Windows
 
Latest

Integromat v0.0.1.1.zip

 

for reference

Integromat v0.0.1.0.zip

Integromat v0.0.0.9 alpha.zip
Integromat v0.0.0.8.zip

Integromat v0.0.0.7fix.zip

 

5ece73d936a34_Capture.jpg

Edited by ginjaninja
Link to comment
Share on other sites

ginjaninja

Change Notes

0.0.1.1  - Config options remain as is.

Fixed - Added/removed Suppression logic has been amended

Episode adds should be suppressed if there is a remove event for episode or episode's season or episode's series

Season adds should be suppressed if there is a remove event for the season or season's series

Series should be  suppressed if there is a remove event from the series.

Fixed - post log should now include type, path and name fields

New - Post log nows records whether the post was successful or not or never attempted.

New - posting to integromat tries to catch 'queue full' error. if status code 400 (queue is full) is returned, script should try to post up to 3 times after waiting 5 seconds between each try - note other errors are not captured or acted upon.

Note - have notice that as the log gets larger the time to process (clean) starts to exponentially slow down. starts to become more an issue when the log reaches 100 lines as it can then take e.g. a minute to clean the log (e.g. suppress add/remove events). Will look to improve the performance in a future release. The issue can be mitigated by running the processadd script more frequently.

 

0.0.1.0 - Config options remain as is.

New - ScripterX add event onmediaitemadded moved to onmediaitemaddedcomplete (This ensures that names are real library names as opposed to raw file system names, useful for upgrade suppression of movies/albums).

Fix - Music and Movie upgrade suppression / detection was broken in 0.0.0.9

Update - Removed virtual media from being logged in the first place.

 

0.0.0.9 alpha

Updated - altered the decision making aggregation logic to support options around upgrade suppression and series/season add event suppression and introduced a timed view when making decisions on what is eligible for aggregation.

Updated - moved some core functions into helperfunctions.ps1 - still needs tidying.

Updated - Config.psd1 has changed -  manually copy old emby/integromat data into this one.

options of note:

TOClose - time in minutes events must be near, to be considered together.

RollupSeasons/Rollupepisodes - switch to inform script whether you wish numbers of episodes/seasons to be reported as a season/series add (also suppresses embys native season/series add messages when these folders are created)

Rollup.Episode/Rollup.Season - number of episodes/seasons required for rollup (ignored if switches above false)

SupressUpgrade - media upgrades can be suppressed.

Updated - All audio is only considered at the album level, Audio entries are removed from log leaving just MusicAlbum Events. (dont think track granularity is required)

Updated - Queue.CSV rows are not marked processed, they are simply removed after processing. You may want to copy the queue prior to processing when testing, to repeat.

Updated - ScripterX Configuration, required parameters have changed see install instructions

Fix - Episode Range corrected to be S0ZE0X-E0Y

Update - Path no longer relevant to aggregation logic, so any file system / library structure emby supports is supported.

 

0.0.0.8

New - Logmediaadds can now log other media events (updated and removed) without breaking queue processing, whilst a method to supress media update noise is investigated

Updated - New Parameters in ScripterX required as per installation instruction post.

Updated - Options.psd1 has been updated with boolean values for post to integromat and rollup siblings switches.

Updated - Post Range message includes - separator eg S01E01-E03

 

 

0.0.0.7

New - Mutex to prevent writing to log at same time as it is processed.

New - Aggregates children and sibling 'adds' into fewer posts with a TRAKT/IMBDB link appropriate for the aggregation.

 

To Do

leverage improvements in onmediaitemaddedcomplete to reduce burden on process script.

Edited by ginjaninja
Link to comment
Share on other sites

JasonNalley

Is the fix from the old thread? or is it unique to this thread? I've lost track now :-D

Link to comment
Share on other sites

ginjaninja

Is the fix from the old thread? or is it unique to this thread? I've lost track now :-D

same as old.. how are you finding this 0.0.0.7fix version..re the aggregation and the resultant trakt/imdb link appropriateness. 

Edited by ginjaninja
Link to comment
Share on other sites

JasonNalley

same as old.. how are you finding this 0.0.0.7fix version..re the aggregation and the resultant trakt/imdb link appropriateness. 

I haven't added any Television since the fix, it's been a night/morning of movie encodes.  But so far, everything seems to be coming along quite nicely.  I recently developed my own set of video/audio standards to optimize the use of my hard drive space.  So everything I had previously is being upgraded to the new standard, for both my TV and Movie library.  I kind of go back and forth between the two.  But I should be adding more TV tonight, so I will let you know how it goes.

Link to comment
Share on other sites

JasonNalley

Just added an assortment of TV shows, single episodes and some multiples from the same show/season, everything looks good.  I might only ask that there be a - or some kind of separator between the first ep and the last ep in the run, just so it's a bit easier to read/understand for the average user... And I see you chose to go with a Season url rather than either the first or last episode in the run... like I said before, either way works for me :)

Link to comment
Share on other sites

JasonNalley

Some thoughts:

Under the current logic on how it chooses Series vs Season vs Show.  Simply Adding S01E01 from a new show Creates the Series add post on facebook.  If you add S02E01 in a pre-existing show that doesn't have any season 02 content yet, it will post a Season add post to facebook.  Neither of those is true really.  I didn't add the whole series by adding S01E01 of a new show, and I didn't add the whole season for S02E01...  I think maybe subconsciously I knew this which is why the way of choosing whether it's creating a season or a show post didn't make sense to me.   This is maybe why I preferred Tautulli's way of adding.  If I was adding 1 episode, it posted just that episode irrespective if that episode was from a new show or not, if I was adding multiple episodes in a season it added it as a season (since it's closer to a season add than simply adding the first episode of that season and typically I am adding 10-ish episodes to a season when I do it like that), and if I was adding multiple seasons from the same show, it was adding it as a show (which again is far closer than simply adding S01E01 of the new show).  So I wonder if there's a way to reconcile this, because right now, the logic does seem a bit backwards to me.

I do like the E07E10 post that gets created now when I add multiple episodes (Though I believe it should be E07-E10 just so it's easier for a viewer to read), that is definitely more informative and gives the whole story to the viewer.  However, I still think multiple seasons getting added should generate the Series add post, or it should be done how the multi-episode batches are being done now.  Simply adding S01E01 should never generate a Series add post, and adding a single episode from a season (presumably S02E01 as in my previous example) should never be a season add post.

Of course, this does depend heavily on ones perspective, and use case.

In my case, I have running shows that I record with DVR/PVR, or which I capture using OBS or downloading with Bigasoft.  Those only get added one at a time typically.

Then I have shows that my family members send me the disks for, to add to the server.  These generally get added in clusters of multiple episodes at once, and every once in a while I will do it all at once (if it's DVD I can do that cause I can do like 150+ DVD Episodes per day usually.  I encode into x265 at around 1300fps if it's 480 content.)

So my use case may be unique, I'm not sure.

I dunno, just food for thought :)

Edited by JasonNalley
Link to comment
Share on other sites

Anthony Musgrove

This is amazing mate, I love this, and it gives me a better understanding of how I should implement aggregation into Scripter X. Im going to piece together a whitepaper on media aggregation and Id love for comments :)

Link to comment
Share on other sites

ginjaninja

Thanks for feedback, different ideas will no doubt yield better solutions.

 

this is my thinking taken just from point of view of new media added to the system (upgrade media still a topic for another day)

(when i say 'intended' i am just confirming status quo for clarity and technical issue reporting not trying to stop discussion.)

 

 

Simply Adding S01E01 from a new show Creates the Series add post on Facebook. 

I didn't add the whole series by adding S01E01 of a new show

currently that is intended.

When S01E01 is added, S01 and Series are also added to the database (that is the technical reason why currently series is posted)

 

Is it better to know an episode has been added or a new series...i think series...the link takes me to series info on trakt and i can decide how interested i am.

When i see the notification "Series has been added" i dont see it as "the whole complete series has been added"..maybe more accurate wording would be "Series has been started" but i cant differentiate "complete vs started"

i have not found a way to determine if a season or series is complete eg by querying an internet provider, if such data existed then it may help to tap into that at such a time.

 

If you [then] add S02E01 in a pre-existing show that doesn't have any season 02 content yet, it will post a Season add post to facebook.

yes currently that is intended.

I am looking at this from the point of view of someone who maybe invested in a series...."oh good season two has started"

then later when S02E02.mp4 added "S02E02 a new episode is available to watch"

again i see the seasons/series messages as started rather than necessarily complete.

 

I do like the E07E10 post that gets created now when I add multiple episodes (Though I believe it should be E07-E10 just so it's easier for a viewer to read)

Yes will change to E07-E10

 

I still think multiple seasons getting added should generate the Series add post, or it should be done how the multi-episode batches are being done now.

how its currently intended to work

1. If S01 to S03 are added

[technically a series and seasons and episodes have been added to database]

post "series added"

 

2. then If S04 to S05 are added

[technically seasons and episodes have been added to database]

post "Seasons S04-S05 added"

 

3. then if S06E01 is added alone

[technically s06 is also added to database]

post "S06 added"

 

4. Then if S06E02-E08 are added

post "Episodes S06E02-E08" added

 

For 3 - i believe you would prefer "episode S06E01 added"

 

I think the sticking point is you see added messages as "complete/whole" whereas i see them as "at least started, possibly complete"

 

Do you think your users can come around to seeing 'added' as 'started' rather than 'complete'?

in as much as MY added might be more than started, YOUR added might be less than complete :-)

 

if not i think your preference might be met by logic..

rollup episode content to one season when multiple episodes in one season are added. [E01 present]

rollup episode content to multiple episodes [range]in one season are added. [E01 Not present]

rollup episode content to series when multiple episodes in multiple seasons are added. [s01E01 present]

rollup episode content to multiple seasons [range] when multiple episodes in multiple seasons are added. [s01E01 Not present]

 

The decision to bundle whats there or to pause for potentially related content still being added could be

"no Episodes for the show added for X minutes"

 

Will have a think on how i could i could add my preference over the top, if this route is taken.

probably by looking out for parent objects in the queue related to the children.

I believe its doable or at least worth trying as a learning opportunity.

let me know if you think its necessary and i have the logic for Episodes,Seasons,Series right/complete for your preference.

Your preference will possibly make for more robust code, so even if you come around to current design, i may still need to go this new route to make it robust.

as im still not 100% sure it is.

Edited by ginjaninja
Link to comment
Share on other sites

ginjaninja

5eb808db60a94_Capture.jpg

 

Jason, you can now use the script to log other event types. Note the EventType Parameter is different and needs to be exact as per ScripterX heading for event type. Other paramters have also changed - see install post at beginning for full list. This will ensure noise from these events wont interfere with current process but we will still be able to investigate how these events might be used to improve message posting (particularly during upgrades)

 

To this end, please can you configure as per above and let me have a copy of queue after a typical upgrade event, with your suggestion around what was vs should have been posted to Facebook.

we can then work out how to use the full gamut of events to inform the processing and resultant post.

 

As a bit of a heads up as to what the logger is doing

  • Virtual Episodes are marked virtual / processed so they dont interfere. (Emby uses virtual episode to mark episodes missing or upcoming)
  • The event type ensures non mediaitemadded events are marked processed so they dont interfere.

As before the only unprocessed events coming out of logger should be real additions with real paths.

 

Updated 0.0.0.8

(config options have morphed)

Edited by ginjaninja
Link to comment
Share on other sites

JasonNalley

Ok, just to be clear.  I need to populate all 3 event types "onMediaItemAdded" "onMediaItemRemoved" "onMediaItemUpdated" using the parameters in the images you've posted above.  I also need to overwrite the config file and re-populate my information into it?  Anything else I need to do?

Link to comment
Share on other sites

ginjaninja

Ok, just to be clear.  I need to populate all 3 event types "onMediaItemAdded" "onMediaItemRemoved" "onMediaItemUpdated" using the parameters in the images you've posted above.  I also need to overwrite the config file and re-populate my information into it?  Anything else I need to do?

 

thanks jason

yes thats all but using files from v0.0.0.8...oh and removing current Queue.csv and postlog.csv before you start testing as 0.0.0.8 has a different column structure.

 

and then after a typical upgrade scenario if you could provide some feedback /copy of logs / that would be a big help.

and if you could describe what a "media upgrade" looks like in terms of how the file system changes over time, what you want to be posted and what does get posted, i can replicate myself as well. and start looking for solutions.

Link to comment
Share on other sites

JasonNalley

and if you could describe what a "media upgrade" looks like in terms of how the file system changes over time, what you want to be posted and what does get posted, i can replicate myself as well. and start looking for solutions.

So a typical upgrade goes like this.

 

Existing file is named (for example):  Westworld - S01E01 - The Original-DVD.mkv

 

After encoding from the new source, I use Sonarr to rename and tag the new file, it gets renamed and moved to the same location in the library as the original episode, and the original episode gets moved into a temporary trash folder (just in case someone reports a problem with the new episode).

 

The new episode gets named as follows: Westworld - S01E01 - The Original-Bluray-1080p.mkv

 

Occasionally, I will also add a file as a 2160p HDR file, it will occupy the same folder as the 1080p and be named:  Westworld - S01E01 - The Original-Bluray-2160p Remux HDR.mkv

 

Now in the previous transaction, unfortunately, Sonarr doesn't deal well will mutliple files when its renaming, so it removes the 1080p copy and moves it to the temp trash folder.  When that occurs, I simply go back, grab the item, and move it back into the folder.

 

This same process happens in the Movies Library as well.

Link to comment
Share on other sites

ginjaninja

So a typical upgrade goes like this.

 

Existing file is named (for example):  Westworld - S01E01 - The Original-DVD.mkv

 

After encoding from the new source, I use Sonarr to rename and tag the new file, it gets renamed and moved to the same location in the library as the original episode, and the original episode gets moved into a temporary trash folder (just in case someone reports a problem with the new episode).

 

The new episode gets named as follows: Westworld - S01E01 - The Original-Bluray-1080p.mkv

 

Occasionally, I will also add a file as a 2160p HDR file, it will occupy the same folder as the 1080p and be named:  Westworld - S01E01 - The Original-Bluray-2160p Remux HDR.mkv

 

Now in the previous transaction, unfortunately, Sonarr doesn't deal well will mutliple files when its renaming, so it removes the 1080p copy and moves it to the temp trash folder.  When that occurs, I simply go back, grab the item, and move it back into the folder.

 

This same process happens in the Movies Library as well.

 

and is the requirement that

currently ScripterX is reporting a media added event and this is causing a post to facebook which you want to suppress....or is it about posting a "media updated" message to facebook?

 

thinking aloud perhaps if the script looked out for remove events shortly before added events (or vice versa) it could make a decision on how to behave...would need to see what the log looked like

Edited by ginjaninja
Link to comment
Share on other sites

JasonNalley

It's about suppression, there's no need to alert people that the file has been updated in my opinion.  But, if you choose to change it to "Updgraded" instead of just flat out suppression I have no issue with that.  I do currently have friends and family saying "Wasn't that already on there?" and I have to explain, so an "Upgraded" message, will alleviate that, but a suppression would save on Integromat Actions, which is why I prefer suppression, but in either scenario I am ok with it, this is your script and you should appeal to the masses and not just cater to me :) hehe

Link to comment
Share on other sites

ginjaninja

It's about suppression, there's no need to alert people that the file has been updated in my opinion.  But, if you choose to change it to "Updgraded" instead of just flat out suppression I have no issue with that.  I do currently have friends and family saying "Wasn't that already on there?" and I have to explain, so an "Upgraded" message, will alleviate that, but a suppression would save on Integromat Actions, which is why I prefer suppression, but in either scenario I am ok with it, this is your script and you should appeal to the masses and not just cater to me :) hehe

 

i dont think any of my family would care about upgrades either, so i will go for suppression...you are my only user and the script's raison d'etre so your opinion carries alot of weight :-)

Edited by ginjaninja
  • Like 1
Link to comment
Share on other sites

JasonNalley

...you are my only user...

 

For now... I personally think once more people realize this is possible (I searched high and low for similar things using Plex Webhooks and it was a bust, until I found Tautulli and ran into some others using Tautulli to do the same thing), more people will use it.  When I worked with another guy who showed me how to use Tautulli's method of posting, I created a quick write-up on the Plex forums of how to do it, with step by step instructions, and quite a few people liked, thanked, and commented on the post because they had all been looking for something like that as well.  So once people know it's a functional, working possibility and it's easy to do, and free to setup...  You'll have more users :)

Link to comment
Share on other sites

JasonNalley

Alright, I haven't upgraded anything yet, but I have added a run of episodes for Seven Worlds, One Planet...  this was the resulting facebook post:

 

Added to TV: 
Seven Worlds, One Planet - S01-EE01E07
 
For some reason it has Double E before the 01 (Not sure if that's intentional), and the - is inbetween the S01 and the first E.  The - should, in my opinion, be located between the episodes.  What do you think?
Link to comment
Share on other sites

ginjaninja

 

Alright, I haven't upgraded anything yet, but I have added a run of episodes for Seven Worlds, One Planet...  this was the resulting facebook post:

 

Added to TV: 
Seven Worlds, One Planet - S01-EE01E07
 
For some reason it has Double E before the 01 (Not sure if that's intentional), and the - is inbetween the S01 and the first E.  The - should, in my opinion, be located between the episodes.  What do you think?

 

 

oops that was a balls up will post a fix shortly

 

in the mean time i added a new file and removed an old file and the log looked like

"DateTime","Type","ID","Name","Series","Path","EventType","IsVirtual","Processed","Range","Index","Spare1"
"10 May 2020 19:36:16","Episode","319516","Witchbottle","Castlevania","J:\TV17\Castlevania\Season 01\S01E01 - Witchbottle.mkv","onMediaItemRemoved","False","Yes","","",""
"10 May 2020 19:36:16","Episode","319564","S01E01 - Witchbottle","Castlevania","J:\TV17\Castlevania\Season 01\S01E01 - Witchbottle.mp4","onMediaItemAdded","False","Yes",,"",""
"10 May 2020 19:36:17","Episode","319564","Witchbottle","Castlevania","J:\TV17\Castlevania\Season 01\S01E01 - Witchbottle.mp4","onMediaItemUpdated","False","Yes","","",""

so maybe if every time a file is updated IRL...an added event is accompanied by a updated event, i can supress based on that..will need to add season and epiosde number into the csv/paramters in next release to match on.

Link to comment
Share on other sites

JasonNalley

I mean, I guess technically I *did* update them, as I added the 2160p copy and moved the BluRay 1080p copy back into the folders (I also had to retag them because for some reason they weren't already tagged), same with the first two seasons of westworld I did.  I'll attach all the .csv files here (it also seems that LogMediaAdds.csv and PostAdded.csv are no longer being used?)

Edit3: Removed code style posts, will make a new post with new logs attached in .zip once I update more items (soon) I deleted the other two that were created to start off fresh again.

 

 

Weirdly, I see a bunch of movies in there (queue.csv) that I haven't touched in quite some time...  They didn't post to facebook, but I wonder what added them to this queue log... 


Edit: It seems the one thing they have in common is that the .nfo file was updated today...  maybe some more metadata got added... *shrugs*


Edit2: Sorry for the "code" type posts of the logs, I couldn't figure out how to attach the file directly... 

Edited by JasonNalley
Link to comment
Share on other sites

ginjaninja

 

Alright, I haven't upgraded anything yet, but I have added a run of episodes for Seven Worlds, One Planet...  this was the resulting facebook post:

 

Added to TV: 
Seven Worlds, One Planet - S01-EE01E07
 
For some reason it has Double E before the 01 (Not sure if that's intentional), and the - is inbetween the S01 and the first E.  The - should, in my opinion, be located between the episodes.  What do you think?

 

 

 

PostAdded.zip

Message for integromat
{"message":"Added to TV shows: \nCastlevania - S03E02-E10","link":"https://trakt.tv/shows/tt6517102/seasons/03#episodes"}
Sent to Integromat
  • Like 1
Link to comment
Share on other sites

ginjaninja

I mean, I guess technically I *did* update them, as I added the 2160p copy and moved the BluRay 1080p copy back into the folders (I also had to retag them because for some reason they weren't already tagged), same with the first two seasons of westworld I did.  I'll attach all the .csv files here (it also seems that LogMediaAdds.csv and PostAdded.csv are no longer being used?)

 

 

 

To post logs, zip them and then use "the full editor/more reply options" when posting with the attach button.

attach file, then add file to post.

 

i see you are getting the new events into the files so i am not sure why you think they are not being used ..must have misunderstood the post..

 

 

it is to be expected to see a whole host of new info in the log..possibly even for some media you cant account for..am looking into that..., but all this noise should be marked processed and thus not affect your posts to facebook.

Link to comment
Share on other sites

JasonNalley

To post logs, zip them and then use "the full editor/more reply options" when posting with the attach button.

attach file, then add file to post.

 

i see you are getting the new events into the files so i am not sure why you think they are not being used ..must have misunderstood the post..

 

 

it is to be expected to see a whole host of new info in the log..possibly even for some media you cant account for..am looking into that..., but all this noise should be marked processed and thus not affect your posts to facebook.

 

Well, Queue.csv and PostLog.csv are being used, those are where I copied the information from.  But it seems the LogMediaAdds.csv and the PostAdded.csv are no longer being updated.  Perhaps Queue and PostLog replaced them?

Link to comment
Share on other sites

ginjaninja

Well, Queue.csv and PostLog.csv are being used, those are where I copied the information from.  But it seems the LogMediaAdds.csv and the PostAdded.csv are no longer being updated.  Perhaps Queue and PostLog replaced them?

 

 i understand...yes you are correct, these old files can be removed, they are no longer used, apologies if i didnt mention that..oh and btw the name of the files used by scripts are options.

 

is there an issue that needs investigating beyond that query/clarification?

Edited by ginjaninja
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...