mirror of
https://github.com/Tautulli/Tautulli.git
synced 2025-07-10 07:22:37 -07:00
Update Discord, Slack, and Hipchat cards
This commit is contained in:
parent
651f4ebf5f
commit
70f006d06d
2 changed files with 73 additions and 34 deletions
|
@ -453,6 +453,12 @@ def get_percent(value1, value2):
|
||||||
|
|
||||||
return math.trunc(percent)
|
return math.trunc(percent)
|
||||||
|
|
||||||
|
def hex_to_int(hex):
|
||||||
|
try:
|
||||||
|
return int(hex, 16)
|
||||||
|
except (ValueError, TypeError):
|
||||||
|
return 0
|
||||||
|
|
||||||
def parse_xml(unparsed=None):
|
def parse_xml(unparsed=None):
|
||||||
if unparsed:
|
if unparsed:
|
||||||
try:
|
try:
|
||||||
|
|
|
@ -550,17 +550,29 @@ class PrettyMetadata(object):
|
||||||
self.poster_url = 'https://raw.githubusercontent.com/%s/plexpy/master/data/interfaces/default/images/poster.png' % plexpy.CONFIG.GIT_USER
|
self.poster_url = 'https://raw.githubusercontent.com/%s/plexpy/master/data/interfaces/default/images/poster.png' % plexpy.CONFIG.GIT_USER
|
||||||
return self.poster_url
|
return self.poster_url
|
||||||
|
|
||||||
def get_poster_link(self):
|
def get_provider(self):
|
||||||
self.poster_link = ''
|
self.provider = ''
|
||||||
if self.parameters['thetvdb_url']:
|
if self.parameters['thetvdb_url']:
|
||||||
self.poster_link = self.parameters['thetvdb_url']
|
self.provider = 'TheTVDB'
|
||||||
elif self.parameters['themoviedb_url']:
|
elif self.parameters['themoviedb_url']:
|
||||||
self.poster_link = self.parameters['themoviedb_url']
|
self.provider = 'The Movie Database'
|
||||||
elif self.parameters['imdb_url']:
|
elif self.parameters['imdb_url']:
|
||||||
self.poster_link = self.parameters['imdb_url']
|
self.provider = 'IMDb'
|
||||||
elif self.parameters['lastfm_url']:
|
elif self.parameters['lastfm_url']:
|
||||||
self.poster_link = self.parameters['lastfm_url']
|
self.provider = 'Last.fm'
|
||||||
return self.poster_link
|
return self.provider
|
||||||
|
|
||||||
|
def get_provider_link(self):
|
||||||
|
self.provider_link = ''
|
||||||
|
if self.parameters['thetvdb_url']:
|
||||||
|
self.provider_link = self.parameters['thetvdb_url']
|
||||||
|
elif self.parameters['themoviedb_url']:
|
||||||
|
self.provider_link = self.parameters['themoviedb_url']
|
||||||
|
elif self.parameters['imdb_url']:
|
||||||
|
self.provider_link = self.parameters['imdb_url']
|
||||||
|
elif self.parameters['lastfm_url']:
|
||||||
|
self.provider_link = self.parameters['lastfm_url']
|
||||||
|
return self.provider_link
|
||||||
|
|
||||||
def get_caption(self):
|
def get_caption(self):
|
||||||
self.caption = ''
|
self.caption = ''
|
||||||
|
@ -787,6 +799,7 @@ class DISCORD(Notifier):
|
||||||
_DEFAULT_CONFIG = {'hook': '',
|
_DEFAULT_CONFIG = {'hook': '',
|
||||||
'username': '',
|
'username': '',
|
||||||
'avatar_url': '',
|
'avatar_url': '',
|
||||||
|
'color': '',
|
||||||
'tts': 0,
|
'tts': 0,
|
||||||
'incl_pmslink': 0,
|
'incl_pmslink': 0,
|
||||||
'incl_poster': 0,
|
'incl_poster': 0,
|
||||||
|
@ -815,23 +828,33 @@ class DISCORD(Notifier):
|
||||||
pretty_metadata = PrettyMetadata(kwargs['parameters'])
|
pretty_metadata = PrettyMetadata(kwargs['parameters'])
|
||||||
poster_url = pretty_metadata.get_poster_url()
|
poster_url = pretty_metadata.get_poster_url()
|
||||||
plex_url = pretty_metadata.get_plex_url()
|
plex_url = pretty_metadata.get_plex_url()
|
||||||
poster_link = pretty_metadata.get_poster_link()
|
provider = pretty_metadata.get_provider()
|
||||||
caption = pretty_metadata.get_caption()
|
provider_link = pretty_metadata.get_provider_link()
|
||||||
title = pretty_metadata.get_title('\xc2\xb7'.decode('utf8'))
|
title = pretty_metadata.get_title('\xc2\xb7'.decode('utf8'))
|
||||||
subtitle = pretty_metadata.get_subtitle()
|
subtitle = pretty_metadata.get_subtitle()
|
||||||
|
|
||||||
# Build Discord post attachment
|
# Build Discord post attachment
|
||||||
attachment = {'title': title,
|
attachment = {'title': title,
|
||||||
'description': subtitle,
|
'description': subtitle,
|
||||||
'thumbnail': {'url': poster_url},
|
'thumbnail': {'url': poster_url}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if self.config['color'] and self.config['color'].startswith('#'):
|
||||||
|
hex = self.config['color'].lstrip('#')
|
||||||
|
attachment['color'] = helpers.hex_to_int(hex)
|
||||||
|
|
||||||
|
fields = []
|
||||||
|
if provider_link:
|
||||||
|
attachment['url'] = provider_link
|
||||||
|
fields.append({'name': 'View Details',
|
||||||
|
'value': '[%s](%s)' % (provider, provider_link.encode('utf-8')),
|
||||||
|
'inline': True})
|
||||||
if self.config['incl_pmslink']:
|
if self.config['incl_pmslink']:
|
||||||
attachment['url'] = plex_url
|
fields.append({'name': 'View Details',
|
||||||
attachment['description'] += '\r\n\r\n[View on Plex Web](%s)' % plex_url.encode('utf-8')
|
'value': '[Plex Web](%s)' % plex_url.encode('utf-8'),
|
||||||
elif poster_link:
|
'inline': True})
|
||||||
attachment['url'] = poster_link
|
if fields:
|
||||||
attachment['description'] += '\r\n\r\n[%s](%s)' % (caption, poster_link.encode('utf-8'))
|
attachment['fields'] = fields
|
||||||
|
|
||||||
data['embeds'] = [attachment]
|
data['embeds'] = [attachment]
|
||||||
|
|
||||||
|
@ -879,6 +902,12 @@ class DISCORD(Notifier):
|
||||||
'name': 'discord_avatar_url',
|
'name': 'discord_avatar_url',
|
||||||
'input_type': 'text'
|
'input_type': 'text'
|
||||||
},
|
},
|
||||||
|
{'label': 'Discord Color',
|
||||||
|
'value': self.config['color'],
|
||||||
|
'description': 'The hex color value (begins with \'#\') for the border along the left side of the message attachment.',
|
||||||
|
'name': 'discord_color',
|
||||||
|
'input_type': 'text'
|
||||||
|
},
|
||||||
{'label': 'TTS',
|
{'label': 'TTS',
|
||||||
'value': self.config['tts'],
|
'value': self.config['tts'],
|
||||||
'name': 'discord_tts',
|
'name': 'discord_tts',
|
||||||
|
@ -1128,7 +1157,7 @@ class FACEBOOK(Notifier):
|
||||||
pretty_metadata = PrettyMetadata(kwargs['parameters'])
|
pretty_metadata = PrettyMetadata(kwargs['parameters'])
|
||||||
poster_url = pretty_metadata.get_poster_url()
|
poster_url = pretty_metadata.get_poster_url()
|
||||||
plex_url = pretty_metadata.get_plex_url()
|
plex_url = pretty_metadata.get_plex_url()
|
||||||
poster_link = pretty_metadata.get_poster_link()
|
provider_link = pretty_metadata.get_provider_link()
|
||||||
caption = pretty_metadata.get_caption()
|
caption = pretty_metadata.get_caption()
|
||||||
title = pretty_metadata.get_title('\xc2\xb7'.decode('utf8'))
|
title = pretty_metadata.get_title('\xc2\xb7'.decode('utf8'))
|
||||||
subtitle = pretty_metadata.get_subtitle()
|
subtitle = pretty_metadata.get_subtitle()
|
||||||
|
@ -1137,8 +1166,8 @@ class FACEBOOK(Notifier):
|
||||||
if self.config['incl_pmslink']:
|
if self.config['incl_pmslink']:
|
||||||
attachment['link'] = plex_url
|
attachment['link'] = plex_url
|
||||||
attachment['caption'] = 'View on Plex Web'
|
attachment['caption'] = 'View on Plex Web'
|
||||||
elif poster_link:
|
elif provider_link:
|
||||||
attachment['link'] = poster_link
|
attachment['link'] = provider_link
|
||||||
attachment['caption'] = caption
|
attachment['caption'] = caption
|
||||||
else:
|
else:
|
||||||
attachment['link'] = poster_url
|
attachment['link'] = poster_url
|
||||||
|
@ -1328,7 +1357,7 @@ class HIPCHAT(Notifier):
|
||||||
}
|
}
|
||||||
|
|
||||||
def notify(self, subject='', body='', action='', **kwargs):
|
def notify(self, subject='', body='', action='', **kwargs):
|
||||||
if not subjecy or not body:
|
if not subject or not body:
|
||||||
return
|
return
|
||||||
|
|
||||||
data = {'notify': 'false'}
|
data = {'notify': 'false'}
|
||||||
|
@ -1345,8 +1374,8 @@ class HIPCHAT(Notifier):
|
||||||
# Grab formatted metadata
|
# Grab formatted metadata
|
||||||
pretty_metadata = PrettyMetadata(kwargs['parameters'])
|
pretty_metadata = PrettyMetadata(kwargs['parameters'])
|
||||||
poster_url = pretty_metadata.get_poster_url()
|
poster_url = pretty_metadata.get_poster_url()
|
||||||
poster_link = pretty_metadata.get_poster_link()
|
provider = pretty_metadata.get_provider()
|
||||||
caption = pretty_metadata.get_caption()
|
provider_link = pretty_metadata.get_provider_link()
|
||||||
title = pretty_metadata.get_title()
|
title = pretty_metadata.get_title()
|
||||||
subtitle = pretty_metadata.get_subtitle()
|
subtitle = pretty_metadata.get_subtitle()
|
||||||
plex_url = pretty_metadata.get_plex_url()
|
plex_url = pretty_metadata.get_plex_url()
|
||||||
|
@ -1363,12 +1392,14 @@ class HIPCHAT(Notifier):
|
||||||
}
|
}
|
||||||
|
|
||||||
attributes = []
|
attributes = []
|
||||||
if poster_link:
|
if provider_link:
|
||||||
card['url'] = poster_link
|
card['url'] = provider_link
|
||||||
attributes.append({'value': {'label': caption,
|
attributes.append({'label': 'View Details',
|
||||||
'url': poster_link}})
|
'value': {'label': provider,
|
||||||
|
'url': provider_link}})
|
||||||
if self.config['incl_pmslink']:
|
if self.config['incl_pmslink']:
|
||||||
attributes.append({'value': {'label': 'View on Plex Web',
|
attributes.append({'label': 'View Details',
|
||||||
|
'value': {'label': 'Plex Web',
|
||||||
'url': plex_url}})
|
'url': plex_url}})
|
||||||
if attributes:
|
if attributes:
|
||||||
card['attributes'] = attributes
|
card['attributes'] = attributes
|
||||||
|
@ -2101,14 +2132,14 @@ class PUSHOVER(Notifier):
|
||||||
# Grab formatted metadata
|
# Grab formatted metadata
|
||||||
pretty_metadata = PrettyMetadata(kwargs['parameters'])
|
pretty_metadata = PrettyMetadata(kwargs['parameters'])
|
||||||
plex_url = pretty_metadata.get_plex_url()
|
plex_url = pretty_metadata.get_plex_url()
|
||||||
poster_link = pretty_metadata.get_poster_link()
|
provider_link = pretty_metadata.get_provider_link()
|
||||||
caption = pretty_metadata.get_caption()
|
caption = pretty_metadata.get_caption()
|
||||||
|
|
||||||
if self.config['incl_pmslink']:
|
if self.config['incl_pmslink']:
|
||||||
data['url'] = plex_url
|
data['url'] = plex_url
|
||||||
data['url_title'] = 'View on Plex Web'
|
data['url_title'] = 'View on Plex Web'
|
||||||
else:
|
else:
|
||||||
data['url'] = poster_link
|
data['url'] = provider_link
|
||||||
data['url_title'] = caption
|
data['url_title'] = caption
|
||||||
|
|
||||||
http_handler = HTTPSConnection("api.pushover.net")
|
http_handler = HTTPSConnection("api.pushover.net")
|
||||||
|
@ -2421,8 +2452,8 @@ class SLACK(Notifier):
|
||||||
pretty_metadata = PrettyMetadata(kwargs['parameters'])
|
pretty_metadata = PrettyMetadata(kwargs['parameters'])
|
||||||
poster_url = pretty_metadata.get_poster_url()
|
poster_url = pretty_metadata.get_poster_url()
|
||||||
plex_url = pretty_metadata.get_plex_url()
|
plex_url = pretty_metadata.get_plex_url()
|
||||||
poster_link = pretty_metadata.get_poster_link()
|
provider = pretty_metadata.get_provider()
|
||||||
caption = pretty_metadata.get_caption()
|
provider_link = pretty_metadata.get_provider_link()
|
||||||
title = pretty_metadata.get_title()
|
title = pretty_metadata.get_title()
|
||||||
subtitle = pretty_metadata.get_subtitle()
|
subtitle = pretty_metadata.get_subtitle()
|
||||||
|
|
||||||
|
@ -2438,12 +2469,14 @@ class SLACK(Notifier):
|
||||||
attachment['color'] = self.config['color']
|
attachment['color'] = self.config['color']
|
||||||
|
|
||||||
fields = []
|
fields = []
|
||||||
if poster_link:
|
if provider_link:
|
||||||
attachment['title_link'] = poster_link
|
attachment['title_link'] = provider_link
|
||||||
fields.append({'value': '<%s|%s>' % (poster_link, caption),
|
fields.append({'title': 'View Details',
|
||||||
|
'value': '<%s|%s>' % (provider_link, provider),
|
||||||
'short': True})
|
'short': True})
|
||||||
if self.config['incl_pmslink']:
|
if self.config['incl_pmslink']:
|
||||||
fields.append({'value': '<%s|%s>' % (plex_url, 'View on Plex Web'),
|
fields.append({'title': 'View Details',
|
||||||
|
'value': '<%s|%s>' % (plex_url, 'Plex Web'),
|
||||||
'short': True})
|
'short': True})
|
||||||
if fields:
|
if fields:
|
||||||
attachment['fields'] = fields
|
attachment['fields'] = fields
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue