Compare commits

...

8 Commits

Author SHA1 Message Date
JonnyWong16
5417747473 v1.4.24 2017-10-01 11:13:16 -07:00
JonnyWong16
cf6847d777 Fallback to product if player title is blank 2017-10-01 11:08:52 -07:00
JonnyWong16
464fa1f8a3 Add no forking option to startup arguments 2017-10-01 11:08:40 -07:00
JonnyWong16
665a6435ef Merge pull request #1076 from Vashypooh/master
Added support for windows service
2017-10-01 10:49:49 -07:00
JonnyWong16
2d64ba4a0e Merge pull request #1107 from Joshua1337/master
Update web 3.20.5 urls
2017-10-01 10:43:58 -07:00
Joshua Dehler
8a556a50ab Fix web 3.20.5 urls 2017-09-08 20:13:45 +02:00
Joshua Dehler
532ff59dfe Fix web 3.20.5 urls 2017-09-08 20:13:07 +02:00
Vashypooh
b3fe6145e2 Added support for windows service
Added support for running as a windows service so it does not fork the process on reboot.
2017-07-22 16:02:42 -04:00
7 changed files with 34 additions and 12 deletions

View File

@@ -1,5 +1,12 @@
# Changelog
## v1.4.24 (2017-10-01)
* Fix: New Plex Web urls. (Thanks @Joshua1337)
* Fix: Fallback to the product name if the player title is blank.
* New: Added no forking option to startup arguments. (Thanks @Vashypooh)
## v1.4.23 (2017-09-30)
* Fix: Playstation 4 platform name.

View File

@@ -92,7 +92,9 @@ def main():
'--nolaunch', action='store_true', help='Prevent browser from launching on startup')
parser.add_argument(
'--pidfile', help='Create a pid file (only relevant when running as a daemon)')
parser.add_argument(
'--nofork', action='store_true', help='Start PlexPy as a service, do not fork when restarting')
args = parser.parse_args()
if args.verbose:
@@ -116,6 +118,10 @@ def main():
plexpy.DAEMON = True
plexpy.QUIET = True
if args.nofork:
plexpy.NOFORK = True
logger.info("PlexPy is running as a service, it will not fork when restarted.")
if args.pidfile:
plexpy.PIDFILE = str(args.pidfile)

View File

@@ -115,9 +115,9 @@ DOCUMENTATION :: END
<div class="col-md-9">
<div class="summary-content-poster hidden-xs hidden-sm">
% if data['media_type'] == 'track':
<a href="https://app.plex.tv/web/app#!/server/${config['pms_identifier']}/details?key=%2Flibrary%2Fmetadata%2F${data['parent_rating_key']}" target="_blank" title="View in Plex Web">
<a href="https://app.plex.tv/desktop#!/server/${config['pms_identifier']}/details?key=%2Flibrary%2Fmetadata%2F${data['parent_rating_key']}" target="_blank" title="View in Plex Web">
% else:
<a href="https://app.plex.tv/web/app#!/server/${config['pms_identifier']}/details?key=%2Flibrary%2Fmetadata%2F${data['rating_key']}" target="_blank" title="View in Plex Web">
<a href="https://app.plex.tv/desktop#!/server/${config['pms_identifier']}/details?key=%2Flibrary%2Fmetadata%2F${data['rating_key']}" target="_blank" title="View in Plex Web">
% endif
% if data['media_type'] == 'episode':
<div class="summary-poster-face-episode" style="background-image: url(pms_image_proxy?img=${data['thumb']}&width=500&height=280&fallback=art);">

View File

@@ -54,6 +54,7 @@ VERBOSE = True
DAEMON = False
CREATEPID = False
PIDFILE = None
NOFORK = False
SCHED = BackgroundScheduler()
SCHED_LOCK = threading.Lock()
@@ -989,13 +990,16 @@ def shutdown(restart=False, update=False):
args += ARGS
if '--nolaunch' not in args:
args += ['--nolaunch']
logger.info('Restarting PlexPy with %s', args)
# os.execv fails with spaced names on Windows
# https://bugs.python.org/issue19066
if os.name == 'nt':
if NOFORK:
logger.info('Running as service, not forking. Exiting...')
elif os.name == 'nt':
logger.info('Restarting PlexPy with %s', args)
subprocess.Popen(args, cwd=os.getcwd())
else:
logger.info('Restarting PlexPy with %s', args)
os.execv(exe, args)
os._exit(0)

View File

