diff --git a/data/interfaces/default/config.html b/data/interfaces/default/config.html index 92a92e14..8c90cfff 100644 --- a/data/interfaces/default/config.html +++ b/data/interfaces/default/config.html @@ -184,9 +184,10 @@

Full path and file name of your PlexWatch database.

- Global History -

Enable global history grouping.

+ Enable Grouping +

Show grouped history data. More info.

+ diff --git a/data/interfaces/default/graphs.html b/data/interfaces/default/graphs.html index 1ffae824..e3a939a5 100644 --- a/data/interfaces/default/graphs.html +++ b/data/interfaces/default/graphs.html @@ -85,6 +85,7 @@ from plexpy import helpers type: 'get', data: { time_range: '30' }, dataType: "json", + cache: false, success: function(data) { var dateArray = []; for (var i = 0; i < data.categories.length; i++) { @@ -102,6 +103,7 @@ from plexpy import helpers type: 'get', data: { time_range: '30' }, dataType: "json", + cache: false, success: function(data) { hc_plays_by_dayofweek_options.xAxis.categories = data.categories; hc_plays_by_dayofweek_options.series = data.series; @@ -114,6 +116,7 @@ from plexpy import helpers type: 'get', data: { time_range: '30' }, dataType: "json", + cache: false, success: function(data) { hc_plays_by_hourofday_options.xAxis.categories = data.categories; hc_plays_by_hourofday_options.series = data.series; diff --git a/data/interfaces/default/js/graphs/plays_by_day.js b/data/interfaces/default/js/graphs/plays_by_day.js index f80140fc..10474ab5 100644 --- a/data/interfaces/default/js/graphs/plays_by_day.js +++ b/data/interfaces/default/js/graphs/plays_by_day.js @@ -40,7 +40,7 @@ var hc_plays_by_day_options = { }, tooltip: { formatter: function() { - var monthStr = moment(this.x).format("MMM D"); + var monthStr = moment(this.x).format("ddd MMM D"); var s = ''+ monthStr +''; $.each(this.points, function(i, point) { diff --git a/plexpy/__init__.py b/plexpy/__init__.py index 21ab0148..15c2e351 100644 --- a/plexpy/__init__.py +++ b/plexpy/__init__.py @@ -298,7 +298,7 @@ def sig_handler(signum=None, frame=None): def dbcheck(): - conn = sqlite3.connect(DB_FILE) + conn = sqlite3.connect(plexpy.CONFIG.PLEXWATCH_DATABASE) c = conn.cursor() conn.commit() c.close() diff --git a/plexpy/datatables.py b/plexpy/datatables.py index a8812df5..f90103f3 100644 --- a/plexpy/datatables.py +++ b/plexpy/datatables.py @@ -99,10 +99,9 @@ class DataTables(object): if int(order_column) == parameter['index']: if parameter['data'] in column_data['column_named'] and parameter['orderable'] == 'true': order = 'ORDER BY %s COLLATE NOCASE %s' % (parameter['data'], order_dir) - logger.debug(u"order string %s " % order) else: order = 'ORDER BY %s COLLATE NOCASE %s' % (column_data['column_named'][order_column], order_dir) - logger.debug(u"order string (NO param received) %s " % order) + return order @staticmethod @@ -115,11 +114,9 @@ class DataTables(object): for parameter in parameters: if column in parameter['data']: if parameter['searchable'] == 'true': - logger.debug(u"Column %s is searchable." % column) where += column + ' LIKE "%' + search_value + '%" OR ' search_skip = True else: - logger.debug(u"Column %s is NOT searchable." % column) search_skip = True if not search_skip: diff --git a/plexpy/db.py b/plexpy/db.py index 86c03ae7..34fcb2f1 100644 --- a/plexpy/db.py +++ b/plexpy/db.py @@ -100,20 +100,6 @@ class DBConnection: return sqlResult - def get_history_table_name(self): - - if plexpy.CONFIG.GROUPING_GLOBAL_HISTORY: - return "grouped" - else: - return "processed" - - def get_user_table_name(self): - - if plexpy.CONFIG.GROUPING_USER_HISTORY: - return "grouped" - else: - return "processed" - def upsert(self, tableName, valueDict, keyDict): changesBefore = self.connection.total_changes diff --git a/plexpy/plexwatch.py b/plexpy/plexwatch.py index af67bbce..b87ea4cb 100644 --- a/plexpy/plexwatch.py +++ b/plexpy/plexwatch.py @@ -13,7 +13,7 @@ # You should have received a copy of the GNU General Public License # along with PlexPy. If not, see . -from plexpy import logger, helpers, request, datatables, config, db +from plexpy import logger, helpers, datatables, db from xml.dom import minidom import sys if sys.version_info < (2, 7): @@ -22,7 +22,6 @@ else: from collections import defaultdict, Counter import datetime import plexpy -import json class PlexWatch(object): @@ -41,14 +40,6 @@ class PlexWatch(object): else: return "processed" - @staticmethod - def get_user_table_name(): - - if plexpy.CONFIG.GROUPING_USER_HISTORY: - return "grouped" - else: - return "processed" - def get_user_list(self, start='', length='', kwargs=None): data_tables = datatables.DataTables() @@ -78,7 +69,7 @@ class PlexWatch(object): 'ip_address', 'COUNT(title) as plays'] try: - query = data_tables.ssp_query(table_name=self.get_user_table_name(), + query = data_tables.ssp_query(table_name=self.get_history_table_name(), columns=columns, start=start, length=length, @@ -150,7 +141,7 @@ class PlexWatch(object): ] try: - query = data_tables.ssp_query(table_name=self.get_user_table_name(), + query = data_tables.ssp_query(table_name=self.get_history_table_name(), columns=columns, start=start, length=length, @@ -408,11 +399,11 @@ class PlexWatch(object): try: if user: query = 'SELECT time, user, xml FROM %s WHERE user = "%s" ORDER BY time DESC LIMIT %s' % \ - (self.get_user_table_name(), user, limit) + (self.get_history_table_name(), user, limit) xml = myDB.select(query) else: query = 'SELECT time, user, xml FROM %s ORDER BY time DESC LIMIT %s' % \ - (self.get_user_table_name(), limit) + (self.get_history_table_name(), limit) xml = myDB.select(query) except: logger.warn("Unable to open PlexWatch database.") @@ -467,7 +458,7 @@ class PlexWatch(object): try: query = 'SELECT (SUM(stopped - time) - SUM(CASE WHEN paused_counter is null THEN 0 ELSE paused_counter END)) as total_time, ' \ 'COUNT(id) AS total_plays ' \ - 'FROM %s %s' % (self.get_user_table_name(), where) + 'FROM %s %s' % (self.get_history_table_name(), where) result = myDB.select(query) except: logger.warn("Unable to open PlexWatch database.") @@ -501,7 +492,7 @@ class PlexWatch(object): 'FROM %s ' \ 'WHERE user = "%s" ' \ 'GROUP BY platform ' \ - 'ORDER BY platform_count DESC' % (self.get_user_table_name(), user) + 'ORDER BY platform_count DESC' % (self.get_history_table_name(), user) result = myDB.select(query) except: logger.warn("Unable to open PlexWatch database.") @@ -542,7 +533,7 @@ class PlexWatch(object): query = 'SELECT xml ' \ 'FROM %s ' \ 'WHERE user = "%s" ' \ - 'ORDER BY id DESC LIMIT 1' % (self.get_user_table_name(), user) + 'ORDER BY id DESC LIMIT 1' % (self.get_history_table_name(), user) result = myDB.select_single(query) except: logger.warn("Unable to open PlexWatch database.") @@ -588,7 +579,7 @@ class PlexWatch(object): 'WHERE datetime(stopped, "unixepoch", "localtime") >= datetime("now", "-%s days", "localtime") ' \ 'AND episode != "" ' \ 'GROUP BY orig_title ' \ - 'ORDER BY total_plays DESC LIMIT 10' % (self.get_user_table_name(), time_range) + 'ORDER BY total_plays DESC LIMIT 10' % (self.get_history_table_name(), time_range) result = myDB.select(query) except: logger.warn("Unable to open PlexWatch database.") @@ -631,7 +622,7 @@ class PlexWatch(object): 'WHERE datetime(stopped, "unixepoch", "localtime") >= datetime("now", "-%s days", "localtime") ' \ 'AND episode != "" ' \ 'GROUP BY orig_title ' \ - 'ORDER BY users_watched DESC, total_plays DESC LIMIT 10' % (self.get_user_table_name(), time_range) + 'ORDER BY users_watched DESC, total_plays DESC LIMIT 10' % (self.get_history_table_name(), time_range) result = myDB.select(query) except: logger.warn("Unable to open PlexWatch database.") @@ -673,7 +664,7 @@ class PlexWatch(object): 'FROM %s ' \ 'WHERE datetime(stopped, "unixepoch", "localtime") >= datetime("now", "-%s days", "localtime") ' \ 'GROUP BY user ' \ - 'ORDER BY total_plays DESC LIMIT 10' % (self.get_user_table_name(), time_range) + 'ORDER BY total_plays DESC LIMIT 10' % (self.get_history_table_name(), time_range) result = myDB.select(query) except: logger.warn("Unable to open PlexWatch database.") @@ -699,7 +690,7 @@ class PlexWatch(object): 'FROM %s ' \ 'WHERE datetime(stopped, "unixepoch", "localtime") >= datetime("now", "-%s days", "localtime") ' \ 'GROUP BY platform ' \ - 'ORDER BY total_plays DESC' % (self.get_user_table_name(), time_range) + 'ORDER BY total_plays DESC' % (self.get_history_table_name(), time_range) result = myDB.select(query) except: logger.warn("Unable to open PlexWatch database.") @@ -750,7 +741,7 @@ class PlexWatch(object): 'FROM %s ' \ 'WHERE datetime(stopped, "unixepoch", "localtime") >= datetime("now", "-%s days", "localtime") ' \ 'GROUP BY date_played ' \ - 'ORDER BY time ASC' % (self.get_user_table_name(), time_range) + 'ORDER BY time ASC' % (self.get_history_table_name(), time_range) result = myDB.select(query) except: @@ -808,7 +799,7 @@ class PlexWatch(object): 'when 5 then "Friday" ' \ 'else "Saturday" end as dayofweek, ' \ 'COUNT(id) as total_plays ' \ - 'from ' + self.get_user_table_name() + ' ' + \ + 'from ' + self.get_history_table_name() + ' ' + \ 'WHERE datetime(stopped, "unixepoch", "localtime") >= ' \ 'datetime("now", "-' + time_range + ' days", "localtime") ' \ 'GROUP BY dayofweek ' \ @@ -849,7 +840,7 @@ class PlexWatch(object): query = 'select strftime("%H", datetime(time, "unixepoch", "localtime")) as hourofday, ' \ 'COUNT(id) ' \ - 'FROM ' + self.get_user_table_name() + ' ' + \ + 'FROM ' + self.get_history_table_name() + ' ' + \ 'WHERE datetime(stopped, "unixepoch", "localtime") >= ' \ 'datetime("now", "-' + time_range + ' days", "localtime") ' \ 'GROUP BY hourofday ' \ diff --git a/plexpy/pmsconnect.py b/plexpy/pmsconnect.py index 523268ea..c065430b 100644 --- a/plexpy/pmsconnect.py +++ b/plexpy/pmsconnect.py @@ -13,23 +13,13 @@ # You should have received a copy of the GNU General Public License # along with PlexPy. If not, see . -from plexpy import logger, helpers, common, request +from plexpy import logger, helpers from xml.dom import minidom from httplib import HTTPSConnection from httplib import HTTPConnection -from urlparse import parse_qsl -from urllib import urlencode -from pynma import pynma -import base64 -import cherrypy -import urllib -import urllib2 import plexpy -import os.path -import subprocess -import json class PmsConnect(object): @@ -291,11 +281,9 @@ class PmsConnect(object): if a.getElementsByTagName('Directory'): metadata_main = a.getElementsByTagName('Directory')[0] metadata_type = self.get_xml_attr(metadata_main, 'type') - logger.debug(u"Metadata type: %s" % metadata_type) elif a.getElementsByTagName('Video'): metadata_main = a.getElementsByTagName('Video')[0] metadata_type = self.get_xml_attr(metadata_main, 'type') - logger.debug(u"Metadata type: %s" % metadata_type) else: logger.debug(u"Metadata failed") @@ -307,22 +295,18 @@ class PmsConnect(object): if metadata_main.getElementsByTagName('Genre'): for genre in metadata_main.getElementsByTagName('Genre'): genres.append(self.get_xml_attr(genre, 'tag')) - logger.debug(u"Metadata genre: %s" % self.get_xml_attr(genre, 'tag')) if metadata_main.getElementsByTagName('Role'): for actor in metadata_main.getElementsByTagName('Role'): actors.append(self.get_xml_attr(actor, 'tag')) - logger.debug(u"Metadata actor: %s" % self.get_xml_attr(actor, 'tag')) if metadata_main.getElementsByTagName('Writer'): for writer in metadata_main.getElementsByTagName('Writer'): writers.append(self.get_xml_attr(writer, 'tag')) - logger.debug(u"Metadata genre: %s" % self.get_xml_attr(writer, 'tag')) if metadata_main.getElementsByTagName('Director'): for director in metadata_main.getElementsByTagName('Director'): directors.append(self.get_xml_attr(director, 'tag')) - logger.debug(u"Metadata actor: %s" % self.get_xml_attr(director, 'tag')) if metadata_type == 'show': metadata = {'type': metadata_type, @@ -386,7 +370,6 @@ class PmsConnect(object): elif metadata_type == 'season': parent_rating_key = self.get_xml_attr(metadata_main, 'parentRatingKey') show_details = self.get_metadata_details(parent_rating_key) - logger.debug(u"show_details = %r" % show_details) metadata = {'type': metadata_type, 'ratingKey': self.get_xml_attr(metadata_main, 'ratingKey'), 'parentTitle': self.get_xml_attr(metadata_main, 'parentTitle'), @@ -447,7 +430,6 @@ class PmsConnect(object): for a in xml_head: if a.getAttribute('size'): if a.getAttribute('size') == '0': - logger.debug(u"No active sessions.") session_list = {'stream_count': '0', 'sessions': [] } @@ -456,14 +438,12 @@ class PmsConnect(object): if a.getElementsByTagName('Track'): session_data = a.getElementsByTagName('Track') session_type = 'track' - logger.debug(u"Track session active.") for session in session_data: session_output = self.get_session_each(session_type, session) session_list.append(session_output) if a.getElementsByTagName('Video'): session_data = a.getElementsByTagName('Video') session_type = 'video' - logger.debug(u"Video session active.") for session in session_data: session_output = self.get_session_each(session_type, session) session_list.append(session_output) diff --git a/plexpy/webserve.py b/plexpy/webserve.py index 4ac81d08..e11b5a5e 100644 --- a/plexpy/webserve.py +++ b/plexpy/webserve.py @@ -13,25 +13,17 @@ # You should have received a copy of the GNU General Public License # along with PlexPy. If not, see . -from plexpy import logger, helpers, notifiers, plextv, pmsconnect, plexwatch -from plexpy.helpers import checked, radio, today, cleanName -from xml.dom import minidom +from plexpy import logger, notifiers, plextv, pmsconnect, plexwatch +from plexpy.helpers import checked, radio from mako.lookup import TemplateLookup from mako import exceptions -from operator import itemgetter - import plexpy -import threading import cherrypy -import urllib2 import hashlib import random -import urllib import json -import time -import sys import os try: @@ -524,7 +516,6 @@ class WebInterface(object): try: pms_connect = pmsconnect.PmsConnect() result = pms_connect.get_image(img, width, height) - logger.debug(u'Image proxy queried. Content type is %s' % result[0]) cherrypy.response.headers['Content-type'] = result[0] return result[1] except: