From 6e1cb2b9fecea843304150294f61970f3a4251e7 Mon Sep 17 00:00:00 2001 From: pabloalcantara Date: Wed, 17 Aug 2011 09:30:22 -0300 Subject: [PATCH 1/6] comit with last rembo10 commit --- data/css/style.css | 33 ++-- data/interfaces/default/album.html | 45 ++++-- data/interfaces/default/artist.html | 19 ++- data/interfaces/default/base.html | 4 + data/interfaces/default/config.html | 54 +++++-- data/interfaces/default/history.html | 2 +- data/interfaces/default/manage.html | 9 +- data/interfaces/default/manageartists.html | 15 +- data/interfaces/default/managenew.html | 52 ++++++ data/interfaces/remix/album.html | 45 ++++-- data/interfaces/remix/artist.html | 19 ++- data/interfaces/remix/base.html | 4 + data/interfaces/remix/config.html | 54 +++++-- data/interfaces/remix/history.html | 2 +- data/interfaces/remix/manage.html | 9 +- data/interfaces/remix/manageartists.html | 15 +- data/interfaces/remix/managenew.html | 52 ++++++ headphones/__init__.py | 57 +++++-- headphones/encode.py | 8 +- headphones/helpers.py | 50 +++++- headphones/importer.py | 156 ++++++------------ headphones/lastfm.py | 12 +- headphones/librarysync.py | 178 +++++++++++++++++++++ headphones/postprocessor.py | 2 +- headphones/sab.py | 5 +- headphones/versioncheck.py | 4 +- headphones/webserve.py | 40 +++-- 27 files changed, 729 insertions(+), 216 deletions(-) create mode 100644 data/interfaces/default/managenew.html create mode 100644 data/interfaces/remix/managenew.html create mode 100644 headphones/librarysync.py diff --git a/data/css/style.css b/data/css/style.css index 552c9a5b..7641d431 100755 --- a/data/css/style.css +++ b/data/css/style.css @@ -109,10 +109,11 @@ header { min-height: 68px; width: 100%; min-width: 935px; padding-left: 0px; pad h1 { font-size: 24px; } h2 { font-size: 20px; } h3 { font-size: 16px; } +h4 { font-size: 14px; } p.indented { padding-top: 20px; margin-left: 20px; font-size: 14px; } p.center { text-align: center; font-size: 18px; } -.smalltext2 { font-size: 11px; margin-left: 45px; } +.smalltext2 { font-size: 12px; margin-left: 45px; } div#updatebar { text-align: center; min-width: 970px; width: 100%; background-color: light-blue; float: left; } div#logo { float: left; padding-left: 10px; } @@ -157,35 +158,45 @@ div#paddingheader { padding-top: 48px; font-size: 24px; font-weight: bold; text- div#nopaddingheader { font-size: 24px; font-weight: bold; text-align: center; } table#album_table { background-color: white; } -table#album_table th#select { vertical-align: middle; text-align: left; min-width: 25px; } +table#album_table th#select { vertical-align: middle; text-align: left; min-width: 10px; } table#album_table th#albumart { text-align: left; min-width: 50px; } table#album_table th#albumname { text-align: center; min-width: 150px; } -table#album_table th#reldate { width: 175px; text-align: center; min-width: 100px; } -table#album_table th#status { width: 175px; text-align: center; min-width: 100px; } +table#album_table th#reldate { width: 175px; text-align: center; min-width: 70px; } +table#album_table th#status { width: 175px; text-align: center; min-width: 80px; } table#album_table th#type { width: 175px; text-align: center; min-width: 100px; } +table#album_table th#bitrate { text-align: center; min-width: 60px; } table#album_table td#select { vertical-align: middle; text-align: left; } table#album_table td#albumart { vertical-align: middle; text-align: left; } table#album_table td#albumname { vertical-align: middle; text-align: center; } table#album_table td#reldate { vertical-align: middle; text-align: center; } -table#album_table td#status { vertical-align: middle; text-align: center; } +table#album_table td#status { vertical-align: middle; text-align: center; font-size: 13px; } table#album_table td#type { vertical-align: middle; text-align: center; } table#album_table td#have { vertical-align: middle; } +table#album_table td#bitrate { vertical-align: middle; text-align: center; font-size: 13px; } img.albumArt { float: left; padding-right: 5px; } div#albumheader { padding-top: 48px; height: 200px; } -div#track_wrapper { padding-top: 20px; text-align: center; font-size: 16px; } +div#track_wrapper { margin-left: -50px; padding-top: 20px; font-size: 16px; width: 100%; } -table#track_table th#number { text-align: right; min-width: 20px; } +table#track_table th#number { text-align: right; min-width: 10px; } table#track_table th#name { text-align: center; min-width: 350px; } table#track_table th#duration { width: 175px; text-align: center; min-width: 100px; } -table#track_table th#have { width: 175px; text-align: center; min-width: 100px; } +table#track_table th#location { text-align: center; width: 250px; } +table#track_table th#bitrate { text-align: center; min-width: 75px; } table#track_table td#number { vertical-align: middle; text-align: right; } -table#track_table td#name { vertical-align: middle; text-align: center; } +table#track_table td#name { vertical-align: middle; text-align: center; font-size: 15px; } table#track_table td#duration { vertical-align: middle; text-align: center; } -table#track_table td#have { vertical-align: middle; text-align: center; } +table#track_table td#location { vertical-align: middle; text-align: center; font-size: 11px; } +table#track_table td#bitrate { vertical-align: middle; text-align: center; font-size: 12px; } -table#history_table { background-color: white; width: 100%; } +table#history_table { background-color: white; width: 100%; font-size: 13px; } + +table#history_table td#dateadded { vertical-align: middle; text-align: center; min-width: 150px; font-size: 14px; } +table#history_table td#filename { vertical-align: middle; text-align: center; min-width: 100px; font-size: 15px; } +table#history_table td#size { vertical-align: middle; text-align: center; min-width: 75px; font-size: 14px; } +table#history_table td#status { vertical-align: middle; text-align: center; font-size: 14px; } +table#history_table td#action { vertical-align: middle; text-align: center; font-size: 14px; } table#log_table { background-color: white; } diff --git a/data/interfaces/default/album.html b/data/interfaces/default/album.html index da287746..ca2e9ce3 100644 --- a/data/interfaces/default/album.html +++ b/data/interfaces/default/album.html @@ -51,35 +51,55 @@ # Track Title Duration - + Local File + Bit Rate - <% - i = 0 - %> %for track in tracks: <% - i += 1 - have = myDB.select('SELECT TrackTitle from have WHERE ArtistName like ? AND AlbumTitle like ? AND TrackTitle like ?', [track['ArtistName'], track['AlbumTitle'], track['TrackTitle']]) - if len(have): + if track['Location']: grade = 'A' - check = 'checkmark' + location = track['Location'] else: - grade = 'Z' - check = '' + grade = 'X' + location = '' + + if track['BitRate']: + bitrate = str(track['BitRate']/1000) + ' kbps' + else: + bitrate = '' + try: trackduration = helpers.convert_milliseconds(track['TrackDuration']) except: trackduration = 'n/a' %> - ${i} + ${track['TrackNumber']} ${track['TrackTitle']} ${trackduration} - ${check} + ${location} + ${bitrate} %endfor + <% + 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'])) + %> + + ${track['TrackNumber']} + ${track['TrackTitle']} + ${duration} + ${track['Location']} + ${int(track['BitRate'])/1000} kbps + + %endfor + %endif @@ -97,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 4b296eda..7c82f4fc 100644 --- a/data/interfaces/default/artist.html +++ b/data/interfaces/default/artist.html @@ -41,11 +41,12 @@ - Album Name - Release Date - Release Type + Name + Date + Type Status Have + Bitrate @@ -62,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 have WHERE ArtistName like ? AND AlbumTitle like ?', [album['ArtistName'], album['AlbumTitle']])) + 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 @@ -71,6 +72,12 @@ except (ZeroDivisionError, TypeError): percent = 0 totaltracks = '?' + + avgbitrate = myDB.action("SELECT AVG(BitRate) FROM tracks WHERE AlbumID=?", [album['AlbumID']]).fetchone()[0] + if avgbitrate: + bitrate = str(int(avgbitrate)/1000) + ' kbps' + else: + bitrate = '' %> @@ -89,6 +96,7 @@ %endif
${havetracks}/${totaltracks}
+ ${bitrate} %endfor @@ -114,7 +122,8 @@ null, null, null, - { "sType": "title-numeric"} + { "sType": "title-numeric"}, + null ], "oLanguage": { "sLengthMenu":"Show _MENU_ albums per page", diff --git a/data/interfaces/default/base.html b/data/interfaces/default/base.html index 3704a6c2..b5d6052a 100755 --- a/data/interfaces/default/base.html +++ b/data/interfaces/default/base.html @@ -1,5 +1,6 @@ <% import headphones + from headphones import version %> @@ -70,6 +71,9 @@