@@ -666,7 +666,7 @@ def build_notify_text(session=None, timeline=None, notify_action=None, agent_id=
remaining_duration = duration - view_offset
# Build Plex URL
metadata['plex_url'] = 'https://app.plex.tv/web/app#!/server/{0}/details?key=%2Flibrary%2Fmetadata%2F{1}'.format(
metadata['plex_url'] = 'https://app.plex.tv/desktop#!/server/{0}/details?key=%2Flibrary%2Fmetadata%2F{1}'.format(
plexpy.CONFIG.PMS_IDENTIFIER, str(rating_key))
# Get media IDs from guid and build URLs

View File

@@ -1115,7 +1115,8 @@ class PmsConnect(object):
'friendly_name': user_details['friendly_name'],
'user_thumb': user_details['user_thumb'],
'ip_address': helpers.get_xml_attr(session.getElementsByTagName('Player')[0], 'address').split('::ffff:')[-1],
'player': helpers.get_xml_attr(session.getElementsByTagName('Player')[0], 'title'),
'player': helpers.get_xml_attr(session.getElementsByTagName('Player')[0], 'title')
or helpers.get_xml_attr(session.getElementsByTagName('Player')[0], 'product'),
'platform': helpers.get_xml_attr(session.getElementsByTagName('Player')[0], 'platform'),
'machine_id': machine_id,
'state': helpers.get_xml_attr(session.getElementsByTagName('Player')[0], 'state'),
@@ -1258,7 +1259,8 @@ class PmsConnect(object):
'friendly_name': user_details['friendly_name'],
'user_thumb': user_details['user_thumb'],
'ip_address': helpers.get_xml_attr(session.getElementsByTagName('Player')[0], 'address').split('::ffff:')[-1],
'player': helpers.get_xml_attr(session.getElementsByTagName('Player')[0], 'title'),
'player': helpers.get_xml_attr(session.getElementsByTagName('Player')[0], 'title')
or helpers.get_xml_attr(session.getElementsByTagName('Player')[0], 'product'),
'platform': helpers.get_xml_attr(session.getElementsByTagName('Player')[0], 'platform'),
'machine_id': machine_id,
'state': helpers.get_xml_attr(session.getElementsByTagName('Player')[0], 'state'),
@@ -1322,7 +1324,8 @@ class PmsConnect(object):
'friendly_name': user_details['friendly_name'],
'user_thumb': user_details['user_thumb'],
'ip_address': helpers.get_xml_attr(session.getElementsByTagName('Player')[0], 'address').split('::ffff:')[-1],
'player': helpers.get_xml_attr(session.getElementsByTagName('Player')[0], 'title'),
'player': helpers.get_xml_attr(session.getElementsByTagName('Player')[0], 'title')
or helpers.get_xml_attr(session.getElementsByTagName('Player')[0], 'product'),
'platform': helpers.get_xml_attr(session.getElementsByTagName('Player')[0], 'platform'),
'machine_id': machine_id,
'state': helpers.get_xml_attr(session.getElementsByTagName('Player')[0], 'state'),
@@ -1385,7 +1388,8 @@ class PmsConnect(object):
'friendly_name': user_details['friendly_name'],
'user_thumb': user_details['user_thumb'],
'ip_address': helpers.get_xml_attr(session.getElementsByTagName('Player')[0], 'address').split('::ffff:')[-1],
'player': helpers.get_xml_attr(session.getElementsByTagName('Player')[0], 'title'),
'player': helpers.get_xml_attr(session.getElementsByTagName('Player')[0], 'title')
or helpers.get_xml_attr(session.getElementsByTagName('Player')[0], 'product'),
'platform': helpers.get_xml_attr(session.getElementsByTagName('Player')[0], 'platform'),
'machine_id': machine_id,
'state': helpers.get_xml_attr(session.getElementsByTagName('Player')[0], 'state'),
@@ -1491,7 +1495,8 @@ class PmsConnect(object):
'friendly_name': user_details['friendly_name'],
'user_thumb': user_details['user_thumb'],
'ip_address': helpers.get_xml_attr(session.getElementsByTagName('Player')[0], 'address').split('::ffff:')[-1],
'player': helpers.get_xml_attr(session.getElementsByTagName('Player')[0], 'title'),
'player': helpers.get_xml_attr(session.getElementsByTagName('Player')[0], 'title')
or helpers.get_xml_attr(session.getElementsByTagName('Player')[0], 'product'),
'platform': helpers.get_xml_attr(session.getElementsByTagName('Player')[0], 'platform'),
'machine_id': machine_id,
'state': helpers.get_xml_attr(session.getElementsByTagName('Player')[0], 'state'),

View File

@@ -1,2 +1,2 @@
PLEXPY_VERSION = "master"
PLEXPY_RELEASE_VERSION = "1.4.23"
PLEXPY_RELEASE_VERSION = "1.4.24"