From 58f849ef3cd02e74636ffafcc9e1b0601ddc8c73 Mon Sep 17 00:00:00 2001 From: Remy Date: Wed, 25 May 2011 10:12:36 -0700 Subject: [PATCH] fixed db closing issue w/ python 2.7 --- itunesimport.py | 10 ++++++++-- updater.py | 28 +++++++++++++++++++++------- webServer.py | 12 +++++++++--- 3 files changed, 38 insertions(+), 12 deletions(-) diff --git a/itunesimport.py b/itunesimport.py index b9be6849..a4d3da1f 100644 --- a/itunesimport.py +++ b/itunesimport.py @@ -42,20 +42,26 @@ def itunesImport(pathtoxml): releaseid = u.extractUuid(release.id) inc = ws.ReleaseIncludes(artist=True, releaseEvents= True, tracks= True, releaseGroup=True) results = ws.Query().getReleaseById(releaseid, inc) + for event in results.releaseEvents: + if event.country == 'US': + c.execute('INSERT INTO albums VALUES( ?, ?, ?, ?, ?, CURRENT_DATE, ?, ?)', (artistid, results.artist.name, results.title, results.asin, results.getEarliestReleaseDate(), u.extractUuid(results.id), 'Skipped')) conn.commit() c.execute('SELECT ReleaseDate, DateAdded from albums WHERE AlbumID="%s"' % u.extractUuid(results.id)) + latestrelease = c.fetchall() + if latestrelease[0][0] > latestrelease[0][1]: c.execute('UPDATE albums SET Status = "Wanted" WHERE AlbumID="%s"' % u.extractUuid(results.id)) else: pass for track in results.tracks: c.execute('INSERT INTO tracks VALUES( ?, ?, ?, ?, ?, ?, ?, ?)', (artistid, results.artist.name, results.title, results.asin, u.extractUuid(results.id), track.title, track.duration, u.extractUuid(track.id))) - conn.commit() - c.close() + conn.commit() + else: pass + c.close() \ No newline at end of file diff --git a/updater.py b/updater.py index d5fcfa3b..17510fce 100644 --- a/updater.py +++ b/updater.py @@ -10,46 +10,60 @@ def dbUpdate(): conn=sqlite3.connect(database) c=conn.cursor() c.execute('SELECT ArtistID from artists WHERE Status="Active"') + activeartists = c.fetchall() + i = 0 + while i < len(activeartists): + artistid = activeartists[i][0] inc = ws.ArtistIncludes(releases=(m.Release.TYPE_OFFICIAL, m.Release.TYPE_ALBUM), ratings=False, releaseGroups=False) artist = ws.Query().getArtistById(artistid, inc) - print '''now working on %s''' % artist.name + for release in artist.getReleases(): + releaseid = u.extractUuid(release.id) inc = ws.ReleaseIncludes(artist=True, releaseEvents= True, tracks= True, releaseGroup=True) results = ws.Query().getReleaseById(releaseid, inc) - print '''now working on %s by %s''' % (results.title, artist.name) time.sleep(2) + for event in results.releaseEvents: + if event.country == 'US': + if (u.extractUuid(results.id) in x for x in activeartists): - print '''%s is already in the database''' % results.title + c.execute('UPDATE albums SET AlbumASIN="%s", ReleaseDate="%s" WHERE AlbumID="%s"' % (results.asin, results.getEarliestReleaseDate(), u.extractUuid(results.id))) - print ''' updated asin and release date for %s ''' % results.title + for track in results.tracks: c.execute('UPDATE tracks SET TrackDuration="%s" WHERE AlbumID="%s" AND TrackID="%s"' % (track.duration, u.extractUuid(results.id), u.extractUuid(track.id))) conn.commit() - print '''%s has been updated''' % results.title + else: - print '''%s is new, adding it''' % results.title + c.execute('INSERT INTO albums VALUES( ?, ?, ?, ?, ?, CURRENT_DATE, ?, ?)', (artistid, results.artist.name, results.title, results.asin, results.getEarliestReleaseDate(), u.extractUuid(results.id), 'Skipped')) conn.commit() c.execute('SELECT ReleaseDate, DateAdded from albums WHERE AlbumID="%s"' % u.extractUuid(results.id)) + latestrelease = c.fetchall() + if latestrelease[0][0] > latestrelease[0][1]: + c.execute('UPDATE albums SET Status = "Wanted" WHERE AlbumID="%s"' % u.extractUuid(results.id)) + else: pass + for track in results.tracks: + c.execute('INSERT INTO tracks VALUES( ?, ?, ?, ?, ?, ?, ?, ?)', (artistid, results.artist.name, results.title, results.asin, u.extractUuid(results.id), track.title, track.duration, u.extractUuid(track.id))) conn.commit() - print '''%s has been added''' % release.title + else: print '''%s is not a US release''' % results.title i += 1 + conn.commit() c.close() conn.close() diff --git a/webServer.py b/webServer.py index d14230af..717802f9 100644 --- a/webServer.py +++ b/webServer.py @@ -195,30 +195,36 @@ class Headphones: if any(artistid in x for x in artistlist): page = [templates._header] page.append('''%s has already been added. Go back.''' % artist.name) + c.close() return page + else: c.execute('INSERT INTO artists VALUES( ?, ?, ?, CURRENT_DATE, ?)', (artistid, artist.name, artist.sortName, 'Active')) + for release in artist.getReleases(): releaseid = u.extractUuid(release.id) inc = ws.ReleaseIncludes(artist=True, releaseEvents= True, tracks= True, releaseGroup=True) results = ws.Query().getReleaseById(releaseid, inc) time.sleep(0.6) + for event in results.releaseEvents: if event.country == 'US': c.execute('INSERT INTO albums VALUES( ?, ?, ?, ?, ?, CURRENT_DATE, ?, ?)', (artistid, results.artist.name, results.title, results.asin, results.getEarliestReleaseDate(), u.extractUuid(results.id), 'Skipped')) - conn.commit() c.execute('SELECT ReleaseDate, DateAdded from albums WHERE AlbumID="%s"' % u.extractUuid(results.id)) latestrelease = c.fetchall() + if latestrelease[0][0] > latestrelease[0][1]: c.execute('UPDATE albums SET Status = "Wanted" WHERE AlbumID="%s"' % u.extractUuid(results.id)) else: pass + for track in results.tracks: c.execute('INSERT INTO tracks VALUES( ?, ?, ?, ?, ?, ?, ?, ?)', (artistid, results.artist.name, results.title, results.asin, u.extractUuid(results.id), track.title, track.duration, u.extractUuid(track.id))) - conn.commit() - c.close() else: pass + + conn.commit() + c.close() raise cherrypy.HTTPRedirect("/")