Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update plex_update.ps1 #45

Merged
merged 1 commit into from
Jan 23, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 4 additions & 17 deletions plex_update.ps1
Original file line number Diff line number Diff line change
@@ -1,38 +1,25 @@
# PLEX PARTIAL SCAN script or PLEX UPDATE script
# When zurg detects changes, it can trigger this script IF your config.yml contains
# on_library_update: & { & '.\plex_update.ps1' $args }
Add-Type -AssemblyName System.Web

# this uses python3
# docker compose exec zurg apk add python3
# sudo apt install python3
$plex_url = "http://yourplexip:32400"
$token = "YourPlexTokenHere"
$zurg_mount = "YourZurgMountLetterHere:"
Comment on lines +3 to +5
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ensure that the $plex_url and $token variables are assigned from a secure source or environment variables to prevent hardcoding sensitive information.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Consider validating the $section_ids to ensure that the script received a valid response from the Plex server before proceeding.


$plex_url = "http://yourplexip:32400" # If you're using zurg inside a Docker container, by default it is 172.17.0.1:32400
$token = "yourplextoken" # open Plex in a browser, open dev console and copy-paste this: window.localStorage.getItem("myPlexAccessToken")
$zurg_mount = "/mnt/zurg" # replace with your zurg mount path, ensure this is what Plex sees

# Get the list of section IDs
$section_ids = (Invoke-WebRequest -Uri "$plex_url/library/sections" -Headers @{"X-Plex-Token" = $token} -Method Get).Content |
Select-Xml -XPath "//Directory/@key" |
ForEach-Object { $_.Node.Value }

foreach ($arg in $args) {
# Construct the full path
$modified_arg = "$zurg_mount/$arg"
Write-Host "Detected update on: $arg"
Write-Host "Absolute path: $modified_arg"

# URL Encode the path
$encoded_arg = [System.Web.HttpUtility]::UrlEncode($modified_arg)

if ([string]::IsNullOrEmpty($encoded_arg)) {
Write-Host "Error: Encoded argument is empty. Check the input or encoding process."
continue
}

# Additional escaping logic here if necessary
# For instance, if certain characters are not being correctly escaped by UrlEncode,
# you can add custom replace commands here.

foreach ($section_id in $section_ids) {
$final_url = "${plex_url}/library/sections/${section_id}/refresh?path=${encoded_arg}&X-Plex-Token=${token}"
Comment on lines 13 to 24
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The construction of $final_url directly interpolates the encoded argument and token into the URL. Ensure that the token is securely handled and that the URL construction does not introduce any vulnerabilities, such as URL injection.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The final message indicates completion. Consider adding error handling to provide feedback if any web requests fail.


Expand Down