@@ -63,6 +63,22 @@ def close(self):
6363 if self .connection :
6464 self .connection .close ()
6565
66+ def convert_row_to_album (self , album ):
67+ return_album = Album ()
68+ return_album .id = album ["album_id" ]
69+ return_album .mb_albumid = album ["mb_albumid" ]
70+ return_album .title = album ["album" ]
71+ return_album .tracks = album ["tracks" ]
72+ return_album .track_total = album ["tracktotal" ]
73+ return_album .complete_percentage = album ["complete" ]
74+ return_album .album_artist = album ["albumartist" ]
75+ return_album .genre = album ["genre" ]
76+ return_album .year = album ["year" ]
77+ return_album .original_year = album ["original_year" ]
78+ return_album .barcode = album ["barcode" ]
79+ # id |artpath|added |albumartist |albumartist_sort|albumartist_credit|albumartists|albumartists_sort |albumartists_credit|album |genre |style|discogs_albumid|discogs_artistid|discogs_labelid|year|month|day|disctotal|comp|mb_albumid|mb_albumartistid|albumtype|albumtypes|label |barcode |mb_releasegroupid |release_group_title |asin|catalognum|script|language|country|albumstatus|albumdisambig|releasegroupdisambig|rg_album_gain|rg_album_peak|r128_album_gain|original_year|original_month|original_day|
80+ return return_album
81+
6682 def get_albums_from_db (self , sort_by : AlbumSort = AlbumSort .ARTIST ):
6783 connection = self .get_db_connection ()
6884 cursor = connection .cursor ()
@@ -92,19 +108,7 @@ def get_albums_from_db(self, sort_by: AlbumSort = AlbumSort.ARTIST):
92108
93109 result = []
94110 for album in albums :
95- return_album = Album ()
96- return_album .id = album ["album_id" ]
97- return_album .mb_albumid = album ["mb_albumid" ]
98- return_album .title = album ["album" ]
99- return_album .tracks = album ["tracks" ]
100- return_album .track_total = album ["tracktotal" ]
101- return_album .complete_percentage = album ["complete" ]
102- return_album .album_artist = album ["albumartist" ]
103- return_album .genre = album ["genre" ]
104- return_album .year = album ["year" ]
105- return_album .original_year = album ["original_year" ]
106- return_album .barcode = album ["barcode" ]
107- # id |artpath|added |albumartist |albumartist_sort|albumartist_credit|albumartists|albumartists_sort |albumartists_credit|album |genre |style|discogs_albumid|discogs_artistid|discogs_labelid|year|month|day|disctotal|comp|mb_albumid|mb_albumartistid|albumtype|albumtypes|label |barcode |mb_releasegroupid |release_group_title |asin|catalognum|script|language|country|albumstatus|albumdisambig|releasegroupdisambig|rg_album_gain|rg_album_peak|r128_album_gain|original_year|original_month|original_day|
111+ return_album = self .convert_row_to_album (album )
108112
109113 result .append (return_album )
110114 return result
@@ -406,21 +410,31 @@ def get_recently_added_albums(self):
406410 try :
407411 cursor = self .get_db_connection ().cursor ()
408412 query = """select
409- a.id,
410- a.album,
411- a.albumartist,
412- a.mb_albumid,
413- a.mb_year,
414- a.genre,
415-
416-
417- from albums a order by a.added desc
413+ i.album_id,
414+ i.album,
415+ count(i.track) as tracks,
416+ max(i.tracktotal) as tracktotal,
417+ ifnull(round(count(i.track)/ cast(max(i.tracktotal) as float), 2) * 100, 0) as complete,
418+ a.*
419+ from
420+ albums a
421+ left join
422+ items i on
423+ i.album_id = a.id
424+ where
425+ album_id is not null
426+ group by
427+ i.album_id
428+ order by a.added desc
418429 limit 10;"""
419430 cursor .execute (query )
420431 results = cursor .fetchall ()
421432
422433 cursor .close ()
423- return results
434+
435+ result_albums = [ self .convert_row_to_album (album ) for album in results ]
436+
437+ return result_albums
424438 except sqlite3 .Error as e :
425439 raise DBQueryError from e
426440
0 commit comments