mirror of
https://github.com/jellyfin/jellyfin-kodi.git
synced 2024-12-27 19:26:11 +00:00
165 lines
4.8 KiB
Python
165 lines
4.8 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 version_id >= 131:
|
|
changes = self.omega_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
|