Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix music syncing for Kodi 18 retaining Kodi 17 compatibility #32

Merged
merged 2 commits into from
Jun 2, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
61 changes: 49 additions & 12 deletions resources/lib/objects/kodi/music.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,11 @@

class Music(Kodi):


def __init__(self, cursor):

self.cursor = cursor
self.version_id = self.get_version()
self.update_versiontagscan()
Kodi.__init__(self)

def create_entry(self):
Expand Down Expand Up @@ -128,7 +129,10 @@ def get_album(self, album_id, name, musicbrainz, artists=None, *args):
self.cursor.execute(QU.get_album, (musicbrainz,))
album = None
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()

if album[1] and album[1].split(' / ')[0] not in artists.split(' / '):
Expand All @@ -146,17 +150,25 @@ def get_album(self, album_id, name, musicbrainz, artists=None, *args):
def add_album(self, album_id, *args):

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

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):

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]
except TypeError:
return
Expand All @@ -165,39 +177,50 @@ def get_album_artist(self, album_id, artists):
self.update_album_artist(artists, album_id)

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):
self.cursor.execute(QU.add_single, 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):
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):
self.cursor.execute(QU.update_song_artist, 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)
oddstr13 marked this conversation as resolved.
Show resolved Hide resolved

def rate_song(self, *args):
self.cursor.execute(QU.update_song_rating, args)

def add_genres(self, kodi_id, genres, media):

''' 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,))

for genre in genres:

genre_id = self.get_genre(genre)
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,))

for genre in genres:
Expand Down Expand Up @@ -229,3 +252,17 @@ def delete_album(self, *args):

def delete_song(self, *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,))
41 changes: 41 additions & 0 deletions resources/lib/objects/kodi/queries_music.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,10 +53,18 @@
FROM album
WHERE strAlbum = ?
"""
get_album_by_name72 = """ SELECT idAlbum, strArtistDisp
FROM album
WHERE strAlbum = ?
"""
get_album_artist = """ SELECT strArtists
FROM album
WHERE idAlbum = ?
"""
get_album_artist72 = """ SELECT strArtistDisp
FROM album
WHERE idAlbum = ?
"""
get_album_artist_obj = [ "{AlbumId}","{strAlbumArtists}"
]
get_genre = """ SELECT idGenre
Expand All @@ -77,6 +85,9 @@
add_album = """ INSERT INTO album(idAlbum, strAlbum, strMusicBrainzAlbumID, strReleaseType)
VALUES (?, ?, ?, ?)
"""
add_album72 = """ INSERT INTO album(idAlbum, strAlbum, strMusicBrainzAlbumID, strReleaseType, bScrapedMBID)
VALUES (?, ?, ?, ?, 1)
"""
add_single = """ INSERT INTO album(idAlbum, strGenres, iYear, strReleaseType)
VALUES (?, ?, ?, ?)
"""
Expand All @@ -87,6 +98,11 @@
rating, comment, dateAdded)
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}",
"{Runtime}","{Year}","{Filename}","{UniqueId}","{PlayCount}","{DatePlayed}","{Rating}",
"{Comment}","{DateAdded}"
Expand Down Expand Up @@ -135,19 +151,35 @@
iUserrating = ?, lastScraped = ?, strReleaseType = ?
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}",
"album","{AlbumId}"

]
update_album_artist = """ UPDATE album
SET strArtists = ?
WHERE idAlbum = ?
"""
update_album_artist72 = """ UPDATE album
SET strArtistDisp = ?
WHERE idAlbum = ?
"""
update_song = """ UPDATE song
SET idAlbum = ?, strArtists = ?, strGenres = ?, strTitle = ?, iTrack = ?,
iDuration = ?, iYear = ?, strFilename = ?, iTimesPlayed = ?, lastplayed = ?,
rating = ?, comment = ?, dateAdded = ?
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}",
"{Filename}","{PlayCount}","{DatePlayed}","{Rating}","{Comment}",
"{DateAdded}","{SongId}"
Expand Down Expand Up @@ -195,3 +227,12 @@
delete_song = """ DELETE FROM song
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
"""