mirror of
https://github.com/jellyfin/jellyfin-kodi.git
synced 2025-10-09 10:22:05 +00:00
Introduces a new migration step for Kodi versions 134 and above by implementing the piers_migration method. This ensures all existing movies without a version receive a standard version, enhancing database consistency. Omega migration logic is now limited to versions between 131 and 133. No additional context provided.
185 lines
5.4 KiB
Python
185 lines
5.4 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)
|
|
|
|
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 131 <= version_id < 134:
|
|
changes = self.omega_migration()
|
|
|
|
if version_id >= 134:
|
|
changes = self.piers_migration()
|
|
|
|
return changes
|
|
|
|
def omega_migration(self):
|
|
"""
|
|
Adds a video version for all existing movies
|
|
"""
|
|
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", "0", 40400)
|
|
changes = True
|
|
|
|
LOG.info("Omega database migration is complete")
|
|
return changes
|
|
|
|
def piers_migration(self):
|
|
"""
|
|
Adds a video version for all existing movies
|
|
"""
|
|
LOG.info("Starting migration for Piers 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", "1", 40400)
|
|
changes = True
|
|
|
|
LOG.info("Piers database migration is complete")
|
|
return changes
|