mirror of
https://github.com/jellyfin/jellyfin-kodi.git
synced 2024-12-26 02:36:10 +00:00
fixes music syncing for kodi 18 while still usable by kodi 17.
Also removes the message in kodi 18 to scan media. tested in kodi 17 and 18.
This commit is contained in:
parent
5f0416d1ce
commit
b515642f62
2 changed files with 91 additions and 13 deletions
|
@ -16,10 +16,11 @@ LOG = logging.getLogger("JELLYFIN."+__name__)
|
||||||
|
|
||||||
class Music(Kodi):
|
class Music(Kodi):
|
||||||
|
|
||||||
|
|
||||||
def __init__(self, cursor):
|
def __init__(self, cursor):
|
||||||
|
|
||||||
self.cursor = cursor
|
self.cursor = cursor
|
||||||
|
self.version_id = self.get_version()
|
||||||
|
self.update_versiontagscan()
|
||||||
Kodi.__init__(self)
|
Kodi.__init__(self)
|
||||||
|
|
||||||
def create_entry(self):
|
def create_entry(self):
|
||||||
|
@ -128,7 +129,10 @@ class Music(Kodi):
|
||||||
self.cursor.execute(QU.get_album, (musicbrainz,))
|
self.cursor.execute(QU.get_album, (musicbrainz,))
|
||||||
album = None
|
album = None
|
||||||
else:
|
else:
|
||||||
self.cursor.execute(QU.get_album_by_name, (name,))
|
if self.version_id < 72:
|
||||||
|
self.cursor.execute(QU.get_album_by_name, (name,))
|
||||||
|
else:
|
||||||
|
self.cursor.execute(QU.get_album_by_name72, (name,))
|
||||||
album = self.cursor.fetchone()
|
album = self.cursor.fetchone()
|
||||||
|
|
||||||
if album[1] and album[1].split(' / ')[0] not in artists.split(' / '):
|
if album[1] and album[1].split(' / ')[0] not in artists.split(' / '):
|
||||||
|
@ -146,41 +150,59 @@ class Music(Kodi):
|
||||||
def add_album(self, album_id, *args):
|
def add_album(self, album_id, *args):
|
||||||
|
|
||||||
album_id = album_id or self.create_entry_album()
|
album_id = album_id or self.create_entry_album()
|
||||||
self.cursor.execute(QU.add_album, (album_id,) + args)
|
if self.version_id < 72:
|
||||||
|
self.cursor.execute(QU.add_album, (album_id,) + args)
|
||||||
|
else:
|
||||||
|
self.cursor.execute(QU.add_album72, (album_id,) + args)
|
||||||
return album_id
|
return album_id
|
||||||
|
|
||||||
def update_album(self, *args):
|
def update_album(self, *args):
|
||||||
self.cursor.execute(QU.update_album, args)
|
if self.version_id < 72:
|
||||||
|
self.cursor.execute(QU.update_album, args)
|
||||||
|
else:
|
||||||
|
self.cursor.execute(QU.update_album72, args)
|
||||||
|
|
||||||
def get_album_artist(self, album_id, artists):
|
def get_album_artist(self, album_id, artists):
|
||||||
|
|
||||||
try:
|
try:
|
||||||
self.cursor.execute(QU.get_album_artist, (album_id,))
|
if self.version_id < 72:
|
||||||
|
self.cursor.execute(QU.get_album_artist, (album_id,))
|
||||||
|
else:
|
||||||
|
self.cursor.execute(QU.get_album_artist72, (album_id,))
|
||||||
curr_artists = self.cursor.fetchone()[0]
|
curr_artists = self.cursor.fetchone()[0]
|
||||||
except TypeError:
|
except TypeError:
|
||||||
return
|
return
|
||||||
|
|
||||||
if curr_artists != artists:
|
if curr_artists != artists:
|
||||||
self.update_album_artist(artists, album_id)
|
self.update_album_artist(artists, album_id)
|
||||||
|
|
||||||
def update_album_artist(self, *args):
|
def update_album_artist(self, *args):
|
||||||
self.cursor.execute(QU.update_album_artist, args)
|
if self.version_id < 72:
|
||||||
|
self.cursor.execute(QU.update_album_artist, args)
|
||||||
|
else:
|
||||||
|
self.cursor.execute(QU.update_album_artist72, args)
|
||||||
|
|
||||||
def add_single(self, *args):
|
def add_single(self, *args):
|
||||||
self.cursor.execute(QU.add_single, args)
|
self.cursor.execute(QU.add_single, args)
|
||||||
|
|
||||||
def add_song(self, *args):
|
def add_song(self, *args):
|
||||||
self.cursor.execute(QU.add_song, args)
|
if self.version_id < 72:
|
||||||
|
self.cursor.execute(QU.add_song, args)
|
||||||
|
else:
|
||||||
|
self.cursor.execute(QU.add_song72, args)
|
||||||
|
|
||||||
def update_song(self, *args):
|
def update_song(self, *args):
|
||||||
self.cursor.execute(QU.update_song, args)
|
if self.version_id < 72:
|
||||||
|
self.cursor.execute(QU.update_song, args)
|
||||||
|
else:
|
||||||
|
self.cursor.execute(QU.update_song72, args)
|
||||||
|
|
||||||
def link_song_artist(self, *args):
|
def link_song_artist(self, *args):
|
||||||
self.cursor.execute(QU.update_song_artist, args)
|
self.cursor.execute(QU.update_song_artist, args)
|
||||||
|
|
||||||
def link_song_album(self, *args):
|
def link_song_album(self, *args):
|
||||||
self.cursor.execute(QU.update_song_album, args)
|
if self.version_id < 72:
|
||||||
|
self.cursor.execute(QU.update_song_album, args)
|
||||||
|
|
||||||
def rate_song(self, *args):
|
def rate_song(self, *args):
|
||||||
self.cursor.execute(QU.update_song_rating, args)
|
self.cursor.execute(QU.update_song_rating, args)
|
||||||
|
@ -188,8 +210,9 @@ class Music(Kodi):
|
||||||
def add_genres(self, kodi_id, genres, media):
|
def add_genres(self, kodi_id, genres, media):
|
||||||
|
|
||||||
''' Add genres, but delete current genres first.
|
''' Add genres, but delete current genres first.
|
||||||
|
Album_genres was removed in kodi 18
|
||||||
'''
|
'''
|
||||||
if media == 'album':
|
if media == 'album' and self.version_id < 72 :
|
||||||
self.cursor.execute(QU.delete_genres_album, (kodi_id,))
|
self.cursor.execute(QU.delete_genres_album, (kodi_id,))
|
||||||
|
|
||||||
for genre in genres:
|
for genre in genres:
|
||||||
|
@ -197,7 +220,7 @@ class Music(Kodi):
|
||||||
genre_id = self.get_genre(genre)
|
genre_id = self.get_genre(genre)
|
||||||
self.cursor.execute(QU.update_genre_album, (genre_id, kodi_id))
|
self.cursor.execute(QU.update_genre_album, (genre_id, kodi_id))
|
||||||
|
|
||||||
elif media == 'song':
|
if media == 'song':
|
||||||
self.cursor.execute(QU.delete_genres_song, (kodi_id,))
|
self.cursor.execute(QU.delete_genres_song, (kodi_id,))
|
||||||
|
|
||||||
for genre in genres:
|
for genre in genres:
|
||||||
|
@ -229,3 +252,17 @@ class Music(Kodi):
|
||||||
|
|
||||||
def delete_song(self, *args):
|
def delete_song(self, *args):
|
||||||
self.cursor.execute(QU.delete_song, args)
|
self.cursor.execute(QU.delete_song, args)
|
||||||
|
|
||||||
|
def get_version(self):
|
||||||
|
self.cursor.execute(QU.get_version)
|
||||||
|
|
||||||
|
return self.cursor.fetchone()[0]
|
||||||
|
|
||||||
|
#current bug in Kodi 18 that will ask for a scan of music tags unless this is set without a lastscanned
|
||||||
|
def update_versiontagscan(self):
|
||||||
|
if self.version_id < 72:
|
||||||
|
return
|
||||||
|
else:
|
||||||
|
self.cursor.execute(QU.get_versiontagcount)
|
||||||
|
if self.cursor.fetchone()[0] == 0:
|
||||||
|
self.cursor.execute(QU.update_versiontag, (self.version_id,))
|
|
@ -53,10 +53,18 @@ get_album_by_name = """ SELECT idAlbum, strArtists
|
||||||
FROM album
|
FROM album
|
||||||
WHERE strAlbum = ?
|
WHERE strAlbum = ?
|
||||||
"""
|
"""
|
||||||
|
get_album_by_name72 = """ SELECT idAlbum, strArtistDisp
|
||||||
|
FROM album
|
||||||
|
WHERE strAlbum = ?
|
||||||
|
"""
|
||||||
get_album_artist = """ SELECT strArtists
|
get_album_artist = """ SELECT strArtists
|
||||||
FROM album
|
FROM album
|
||||||
WHERE idAlbum = ?
|
WHERE idAlbum = ?
|
||||||
"""
|
"""
|
||||||
|
get_album_artist72 = """ SELECT strArtistDisp
|
||||||
|
FROM album
|
||||||
|
WHERE idAlbum = ?
|
||||||
|
"""
|
||||||
get_album_artist_obj = [ "{AlbumId}","{strAlbumArtists}"
|
get_album_artist_obj = [ "{AlbumId}","{strAlbumArtists}"
|
||||||
]
|
]
|
||||||
get_genre = """ SELECT idGenre
|
get_genre = """ SELECT idGenre
|
||||||
|
@ -77,6 +85,9 @@ add_artist = """ INSERT INTO artist(idArtist, strArtist, strMusicBrainzArti
|
||||||
add_album = """ INSERT INTO album(idAlbum, strAlbum, strMusicBrainzAlbumID, strReleaseType)
|
add_album = """ INSERT INTO album(idAlbum, strAlbum, strMusicBrainzAlbumID, strReleaseType)
|
||||||
VALUES (?, ?, ?, ?)
|
VALUES (?, ?, ?, ?)
|
||||||
"""
|
"""
|
||||||
|
add_album72 = """ INSERT INTO album(idAlbum, strAlbum, strMusicBrainzAlbumID, strReleaseType, bScrapedMBID)
|
||||||
|
VALUES (?, ?, ?, ?, 1)
|
||||||
|
"""
|
||||||
add_single = """ INSERT INTO album(idAlbum, strGenres, iYear, strReleaseType)
|
add_single = """ INSERT INTO album(idAlbum, strGenres, iYear, strReleaseType)
|
||||||
VALUES (?, ?, ?, ?)
|
VALUES (?, ?, ?, ?)
|
||||||
"""
|
"""
|
||||||
|
@ -87,6 +98,11 @@ add_song = """ INSERT INTO song(idSong, idAlbum, idPath, strArtists, strG
|
||||||
rating, comment, dateAdded)
|
rating, comment, dateAdded)
|
||||||
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
||||||
"""
|
"""
|
||||||
|
add_song72 = """ INSERT INTO song(idSong, idAlbum, idPath, strArtistDisp, strGenres, strTitle, iTrack,
|
||||||
|
iDuration, iYear, strFileName, strMusicBrainzTrackID, iTimesPlayed, lastplayed,
|
||||||
|
rating, comment, dateAdded)
|
||||||
|
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
||||||
|
"""
|
||||||
add_song_obj = [ "{SongId}","{AlbumId}","{PathId}","{Artists}","{Genre}","{Title}","{Index}",
|
add_song_obj = [ "{SongId}","{AlbumId}","{PathId}","{Artists}","{Genre}","{Title}","{Index}",
|
||||||
"{Runtime}","{Year}","{Filename}","{UniqueId}","{PlayCount}","{DatePlayed}","{Rating}",
|
"{Runtime}","{Year}","{Filename}","{UniqueId}","{PlayCount}","{DatePlayed}","{Rating}",
|
||||||
"{Comment}","{DateAdded}"
|
"{Comment}","{DateAdded}"
|
||||||
|
@ -135,19 +151,35 @@ update_album = """ UPDATE album
|
||||||
iUserrating = ?, lastScraped = ?, strReleaseType = ?
|
iUserrating = ?, lastScraped = ?, strReleaseType = ?
|
||||||
WHERE idAlbum = ?
|
WHERE idAlbum = ?
|
||||||
"""
|
"""
|
||||||
|
update_album72 = """ UPDATE album
|
||||||
|
SET strArtistDisp = ?, iYear = ?, strGenres = ?, strReview = ?, strImage = ?,
|
||||||
|
iUserrating = ?, lastScraped = ?, bScrapedMBID = 1, strReleaseType = ?
|
||||||
|
WHERE idAlbum = ?
|
||||||
|
"""
|
||||||
update_album_obj = [ "{Artists}","{Year}","{Genre}","{Bio}","{Thumb}","{Rating}","{LastScraped}",
|
update_album_obj = [ "{Artists}","{Year}","{Genre}","{Bio}","{Thumb}","{Rating}","{LastScraped}",
|
||||||
"album","{AlbumId}"
|
"album","{AlbumId}"
|
||||||
|
|
||||||
]
|
]
|
||||||
update_album_artist = """ UPDATE album
|
update_album_artist = """ UPDATE album
|
||||||
SET strArtists = ?
|
SET strArtists = ?
|
||||||
WHERE idAlbum = ?
|
WHERE idAlbum = ?
|
||||||
"""
|
"""
|
||||||
|
update_album_artist72 = """ UPDATE album
|
||||||
|
SET strArtistDisp = ?
|
||||||
|
WHERE idAlbum = ?
|
||||||
|
"""
|
||||||
update_song = """ UPDATE song
|
update_song = """ UPDATE song
|
||||||
SET idAlbum = ?, strArtists = ?, strGenres = ?, strTitle = ?, iTrack = ?,
|
SET idAlbum = ?, strArtists = ?, strGenres = ?, strTitle = ?, iTrack = ?,
|
||||||
iDuration = ?, iYear = ?, strFilename = ?, iTimesPlayed = ?, lastplayed = ?,
|
iDuration = ?, iYear = ?, strFilename = ?, iTimesPlayed = ?, lastplayed = ?,
|
||||||
rating = ?, comment = ?, dateAdded = ?
|
rating = ?, comment = ?, dateAdded = ?
|
||||||
WHERE idSong = ?
|
WHERE idSong = ?
|
||||||
"""
|
"""
|
||||||
|
update_song72 = """ UPDATE song
|
||||||
|
SET idAlbum = ?, strArtistDisp = ?, strGenres = ?, strTitle = ?, iTrack = ?,
|
||||||
|
iDuration = ?, iYear = ?, strFilename = ?, iTimesPlayed = ?, lastplayed = ?,
|
||||||
|
rating = ?, comment = ?, dateAdded = ?
|
||||||
|
WHERE idSong = ?
|
||||||
|
"""
|
||||||
update_song_obj = [ "{AlbumId}","{Artists}","{Genre}","{Title}","{Index}","{Runtime}","{Year}",
|
update_song_obj = [ "{AlbumId}","{Artists}","{Genre}","{Title}","{Index}","{Runtime}","{Year}",
|
||||||
"{Filename}","{PlayCount}","{DatePlayed}","{Rating}","{Comment}",
|
"{Filename}","{PlayCount}","{DatePlayed}","{Rating}","{Comment}",
|
||||||
"{DateAdded}","{SongId}"
|
"{DateAdded}","{SongId}"
|
||||||
|
@ -195,3 +227,12 @@ delete_album = """ DELETE FROM album
|
||||||
delete_song = """ DELETE FROM song
|
delete_song = """ DELETE FROM song
|
||||||
WHERE idSong = ?
|
WHERE idSong = ?
|
||||||
"""
|
"""
|
||||||
|
get_version = """ SELECT idVersion
|
||||||
|
FROM version
|
||||||
|
"""
|
||||||
|
update_versiontag = """ INSERT OR REPLACE INTO versiontagscan(idVersion, iNeedsScan)
|
||||||
|
VALUES (?, 0)
|
||||||
|
"""
|
||||||
|
get_versiontagcount = """ SELECT COUNT(*)
|
||||||
|
FROM versiontagscan
|
||||||
|
"""
|
Loading…
Reference in a new issue