diff --git a/plexpy/activity_handler.py b/plexpy/activity_handler.py index c8c2adda..47e055bf 100644 --- a/plexpy/activity_handler.py +++ b/plexpy/activity_handler.py @@ -112,7 +112,7 @@ class ActivityHandler(object): ap.set_session_state(session_key=self.get_session_key(), state=self.timeline['state'], view_offset=self.timeline['viewOffset'], - stopped=int(time.time())) + stopped=helpers.timestamp()) def on_start(self): if self.is_valid_session(): @@ -188,7 +188,7 @@ class ActivityHandler(object): # Set the session last_paused timestamp ap = activity_processor.ActivityProcessor() - ap.set_session_last_paused(session_key=self.get_session_key(), timestamp=int(time.time())) + ap.set_session_last_paused(session_key=self.get_session_key(), timestamp=helpers.timestamp()) # Update the session state and viewOffset self.update_db_session() @@ -252,7 +252,7 @@ class ActivityHandler(object): if buffer_last_triggered: logger.debug("Tautulli ActivityHandler :: Session %s buffer last triggered at %s." % (self.get_session_key(), buffer_last_triggered)) - time_since_last_trigger = int(time.time()) - int(buffer_last_triggered) + time_since_last_trigger = helpers.timestamp() - int(buffer_last_triggered) if current_buffer_count >= plexpy.CONFIG.BUFFER_THRESHOLD and time_since_last_trigger == 0 or \ time_since_last_trigger >= plexpy.CONFIG.BUFFER_WAIT: @@ -295,7 +295,7 @@ class ActivityHandler(object): this_guid = last_guid # Check guid for live TV metadata every 60 seconds - if db_session['live'] and int(time.time()) - db_session['stopped'] > 60: + if db_session['live'] and helpers.timestamp() - db_session['stopped'] > 60: metadata = self.get_metadata(skip_cache=True) if metadata: this_guid = metadata['guid'] @@ -309,7 +309,7 @@ class ActivityHandler(object): if this_state == 'playing': # Update the session in our temp session table # if the last set temporary stopped time exceeds 60 seconds - if int(time.time()) - db_session['stopped'] > 60: + if helpers.timestamp() - db_session['stopped'] > 60: self.update_db_session() # Start our state checks @@ -598,7 +598,7 @@ def on_created(rating_key, **kwargs): if metadata: notify = True - # now = int(time.time()) + # now = helpers.timestamp() # # if helpers.cast_to_int(metadata['added_at']) < now - 86400: # Updated more than 24 hours ago # logger.debug("Tautulli TimelineHandler :: Library item %s added more than 24 hours ago. Not notifying." diff --git a/plexpy/activity_pinger.py b/plexpy/activity_pinger.py index 1900e3a8..1bc0b947 100644 --- a/plexpy/activity_pinger.py +++ b/plexpy/activity_pinger.py @@ -129,7 +129,7 @@ def check_active_sessions(ws_request=False): else: # Subsequent buffer notifications after wait time - if int(time.time()) > buffer_values[0]['buffer_last_triggered'] + \ + if helpers.timestamp() > buffer_values[0]['buffer_last_triggered'] + \ plexpy.CONFIG.BUFFER_WAIT: logger.info("Tautulli Monitor :: User '%s' has triggered multiple buffer warnings." % stream['user']) @@ -165,7 +165,7 @@ def check_active_sessions(ws_request=False): if not stream['stopped']: # Set the stream stop time - stream['stopped'] = int(time.time()) + stream['stopped'] = helpers.timestamp() monitor_db.action('UPDATE sessions SET stopped = ?, state = ? ' 'WHERE session_key = ? AND rating_key = ?', [stream['stopped'], 'stopped', stream['session_key'], stream['rating_key']]) @@ -221,7 +221,7 @@ def check_recently_added(): with monitor_lock: # add delay to allow for metadata processing delay = plexpy.CONFIG.NOTIFY_RECENTLY_ADDED_DELAY - time_threshold = int(time.time()) - delay + time_threshold = helpers.timestamp() - delay time_interval = plexpy.CONFIG.MONITORING_INTERVAL pms_connect = pmsconnect.PmsConnect() diff --git a/plexpy/activity_processor.py b/plexpy/activity_processor.py index c245aa3d..d80f8bc7 100644 --- a/plexpy/activity_processor.py +++ b/plexpy/activity_processor.py @@ -143,7 +143,7 @@ class ActivityProcessor(object): 'channel_call_sign': session.get('channel_call_sign', ''), 'channel_identifier': session.get('channel_identifier', ''), 'channel_thumb': session.get('channel_thumb', ''), - 'stopped': int(time.time()) + 'stopped': helpers.timestamp() } keys = {'session_key': session.get('session_key', ''), @@ -157,7 +157,7 @@ class ActivityProcessor(object): plexpy.NOTIFY_QUEUE.put({'stream_data': values.copy(), 'notify_action': 'on_play'}) # If it's our first write then time stamp it. - started = int(time.time()) + started = helpers.timestamp() timestamp = {'started': started} self.db.upsert('sessions', timestamp, keys) @@ -200,11 +200,11 @@ class ActivityProcessor(object): if str(session['stopped']).isdigit(): stopped = int(session['stopped']) else: - stopped = int(time.time()) + stopped = helpers.timestamp() elif session['stopped']: stopped = int(session['stopped']) else: - stopped = int(time.time()) + stopped = helpers.timestamp() self.set_session_state(session_key=session['session_key'], state='stopped', stopped=stopped) @@ -575,7 +575,7 @@ class ActivityProcessor(object): paused_counter = None for session in result: if session['last_paused']: - paused_offset = int(time.time()) - int(session['last_paused']) + paused_offset = helpers.timestamp() - int(session['last_paused']) if session['paused_counter']: paused_counter = int(session['paused_counter']) + int(paused_offset) else: @@ -624,7 +624,7 @@ class ActivityProcessor(object): return None def set_temp_stopped(self): - stopped_time = int(time.time()) + stopped_time = helpers.timestamp() self.db.action('UPDATE sessions SET stopped = ?', [stopped_time]) def increment_write_attempts(self, session_key=None): diff --git a/plexpy/helpers.py b/plexpy/helpers.py index 819632ac..ee1ab5e6 100644 --- a/plexpy/helpers.py +++ b/plexpy/helpers.py @@ -223,6 +223,10 @@ def convert_seconds_to_minutes(s): return 0 +def timestamp(): + return int(time.time()) + + def today(): today = datetime.date.today() yyyymmdd = datetime.date.isoformat(today) @@ -462,7 +466,7 @@ def create_https_certificates(ssl_cert, ssl_key): from OpenSSL import crypto from certgen import createKeyPair, createSelfSignedCertificate, TYPE_RSA - serial = int(time.time()) + serial = timestamp() domains = ['DNS:' + d.strip() for d in plexpy.CONFIG.HTTPS_DOMAIN.split(',') if d] ips = ['IP:' + d.strip() for d in plexpy.CONFIG.HTTPS_IP.split(',') if d] altNames = ','.join(domains + ips) @@ -625,7 +629,7 @@ def is_valid_ip(address): def update_geoip_db(): if plexpy.CONFIG.GEOIP_DB_INSTALLED: logger.info(u"Tautulli Helpers :: Checking for GeoLite2 database updates.") - now = int(time.time()) + now = timestamp() if now - plexpy.CONFIG.GEOIP_DB_INSTALLED >= plexpy.CONFIG.GEOIP_DB_UPDATE_DAYS * 24 * 60 * 60: return install_geoip_db(update=True) logger.info(u"Tautulli Helpers :: GeoLite2 database already updated within the last %s days." @@ -712,7 +716,7 @@ def install_geoip_db(update=False): logger.warn("Tautulli Helpers :: Failed to remove temporary GeoLite2 gzip file: %s" % e) plexpy.CONFIG.__setattr__('GEOIP_DB', geolite2_db_path) - plexpy.CONFIG.__setattr__('GEOIP_DB_INSTALLED', int(time.time())) + plexpy.CONFIG.__setattr__('GEOIP_DB_INSTALLED', timestamp()) plexpy.CONFIG.write() logger.debug(u"Tautulli Helpers :: GeoLite2 database installed successfully.") @@ -960,7 +964,7 @@ def cloudinary_transform(rating_key=None, width=1000, height=1500, opacity=100, img_options = {'format': img_format, 'fetch_format': 'auto', 'quality': 'auto', - 'version': int(time.time()), + 'version': timestamp(), 'secure': True} if width != 1000: diff --git a/plexpy/mobile_app.py b/plexpy/mobile_app.py index 5d111d92..aef6ab61 100644 --- a/plexpy/mobile_app.py +++ b/plexpy/mobile_app.py @@ -23,9 +23,11 @@ import time import plexpy if plexpy.PYTHON_VERSION < 3: import database + import helpers import logger else: from plexpy import database + from plexpy import helpers from plexpy import logger @@ -131,7 +133,7 @@ def delete_mobile_device(mobile_device_id=None): def set_last_seen(device_token=None): db = database.MonitorDatabase() - last_seen = int(time.time()) + last_seen = helpers.timestamp() try: result = db.action('UPDATE mobile_devices SET last_seen = ? WHERE device_token = ?', diff --git a/plexpy/newsletter_handler.py b/plexpy/newsletter_handler.py index ae8b48e2..a17f5813 100644 --- a/plexpy/newsletter_handler.py +++ b/plexpy/newsletter_handler.py @@ -26,10 +26,12 @@ import email.utils import plexpy if plexpy.PYTHON_VERSION < 3: import database + import helpers import logger import newsletters else: from plexpy import database + from plexpy import helpers from plexpy import logger from plexpy import newsletters @@ -144,7 +146,7 @@ def set_notify_state(newsletter, notify_action, subject, body, message, filename if newsletter and notify_action: db = database.MonitorDatabase() - keys = {'timestamp': int(time.time()), + keys = {'timestamp': helpers.timestamp(), 'uuid': newsletter_uuid} values = {'newsletter_id': newsletter['id'], diff --git a/plexpy/notification_handler.py b/plexpy/notification_handler.py index 8f8ba552..48a3c465 100644 --- a/plexpy/notification_handler.py +++ b/plexpy/notification_handler.py @@ -466,7 +466,7 @@ def set_notify_state(notifier, notify_action, subject='', body='', script_args=' script_args = json.dumps(script_args) if script_args else None - keys = {'timestamp': int(time.time()), + keys = {'timestamp': helpers.timestamp(), 'session_key': session.get('session_key', None), 'rating_key': session.get('rating_key', None), 'user_id': session.get('user_id', None), @@ -826,7 +826,7 @@ def build_media_notify_params(notify_action=None, session=None, timeline=None, m 'week_number': now_iso[1], # Keep for backwards compatibility 'datestamp': now.format(date_format), 'timestamp': now.format(time_format), - 'unixtime': int(time.time()), + 'unixtime': helpers.timestamp(), 'utctime': helpers.utc_now_iso(), # Stream parameters 'streams': stream_count, @@ -1078,7 +1078,7 @@ def build_server_notify_params(notify_action=None, **kwargs): 'week_number': now_iso[1], # Keep for backwards compatibility 'datestamp': now.format(date_format), 'timestamp': now.format(time_format), - 'unixtime': int(time.time()), + 'unixtime': helpers.timestamp(), 'utctime': helpers.utc_now_iso(), # Plex Media Server update parameters 'update_version': pms_download_info['version'], diff --git a/plexpy/notifiers.py b/plexpy/notifiers.py index 88233b1e..20f8a668 100644 --- a/plexpy/notifiers.py +++ b/plexpy/notifiers.py @@ -2553,7 +2553,7 @@ class PUSHOVER(Notifier): 'sound': self.config['sound'], 'html': self.config['html_support'], 'priority': self.config['priority'], - 'timestamp': int(time.time())} + 'timestamp': helpers.timestamp()} if self.config['incl_subject']: data['title'] = subject diff --git a/plexpy/pmsconnect.py b/plexpy/pmsconnect.py index 952705d0..ec8641dd 100644 --- a/plexpy/pmsconnect.py +++ b/plexpy/pmsconnect.py @@ -615,7 +615,7 @@ class PmsConnect(object): if metadata: _cache_time = metadata.pop('_cache_time', 0) # Return cached metadata if less than cache_seconds ago - if return_cache or int(time.time()) - _cache_time <= plexpy.CONFIG.METADATA_CACHE_SECONDS: + if return_cache or helpers.timestamp() - _cache_time <= plexpy.CONFIG.METADATA_CACHE_SECONDS: return metadata if rating_key: @@ -1405,7 +1405,7 @@ class PmsConnect(object): if metadata: if cache_key: - metadata['_cache_time'] = int(time.time()) + metadata['_cache_time'] = helpers.timestamp() out_file_folder = os.path.join(plexpy.CONFIG.CACHE_DIR, 'session_metadata') out_file_path = os.path.join(out_file_folder, 'metadata-sessionKey-%s.json' % cache_key) @@ -2749,7 +2749,7 @@ class PmsConnect(object): web_img = img.startswith('http') if refresh and not web_img: - img = '{}/{}'.format(img.rstrip('/'), int(time.time())) + img = '{}/{}'.format(img.rstrip('/'), helpers.timestamp()) if web_img: params = {'url': '%s' % img} diff --git a/plexpy/users.py b/plexpy/users.py index bf117455..f451aa4e 100644 --- a/plexpy/users.py +++ b/plexpy/users.py @@ -825,7 +825,7 @@ class Users(object): if user_id is None or str(user_id).isdigit(): monitor_db = database.MonitorDatabase() - keys = {'timestamp': int(time.time()), + keys = {'timestamp': helpers.timestamp(), 'user_id': user_id} values = {'user': user,