diff --git a/Headphones.py b/Headphones.py index f8053ff4..3564436f 100755 --- a/Headphones.py +++ b/Headphones.py @@ -1,5 +1,5 @@ #!/usr/bin/env python -import os, sys +import os, sys, locale from lib.configobj import ConfigObj @@ -24,6 +24,11 @@ def main(): headphones.PROG_DIR = os.path.dirname(headphones.FULL_PATH) headphones.ARGS = sys.argv[1:] + try: + locale.setlocale(locale.LC_ALL, "") + except Exception, e: + pass + # Set up and gather command line arguments parser = argparse.ArgumentParser(description='Music add-on for SABnzbd+') diff --git a/headphones/importer.py b/headphones/importer.py index a1081534..8e657289 100644 --- a/headphones/importer.py +++ b/headphones/importer.py @@ -150,15 +150,15 @@ def addArtisttoDB(artistid): rg_exists = myDB.select("SELECT * from albums WHERE AlbumID=?", [rg['id']]) try: - releaseid = mb.getReleaseGroup(rgid) + release_dict = mb.getReleaseGroup(rgid) except Exception, e: logger.info('Unable to get release information for %s - it may not be a valid release group' % rg['title']) continue - if not releaseid: + if not release_dict: continue - release = mb.getRelease(releaseid) + release = mb.getRelease(release_dict['releaseid']) if not release: logger.warn('Unable to get release information for %s. Skipping for now.' % rg['title']) @@ -170,7 +170,7 @@ def addArtisttoDB(artistid): if len(rg_exists): newValueDict = {"AlbumASIN": release['asin'], - "ReleaseDate": release['date'], + "ReleaseDate": release_dict['releasedate'], } else: @@ -179,7 +179,7 @@ def addArtisttoDB(artistid): "ArtistName": artist['artist_name'], "AlbumTitle": rg['title'], "AlbumASIN": release['asin'], - "ReleaseDate": release['date'], + "ReleaseDate": release_dict['releasedate'], "DateAdded": helpers.today(), } diff --git a/headphones/mb.py b/headphones/mb.py index dfab9bc3..14ea628c 100644 --- a/headphones/mb.py +++ b/headphones/mb.py @@ -146,7 +146,7 @@ def getReleaseGroup(rgid): # to get more detailed release info (ASIN, track count, etc.) for release in releaseGroup.releases: - inc = ws.ReleaseIncludes(tracks=True) + inc = ws.ReleaseIncludes(tracks=True, releaseEvents=True) releaseResult = None attempt = 0 @@ -168,16 +168,19 @@ def getReleaseGroup(rgid): release_dict = { 'asin': bool(releaseResult.asin), 'tracks': len(releaseResult.getTracks()), - 'releaseid': u.extractUuid(releaseResult.id) + 'releaseid': u.extractUuid(releaseResult.id), + 'releasedate': releaseResult.getEarliestReleaseDate() } releaselist.append(release_dict) a = multikeysort(releaselist, ['-asin', '-tracks']) + b = sorted(releaselist, key=lambda item: item['releasedate']) - releaseid = a[0]['releaseid'] + release_dict = {'releaseid' :a[0]['releaseid'], + 'releasedate' : b[0]['releasedate']} - return releaseid + return release_dict def getRelease(releaseid): """ diff --git a/headphones/searcher.py b/headphones/searcher.py index 363f270e..45aee2c4 100644 --- a/headphones/searcher.py +++ b/headphones/searcher.py @@ -1,5 +1,4 @@ import urllib -import string import lib.feedparser as feedparser from xml.dom import minidom import os, re @@ -26,7 +25,7 @@ def searchNZB(albumid=None, new=False): except TypeError: year = '' - dic = {'... ':' ', ' & ':' ', ' = ': ' ', '?':'', '!':'', ' + ':' ', '(':'', ')':'', '"':'', ',':''} + dic = {'...':'', ' & ':' ', ' = ': ' ', '?':'', '!':'', ' + ':' ', '"':'', ',':''} cleanartistalbum = helpers.latinToAscii(helpers.replace_all(albums[0]+' '+albums[1], dic)) @@ -35,9 +34,9 @@ def searchNZB(albumid=None, new=False): altterm = re.sub('[\.\-]', ' ', '%s %s' % (cleanartistalbum, year)).encode('utf-8') # Only use the year if the term could return a bunch of different albums, i.e. self-titled albums - if albums[0] in albums[1]: + if albums[0] in albums[1] or len(albums[0]) < 4 or len(albums[1]) < 4: term = altterm - + logger.info("Searching for %s since it was marked as wanted" % term) resultlist = []