From f3c4d684ebdf8e6fc879113361d1e4d35e663c77 Mon Sep 17 00:00:00 2001 From: Remy Date: Mon, 15 Aug 2011 22:43:31 -0700 Subject: [PATCH] Added unmatched tracks to album page, added bit rate --- data/interfaces/default/album.html | 39 +++++++++++------------------ data/interfaces/default/artist.html | 2 +- headphones/__init__.py | 2 +- headphones/helpers.py | 10 ++++++++ headphones/importer.py | 2 +- headphones/librarysync.py | 7 +++--- headphones/postprocessor.py | 31 ----------------------- 7 files changed, 31 insertions(+), 62 deletions(-) diff --git a/data/interfaces/default/album.html b/data/interfaces/default/album.html index 073a77e7..ca2e9ce3 100644 --- a/data/interfaces/default/album.html +++ b/data/interfaces/default/album.html @@ -62,7 +62,7 @@ grade = 'A' location = track['Location'] else: - grade = 'Z' + grade = 'X' location = '' if track['BitRate']: @@ -83,35 +83,25 @@ ${bitrate} %endfor - - - <% - unmatched = myDB.select('SELECT * from have WHERE ArtistName LIKE ? AND AlbumTitle LIKE ?', [album['ArtistName'], album['AlbumTitle']]) - %> - %if unmatched: - - - - - - - - - - - - %for track in unmatched: - + <% + unmatched = myDB.select('SELECT * from have WHERE ArtistName LIKE ? AND AlbumTitle LIKE ?', [album['ArtistName'], album['AlbumTitle']]) + %> + %if unmatched: + %for track in unmatched: + <% + duration = helpers.convert_seconds(float(track['TrackLength'])) + %> + - + - + - %endfor + %endfor + %endif
#Track TitleDurationLocal FileBit Rate
${track['TrackNumber']} ${track['TrackTitle']}${track['TrackLength']}${duration} ${track['Location']}${track['BitRate']}${int(track['BitRate'])/1000} kbps
- %endif @@ -127,6 +117,7 @@ { $('#track_table').dataTable( { + "aaSorting": [], "bFilter": false, "bInfo": false, "bPaginate": false diff --git a/data/interfaces/default/artist.html b/data/interfaces/default/artist.html index 0438ac4c..7c82f4fc 100644 --- a/data/interfaces/default/artist.html +++ b/data/interfaces/default/artist.html @@ -63,7 +63,7 @@ myDB = db.DBConnection() totaltracks = len(myDB.select('SELECT TrackTitle from tracks WHERE AlbumID=?', [album['AlbumID']])) - havetracks = len(myDB.select('SELECT TrackTitle from tracks WHERE AlbumID=? AND Location IS NOT NULL', [album['AlbumID']])) + havetracks = len(myDB.select('SELECT TrackTitle from tracks WHERE AlbumID=? AND Location IS NOT NULL', [album['AlbumID']])) + len(myDB.select('SELECT TrackTitle from have WHERE ArtistName like ? AND AlbumTitle LIKE ?', [album['ArtistName'], album['AlbumTitle']])) try: percent = (havetracks*100.0)/totaltracks diff --git a/headphones/__init__.py b/headphones/__init__.py index 335768d1..6c1a1e02 100644 --- a/headphones/__init__.py +++ b/headphones/__init__.py @@ -429,7 +429,7 @@ def start(): SCHED.add_cron_job(updater.dbUpdate, hour=4, minute=0, second=0) SCHED.add_interval_job(searcher.searchNZB, minutes=NZB_SEARCH_INTERVAL) - SCHED.add_interval_job(librarysync.libraryScan(), minutes=LIBRARYSCAN_INTERVAL) + SCHED.add_interval_job(librarysync.libraryScan, minutes=LIBRARYSCAN_INTERVAL) SCHED.add_interval_job(versioncheck.checkGithub, minutes=300) SCHED.add_interval_job(postprocessor.checkFolder, minutes=DOWNLOAD_SCAN_INTERVAL) librarysync.libraryScan() diff --git a/headphones/helpers.py b/headphones/helpers.py index 568bb0f7..9428f319 100644 --- a/headphones/helpers.py +++ b/headphones/helpers.py @@ -84,6 +84,16 @@ def convert_milliseconds(ms): return minutes +def convert_seconds(s): + + gmtime = time.gmtime(s) + if s > 3600: + minutes = time.strftime("%H:%M:%S", gmtime) + else: + minutes = time.strftime("%M:%S", gmtime) + + return minutes + def today(): today = datetime.date.today() yyyymmdd = datetime.date.isoformat(today) diff --git a/headphones/importer.py b/headphones/importer.py index 70f5701c..914fe759 100644 --- a/headphones/importer.py +++ b/headphones/importer.py @@ -45,7 +45,7 @@ def artistlist_to_mbids(artistlist): # Just update the tracks if it does else: myDB = db.DBConnection() - havetracks = len(myDB.select('SELECT TrackTitle from tracks WHERE ArtistID=?', [artistid])) + len(myDB.select('SELECT TrackTitle from have WHERE ArtistName like ?', [artist['ArtistName']])) + havetracks = len(myDB.select('SELECT TrackTitle from tracks WHERE ArtistID=?', [artistid])) + len(myDB.select('SELECT TrackTitle from have WHERE ArtistName like ?', [artist])) myDB.action('UPDATE artists SET HaveTracks=? WHERE ArtistID=?', [havetracks, artistid]) # Update the similar artist tag cloud: diff --git a/headphones/librarysync.py b/headphones/librarysync.py index d5d7f742..eca74417 100644 --- a/headphones/librarysync.py +++ b/headphones/librarysync.py @@ -152,18 +152,17 @@ def libraryScan(): # Clean up the new artist list unique_artists = {}.fromkeys(new_artists).keys() - current_artists = myDB.select('SELECT ArtistName from artists') + current_artists = myDB.select('SELECT ArtistName, ArtistID from artists') artist_list = [f for f in unique_artists if f.lower() not in [x[0].lower() for x in current_artists]] - logger.info('Found %i new artists to import.' % len(artist_list)) - # Update track counts for artist in current_artists: - havetracks = len(myDB.select('SELECT TrackTitle from tracks WHERE ArtistID like ?', [artist['ArtistID']])) + len(myDB.select('SELECT TrackTitle from have WHERE ArtistName like ?', [artist['ArtistName']])) + havetracks = len(myDB.select('SELECT TrackTitle from tracks WHERE ArtistID like ? AND Location IS NOT NULL', [artist['ArtistID']])) + len(myDB.select('SELECT TrackTitle from have WHERE ArtistName like ?', [artist['ArtistName']])) myDB.action('UPDATE artists SET HaveTracks=? WHERE ArtistID=?', [havetracks, artist['ArtistID']]) if headphones.ADD_ARTISTS: + logger.info('Found %i new artists to import.' % len(artist_list)) importer.artistlist_to_mbids(artist_list) else: headphones.NEW_ARTISTS = artist_list diff --git a/headphones/postprocessor.py b/headphones/postprocessor.py index 8bf96692..70ae4ac3 100644 --- a/headphones/postprocessor.py +++ b/headphones/postprocessor.py @@ -240,7 +240,6 @@ def doPostProcessing(albumid, albumpath, release, tracks, downloaded_track_list) myDB.action('UPDATE artists SET HaveTracks=? WHERE ArtistID=?', [new_track_count, release['ArtistID']]) myDB.action('UPDATE albums SET status = "Downloaded" WHERE AlbumID=?', [albumid]) myDB.action('UPDATE snatched SET status = "Processed" WHERE AlbumID=?', [albumid]) - updateHave(albumpath) logger.info('Post-processing for %s - %s complete' % (release['ArtistName'], release['AlbumTitle'])) @@ -421,36 +420,6 @@ def renameFiles(albumpath, downloaded_track_list, release): except Exception, e: logger.error('Error renaming file: %s. Error: %s' % (downloaded_track, e)) continue - -def updateHave(albumpath): - - results = [] - - for r,d,f in os.walk(albumpath): - for files in f: - if any(files.endswith('.' + x) for x in headphones.MEDIA_FORMATS): - results.append(os.path.join(r, files)) - - if results: - - myDB = db.DBConnection() - - for song in results: - try: - f = MediaFile(song) - #logger.debug('Reading: %s' % song.decode('UTF-8')) - except: - logger.warn('Could not read file: %s' % song) - continue - else: - if f.albumartist: - artist = f.albumartist - elif f.artist: - artist = f.artist - else: - continue - - myDB.action('INSERT INTO have VALUES( ?, ?, ?, ?, ?, ?, ?, ?, ?)', [artist, f.album, f.track, f.title, f.length, f.bitrate, f.genre, f.date, f.mb_trackid]) def renameUnprocessedFolder(albumpath):