mirror of
https://github.com/jellyfin/jellyfin-kodi.git
synced 2025-10-13 12:22:04 +00:00
Retrieves video version item type through a query for setting default values, enhancing flexibility and reducing hardcoding. Replaces static item type in video version insertion with dynamic retrieval, improving maintainability.
173 lines
5.1 KiB
Python
173 lines
5.1 KiB
Python
# -*- coding: utf-8 -*-
|
|
from __future__ import division, absolute_import, print_function, unicode_literals
|
|
|
|
##################################################################################################
|
|
|
|
from ...helper import LazyLogger
|
|
|
|
from .kodi import Kodi
|
|
from . import queries as QU
|
|
|
|
##################################################################################################
|
|
|
|
LOG = LazyLogger(__name__)
|
|
|
|
##################################################################################################
|
|
|
|
|
|
class Movies(Kodi):
|
|
|
|
def __init__(self, cursor):
|
|
|
|
self.cursor = cursor
|
|
Kodi.__init__(self)
|
|
self.itemtype = self.cursor.execute(QU.get_videoversion_itemtype, [40400])
|
|
|
|
def create_entry_unique_id(self):
|
|
self.cursor.execute(QU.create_unique_id)
|
|
|
|
return self.cursor.fetchone()[0] + 1
|
|
|
|
def create_entry_rating(self):
|
|
self.cursor.execute(QU.create_rating)
|
|
|
|
return self.cursor.fetchone()[0] + 1
|
|
|
|
def create_entry(self):
|
|
self.cursor.execute(QU.create_movie)
|
|
|
|
return self.cursor.fetchone()[0] + 1
|
|
|
|
def get(self, *args):
|
|
|
|
try:
|
|
self.cursor.execute(QU.get_movie, args)
|
|
return self.cursor.fetchone()[0]
|
|
except TypeError:
|
|
return
|
|
|
|
def add(self, *args):
|
|
self.cursor.execute(QU.add_movie, args)
|
|
|
|
def add_videoversion(self, *args):
|
|
self.cursor.execute(QU.check_video_version)
|
|
if self.cursor.fetchone()[0] == 1:
|
|
self.cursor.execute(QU.add_video_version, args)
|
|
|
|
def update(self, *args):
|
|
self.cursor.execute(QU.update_movie, args)
|
|
|
|
def delete(self, kodi_id, file_id):
|
|
|
|
self.cursor.execute(QU.delete_movie, (kodi_id,))
|
|
self.cursor.execute(QU.delete_file, (file_id,))
|
|
self.cursor.execute(QU.check_video_version)
|
|
if self.cursor.fetchone()[0] == 1:
|
|
self.cursor.execute(QU.delete_video_version, (file_id,))
|
|
|
|
def get_rating_id(self, *args):
|
|
|
|
try:
|
|
self.cursor.execute(QU.get_rating, args)
|
|
|
|
return self.cursor.fetchone()[0]
|
|
except TypeError:
|
|
return None
|
|
|
|
def add_ratings(self, *args):
|
|
"""Add ratings, rating type and votes."""
|
|
self.cursor.execute(QU.add_rating, args)
|
|
|
|
def update_ratings(self, *args):
|
|
"""Update rating by rating_id."""
|
|
self.cursor.execute(QU.update_rating, args)
|
|
|
|
def get_unique_id(self, *args):
|
|
|
|
try:
|
|
self.cursor.execute(QU.get_unique_id, args)
|
|
|
|
return self.cursor.fetchone()[0]
|
|
except TypeError:
|
|
return
|
|
|
|
def add_unique_id(self, *args):
|
|
"""Add the provider id, imdb, tvdb."""
|
|
self.cursor.execute(QU.add_unique_id, args)
|
|
|
|
def update_unique_id(self, *args):
|
|
"""Update the provider id, imdb, tvdb."""
|
|
self.cursor.execute(QU.update_unique_id, args)
|
|
|
|
def add_countries(self, countries, *args):
|
|
|
|
for country in countries:
|
|
self.cursor.execute(QU.update_country, (self.get_country(country),) + args)
|
|
|
|
def add_country(self, *args):
|
|
self.cursor.execute(QU.add_country, args)
|
|
return self.cursor.lastrowid
|
|
|
|
def get_country(self, *args):
|
|
|
|
try:
|
|
self.cursor.execute(QU.get_country, args)
|
|
|
|
return self.cursor.fetchone()[0]
|
|
except TypeError:
|
|
return self.add_country(*args)
|
|
|
|
def add_boxset(self, *args):
|
|
self.cursor.execute(QU.add_set, args)
|
|
return self.cursor.lastrowid
|
|
|
|
def update_boxset(self, *args):
|
|
self.cursor.execute(QU.update_set, args)
|
|
|
|
def set_boxset(self, *args):
|
|
self.cursor.execute(QU.update_movie_set, args)
|
|
|
|
def remove_from_boxset(self, *args):
|
|
self.cursor.execute(QU.delete_movie_set, args)
|
|
|
|
def delete_boxset(self, *args):
|
|
self.cursor.execute(QU.delete_set, args)
|
|
|
|
def migrations(self):
|
|
"""
|
|
Used to trigger required database migrations for new versions
|
|
"""
|
|
self.cursor.execute(QU.get_version)
|
|
version_id = self.cursor.fetchone()[0]
|
|
changes = False
|
|
|
|
# Will run every time Kodi starts, but will be fast enough on
|
|
# subsequent runs to not be a meaningful delay
|
|
if version_id >= 131:
|
|
changes = self.omega_migration()
|
|
|
|
return changes
|
|
|
|
def omega_migration(self):
|
|
"""
|
|
Adds a video version for all existing movies
|
|
|
|
For Omega: video_version_id = 0
|
|
For Piers: video_version_id = 1
|
|
|
|
Migration from Nexus to Omega adds video version with id 0
|
|
Migration from Nexus to Peirs adds video version with id 1
|
|
Migration from Omega to Piers this does nothing and is handled by kodi itself
|
|
"""
|
|
LOG.info("Starting migration for Omega database changes")
|
|
# Tracks if this migration made any changes
|
|
changes = False
|
|
self.cursor.execute(QU.get_missing_versions)
|
|
|
|
# Sets all existing movies without a version to standard version
|
|
for entry in self.cursor.fetchall():
|
|
self.add_videoversion(entry[0], entry[1], "movie", self.itemtype, 40400)
|
|
changes = True
|
|
|
|
LOG.info("Omega database migration is complete")
|
|
return changes
|