Skip to content

Instantly share code, notes, and snippets.

@GodKratos
Last active December 10, 2021 07:24
Show Gist options
  • Save GodKratos/83276e43b7d362b4c2c848e543157e3d to your computer and use it in GitHub Desktop.
Save GodKratos/83276e43b7d362b4c2c848e543157e3d to your computer and use it in GitHub Desktop.
Sonarr Pushbullet custom script derived from https://github.com/CJPCNZ/CustomPush/blob/master/Sonarr/PushBullet.ps1 using environment variables from https://wiki.servarr.com/sonarr/custom-scripts
# Define Variables
$sonarr_eventtype = $env:sonarr_eventtype
$sonarr_series_id = $env:sonarr_series_id
$sonarr_series_title = $env:sonarr_series_title
$pushkey="" # Your PushBullet API key
$pushtag="" # Add the tag for your Pushbullet Channel or leave blank for direct push notifications
$pushtitle = "Error"
$pushmessage = "Unhandled event type: $sonarr_eventtype"
switch ($sonarr_eventtype)
{
"Test" {
# Format content
$pushtitle = "Test"
$pushmessage = "Sonarr Test Message"
}
"Grab" {
# Grab variables
$sonarr_series_type = $env:sonarr_series_type
$sonarr_release_seasonnumber = $env:sonarr_release_seasonnumber
$sonarr_release_episodenumbers = $env:sonarr_release_episodenumbers
$sonarr_release_absoluteepisodenumbers = $env:sonarr_release_absoluteepisodenumbers
$sonarr_release_episodeairdates = $env:sonarr_release_episodeairdates
$sonarr_release_episodetitles = $env:sonarr_release_episodetitles
$sonarr_release_title = $env:sonarr_release_title
$sonarr_release_quality = $env:sonarr_release_quality
$sonarr_release_size = $env:sonarr_release_size
# Format content
switch ($sonarr_series_type)
{
"Anime" {
$pushtitle = "{0} - Grab: S{1:d2}E{2:d2} ({3})" -f $sonarr_series_title,[int]$sonarr_release_seasonnumber,[int]$sonarr_release_episodenumbers,$sonarr_release_absoluteepisodenumbers
$pushmessage = "S{0:d2}E{1:d2} ({2}) - {3} - {4}`n{5} ({6:n0} MB)" -f [int]$sonarr_release_seasonnumber,[int]$sonarr_release_episodenumbers,$sonarr_release_absoluteepisodenumbers,$sonarr_release_quality,$sonarr_release_episodetitles,$sonarr_release_title,([int64]$sonarr_release_size/1MB)
}
"Daily" {
$pushtitle = "{0} - Grab: S{1:d2}E{2:d2} ({3})" -f $sonarr_series_title,[int]$sonarr_release_seasonnumber,[int]$sonarr_release_episodenumbers,$sonarr_release_episodeairdates
$pushmessage = "S{0:d2}E{1:d2} ({2}) - {3} - {4}`n{5} ({6:n0} MB)" -f [int]$sonarr_release_seasonnumber,[int]$sonarr_release_episodenumbers,$sonarr_release_episodeairdates,$sonarr_release_quality,$sonarr_release_episodetitles,$sonarr_release_title,([int64]$sonarr_release_size/1MB)
}
Default {
$pushtitle = "{0} - Grab: S{1:d2}E{2:d2}" -f $sonarr_series_title,[int]$sonarr_release_seasonnumber,[int]$sonarr_release_episodenumbers
$pushmessage = "S{0:d2}E{1:d2} - {2} - {3}`n{4} ({5:n0} MB)" -f [int]$sonarr_release_seasonnumber,[int]$sonarr_release_episodenumbers,$sonarr_release_quality,$sonarr_release_episodetitles,$sonarr_release_title,([int64]$sonarr_release_size/1MB)
}
}
}
"Download" {
# Download Variables
$sonarr_episodefile_id = $env:sonarr_episodefile_id
$sonarr_episodefile_seasonnumber = $env:sonarr_episodefile_seasonnumber
$sonarr_episodefile_episodenumbers = $env:sonarr_episodefile_episodenumbers
$sonarr_episodefile_episodetitles = $env:sonarr_episodefile_episodetitles
$sonarr_episodefile_quality = $env:sonarr_episodefile_quality
# Format content
$pushtitle = "{0} - Import: S{1:d2}E{2:d2}" -f $sonarr_series_title,[int]$sonarr_episodefile_seasonnumber,[int]$sonarr_episodefile_episodenumbers
$pushmessage = "S{0:d2}E{1:d2} - {2} - {3}" -f [int]$sonarr_episodefile_seasonnumber,[int]$sonarr_episodefile_episodenumbers,$sonarr_episodefile_quality,$sonarr_episodefile_episodetitles
}
"Rename" {
# Rename Variables
$sonarr_series_path = $env:sonarr_series_path
# Format content
$pushtitle = "{0} - Rename" -f $sonarr_series_title
$pushmessage = "{0}" -f $sonarr_series_path
}
"EpisodeDeleted" {
# EpisodeDeleted Variables
$sonarr_episodefile_id = $env:sonarr_episodefile_id
$sonarr_episodefile_seasonnumber = $env:sonarr_episodefile_seasonnumber
$sonarr_episodefile_episodenumbers = $env:sonarr_episodefile_episodenumbers
$sonarr_episodefile_episodetitles = $env:sonarr_episodefile_episodetitles
$sonarr_episodefile_quality = $env:sonarr_episodefile_quality
# Format content
$pushtitle = "{0} - Episode Deleted: S{1:d2}E{2:d2}" -f $sonarr_series_title,[int]$sonarr_episodefile_seasonnumber,[int]$sonarr_episodefile_episodenumbers
$pushmessage = "S{0:d2}E{1:d2} - {2} - {3}" -f [int]$sonarr_episodefile_seasonnumber,[int]$sonarr_episodefile_episodenumbers,$sonarr_episodefile_quality,$sonarr_episodefile_episodetitles
}
"SeriesDeleted" {
# SeriesDeleted Variables
$sonarr_series_path = $env:sonarr_series_path
$sonarr_series_deletedfiles - $sonarr_series_deletedfiles
# Format content
$pushtitle = "{0} - Series Deleted" -f $sonarr_series_title
$pushmessage = "{0}`nFiles deleted: {1}" -f $sonarr_series_path,$sonarr_series_deletedfiles
}
"HealthIssue" {
# Health Variables
$sonarr_health_issue_level = $env:sonarr_health_issue_level
$sonarr_health_issue_type = $env:sonarr_health_issue_type
$sonarr_health_issue_message = $env:sonarr_health_issue_message
$sonarr_health_issue_wiki = $env:sonarr_health_issue_wiki
# Format content
$pushtitle = "{0} Health Issue - {1}" -f $sonarr_health_issue_type,$sonarr_health_issue_level
$pushmessage = "{0}" -f $sonarr_health_issue_message
if (![string]::IsNullOrWhiteSpace($sonarr_health_issue_wiki)) {
$pushmessage += "`n{0}" -f $sonarr_health_issue_wiki
}
}
}
# Prepare push notification body
$pushbody = @{
type = 'note'
"title" = $pushtitle
"body" = $pushmessage
channel_tag = $pushtag
}
# Send push notification
Invoke-WebRequest -Method POST -Uri "https://api.pushbullet.com/v2/pushes" -UseBasicParsing -Header @{"Access-Token" = $pushkey} -Body $pushBody
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment