diff --git a/data/interfaces/default/settings.html b/data/interfaces/default/settings.html
index e7f0f4bd..15d7e2bb 100644
--- a/data/interfaces/default/settings.html
+++ b/data/interfaces/default/settings.html
@@ -1104,6 +1104,14 @@ available_notification_agents = sorted(notifiers.available_notification_agents()
{action} |
The action that triggered the notification. |
+
+ {datestamp} |
+ The date the notification was triggered. |
+
+
+ {timestamp} |
+ The time the notification was triggered. |
+
{user} |
The username of the person streaming. |
diff --git a/plexpy/helpers.py b/plexpy/helpers.py
index fe955dcb..c0c24b47 100644
--- a/plexpy/helpers.py
+++ b/plexpy/helpers.py
@@ -447,3 +447,84 @@ def sanitize(string):
return unicode(string).replace('<','<').replace('>','>')
else:
return ''
+
+def parse_js_date(date):
+ """
+ Taken from moment library.
+
+ Translate the easy-to-use JavaScript format strings to Python's cumbersome
+ strftime format. Also, this is some ugly code -- and it's completely
+ order-dependent.
+ """
+ # AM/PM
+ if 'A' in date:
+ date = date.replace('A', '%p')
+ elif 'a' in date:
+ date = date.replace('a', '%P')
+ # 24 hours
+ if 'HH' in date:
+ date = date.replace('HH', '%H')
+ elif 'H' in date:
+ date = date.replace('H', '%k')
+ # 12 hours
+ elif 'hh' in date:
+ date = date.replace('hh', '%I')
+ elif 'h' in date:
+ date = date.replace('h', '%l')
+ # Minutes
+ if 'mm' in date:
+ date = date.replace('mm', '%min')
+ elif 'm' in date:
+ date = date.replace('m', '%min')
+ # Seconds
+ if 'ss' in date:
+ date = date.replace('ss', '%S')
+ elif 's' in date:
+ date = date.replace('s', '%S')
+ # Milliseconds
+ if 'SSS' in date:
+ date = date.replace('SSS', '%3')
+ # Years
+ if 'YYYY' in date:
+ date = date.replace('YYYY', '%Y')
+ elif 'YY' in date:
+ date = date.replace('YY', '%y')
+ # Months
+ if 'MMMM' in date:
+ date = date.replace('MMMM', '%B')
+ elif 'MMM' in date:
+ date = date.replace('MMM', '%b')
+ elif 'MM' in date:
+ date = date.replace('MM', '%m')
+ elif 'M' in date:
+ date = date.replace('M', '%m')
+ # Days of the week
+ if 'dddd' in date:
+ date = date.replace('dddd', '%A')
+ elif 'ddd' in date:
+ date = date.replace('ddd', '%a')
+ elif 'dd' in date:
+ date = date.replace('dd', '%w')
+ elif 'd' in date:
+ date = date.replace('d', '%u')
+ # Days of the year
+ if 'DDDD' in date:
+ date = date.replace('DDDD', '%j')
+ elif 'DDD' in date:
+ date = date.replace('DDD', '%j')
+ # Days of the month
+ elif 'DD' in date:
+ date = date.replace('DD', '%d')
+ # 'Do' not valid python time format
+ elif 'Do' in date:
+ date = date.replace('Do', '')
+ elif 'D' in date:
+ date = date.replace('D', '%d')
+ # Timezone
+ if 'zz' in date:
+ date = date.replace('zz', '%Z')
+ # A necessary evil right now...
+ if '%min' in date:
+ date = date.replace('%min', '%M')
+
+ return date
\ No newline at end of file
diff --git a/plexpy/notification_handler.py b/plexpy/notification_handler.py
index 173069ea..5ae1c4db 100644
--- a/plexpy/notification_handler.py
+++ b/plexpy/notification_handler.py
@@ -16,7 +16,6 @@
import re
import time
-import re
from plexpy import logger, config, notifiers, database, helpers, plextv, pmsconnect
import plexpy
@@ -525,6 +524,8 @@ def build_notify_text(session=None, timeline=None, state=None):
'server_uptime': server_uptime,
'streams': stream_count,
'action': state,
+ 'datestamp': time.strftime(helpers.parse_js_date(plexpy.CONFIG.DATE_FORMAT)),
+ 'timestamp': time.strftime(helpers.parse_js_date(plexpy.CONFIG.TIME_FORMAT)),
'user': user,
'platform': platform,
'player': player,
@@ -792,7 +793,9 @@ def build_server_notify_text(state=None):
available_params = {'server_name': server_name,
'server_uptime': server_uptime,
- 'action': state}
+ 'action': state,
+ 'datestamp': time.strftime(helpers.parse_js_date(plexpy.CONFIG.DATE_FORMAT)),
+ 'timestamp': time.strftime(helpers.parse_js_date(plexpy.CONFIG.TIME_FORMAT))}
# Default text
subject_text = 'PlexPy (%s)' % server_name