diff --git a/data/interfaces/default/settings.html b/data/interfaces/default/settings.html index 81aa0a40..717f7c3c 100644 --- a/data/interfaces/default/settings.html +++ b/data/interfaces/default/settings.html @@ -969,10 +969,17 @@ Note: The ${http_root}newsletter endpoint on your domain must be publicly accessible from the internet.
Warning: Public Tautulli domain not set under Web Interface.
+ +Enable static URLs to the last sent scheduled newsletter at ${http_root}newsletter/id/<newsletter_id>.
+Optional: Enter the full path to your custom newsletter templates folder. Leave blank for default.
Enter the full path to where newsletter files will be saved.
diff --git a/plexpy/common.py b/plexpy/common.py index 1968656a..0a7fb5fc 100644 --- a/plexpy/common.py +++ b/plexpy/common.py @@ -525,7 +525,7 @@ NEWSLETTER_PARAMETERS = [ {'name': 'Newsletter Time Frame', 'type': 'int', 'value': 'newsletter_time_frame', 'description': 'The time frame included in the newsletter.'}, {'name': 'Newsletter Time Frame Units', 'type': 'str', 'value': 'newsletter_time_frame_units', 'description': 'The time frame units included in the newsletter.'}, {'name': 'Newsletter URL', 'type': 'str', 'value': 'newsletter_url', 'description': 'The self-hosted URL to the newsletter.'}, - {'name': 'Newsletter Latest URL', 'type': 'str', 'value': 'newsletter_latest_url', 'description': 'The self-hosted URL to the latest scheduled newsletter for the agent.'}, + {'name': 'Newsletter Static URL', 'type': 'str', 'value': 'newsletter_static_url', 'description': 'The static self-hosted URL to the latest scheduled newsletter for the agent.'}, {'name': 'Newsletter UUID', 'type': 'str', 'value': 'newsletter_uuid', 'description': 'The unique identifier for the newsletter.'}, {'name': 'Newsletter ID', 'type': 'int', 'value': 'newsletter_id', 'description': 'The ID number for the newsletter agent.'}, ] diff --git a/plexpy/config.py b/plexpy/config.py index 9fc32b76..0dbc11ee 100644 --- a/plexpy/config.py +++ b/plexpy/config.py @@ -316,6 +316,7 @@ _CONFIG_DEFINITIONS = { 'NEWSLETTER_TEMPLATES': (str, 'Newsletter', 'newsletters'), 'NEWSLETTER_DIR': (str, 'Newsletter', ''), 'NEWSLETTER_SELF_HOSTED': (int, 'Newsletter', 0), + 'NEWSLETTER_STATIC_URL': (int, 'Newsletter', 0), 'NMA_APIKEY': (str, 'NMA', ''), 'NMA_ENABLED': (int, 'NMA', 0), 'NMA_PRIORITY': (int, 'NMA', 0), diff --git a/plexpy/newsletters.py b/plexpy/newsletters.py index 115448ca..1f21d7c0 100644 --- a/plexpy/newsletters.py +++ b/plexpy/newsletters.py @@ -453,9 +453,9 @@ class Newsletter(object): if '' not in line: n_file.write(line + '\r\n') - logger.info(u"Tautulli Newsletters :: %s newsletter saved to %s" % (self.NAME, newsletter_file)) + logger.info(u"Tautulli Newsletters :: %s newsletter saved to '%s'" % (self.NAME, newsletter_file)) except OSError as e: - logger.error(u"Tautulli Newsletters :: Failed to save %s newsletter to %s: %s" + logger.error(u"Tautulli Newsletters :: Failed to save %s newsletter to '%s': %s" % (self.NAME, newsletter_file, e)) def _send(self): @@ -501,7 +501,7 @@ class Newsletter(object): 'newsletter_time_frame': self.config['time_frame'], 'newsletter_time_frame_units': self.config['time_frame_units'], 'newsletter_url': base_url + self.uuid, - 'newsletter_latest_url': base_url + 'id/' + str(self.newsletter_id), + 'newsletter_static_url': base_url + 'id/' + str(self.newsletter_id), 'newsletter_uuid': self.uuid, 'newsletter_id': self.newsletter_id } diff --git a/plexpy/webserve.py b/plexpy/webserve.py index 36833d16..2da3a5c7 100644 --- a/plexpy/webserve.py +++ b/plexpy/webserve.py @@ -2756,6 +2756,7 @@ class WebInterface(object): "show_advanced_settings": plexpy.CONFIG.SHOW_ADVANCED_SETTINGS, "newsletter_dir": plexpy.CONFIG.NEWSLETTER_DIR, "newsletter_self_hosted": checked(plexpy.CONFIG.NEWSLETTER_SELF_HOSTED), + "newsletter_static_url": checked(plexpy.CONFIG.NEWSLETTER_STATIC_URL), "newsletter_custom_dir": plexpy.CONFIG.NEWSLETTER_CUSTOM_DIR } @@ -2778,7 +2779,7 @@ class WebInterface(object): "allow_guest_access", "cache_images", "http_proxy", "http_basic_auth", "notify_concurrent_by_ip", "history_table_activity", "plexpy_auto_update", "themoviedb_lookup", "tvmaze_lookup", "http_plex_admin", - "newsletter_self_hosted" + "newsletter_self_hosted", "newsletter_static_url" ] for checked_config in checked_configs: if checked_config not in kwargs: @@ -5665,7 +5666,7 @@ class WebInterface(object): cherrypy.response.headers['Cache-Control'] = 'max-age=2592000' # 30 days return self.image(args[1], refresh=True) - if len(args) >= 2 and args[0] == 'id': + if plexpy.CONFIG.NEWSLETTER_STATIC_URL and len(args) >= 2 and args[0] == 'id': newsletter_id = args[1] newsletter_uuid = None else: