Update code
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import sqlite3
|
||||
from .utils import convert_uid, format_time
|
||||
|
||||
|
||||
class PlaybackReportingDb:
|
||||
@@ -19,15 +20,38 @@ class PlaybackReportingDb:
|
||||
self._closed = True
|
||||
|
||||
def get_activitys(self, offset: int = 0, limit: int = 100,
|
||||
itemType: str = None):
|
||||
itemType: str = None, userId: str = None,
|
||||
startTime: float = None, endTime: float = None):
|
||||
where_sqls = []
|
||||
where_sql = ''
|
||||
args = []
|
||||
if itemType is not None:
|
||||
where_sqls.append('ItemType = ?')
|
||||
args.append(itemType)
|
||||
if userId is not None:
|
||||
where_sqls.append('UserId = ?')
|
||||
args.append(userId)
|
||||
if startTime is not None:
|
||||
where_sqls.append('DateCreated >= ?')
|
||||
args.append(format_time(startTime))
|
||||
if endTime is not None:
|
||||
where_sqls.append('DateCreated <= ?')
|
||||
args.append(format_time(endTime))
|
||||
if len(where_sqls):
|
||||
where_sql = ' WHERE ' + " AND ".join(where_sqls)
|
||||
args.append(limit)
|
||||
args.append(offset)
|
||||
cur = self._db.execute(f"SELECT ROWID, * FROM PlaybackActivity{where_sql} LIMIT ? OFFSET ?;", args) # noqa: E501
|
||||
cur.row_factory = sqlite3.Row
|
||||
return [dict(i) for i in cur.fetchall()]
|
||||
|
||||
def get_users(self, itemType: str = None):
|
||||
where_sql = ''
|
||||
args = []
|
||||
if itemType is not None:
|
||||
where_sql = ' WHERE ItemType = ?'
|
||||
args.append(itemType)
|
||||
args.append(limit)
|
||||
args.append(offset)
|
||||
cur = self._db.execute(f"SELECT * FROM PlaybackActivity{where_sql} LIMIT ? OFFSET ?;", args) # noqa: E501
|
||||
cur = self._db.execute(f"SELECT UserId, min(DateCreated) AS MinDate, max(DateCreated) AS MaxDate FROM PlaybackActivity{where_sql} GROUP BY UserId;", args) # noqa: E501
|
||||
cur.row_factory = sqlite3.Row
|
||||
return [dict(i) for i in cur.fetchall()]
|
||||
|
||||
@@ -72,3 +96,29 @@ class LibraryDb:
|
||||
cur = self._db.execute(f"SELECT * FROM TypedBaseItems WHERE type = ?{where_sql};", args) # noqa: E501
|
||||
cur.row_factory = sqlite3.Row
|
||||
return [dict(i) for i in cur.fetchall()]
|
||||
|
||||
|
||||
class JellyfinDb:
|
||||
def __init__(self, fn: str):
|
||||
self._db = sqlite3.connect(fn)
|
||||
self._closed = False
|
||||
|
||||
def __enter__(self):
|
||||
return self
|
||||
|
||||
def __exit__(self, tp, val, trace):
|
||||
self.close()
|
||||
|
||||
def close(self):
|
||||
if self._closed:
|
||||
return
|
||||
self._db.close()
|
||||
self._closed = True
|
||||
|
||||
def get_user(self, userId: str):
|
||||
if len(userId) == 32:
|
||||
userId = convert_uid(userId)
|
||||
cur = self._db.execute("SELECT * FROM Users WHERE Id = ?;", [userId])
|
||||
cur.row_factory = sqlite3.Row
|
||||
re = cur.fetchone()
|
||||
return dict(re) if re is not None else None
|
||||
|
||||
Reference in New Issue
Block a user