diff options
author | Nicholas Piper <nicholas@users.sourceforge.net> | 2007-01-14 21:23:43 +0000 |
---|---|---|
committer | Nicholas Piper <nicholas@users.sourceforge.net> | 2007-01-14 21:23:43 +0000 |
commit | 073aed6e3d7a071727082dbd6fb58fafbc26a5cf (patch) | |
tree | 7f608ee59dff33c8575dfb965726470263f7d27b | |
parent | c7473a3ae0e2f2fc601f7cb98353b0a9cc98e538 (diff) | |
download | libgpod-073aed6e3d7a071727082dbd6fb58fafbc26a5cf.tar.gz libgpod-073aed6e3d7a071727082dbd6fb58fafbc26a5cf.tar.xz libgpod-073aed6e3d7a071727082dbd6fb58fafbc26a5cf.zip |
Support sha1_hash entries in the extended database as well as md5_hash. Thanks to Todd for noticing.
git-svn-id: https://gtkpod.svn.sf.net/svnroot/gtkpod/libgpod/trunk@1367 f01d2545-417e-4e96-918e-98f8d0dbbcb6
-rw-r--r-- | bindings/python/gtkpod.py | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/bindings/python/gtkpod.py b/bindings/python/gtkpod.py index 54a68dc..83f460b 100644 --- a/bindings/python/gtkpod.py +++ b/bindings/python/gtkpod.py @@ -47,20 +47,23 @@ def write(filename, db, itunesdb_file): file.write('\n') write_pair("itunesdb_hash", sha1_hash(itunesdb_file)) - write_pair("version", "0.88.1") + write_pair("version", "0.99.9") for track in db: write_pair("id", track['id']) if not track['userdata']: track['userdata'] = {} - track['userdata']['filename_ipod'] = track.ipod_filename() + track['userdata']['filename_ipod'] = track['ipod_path'] try: - del track['userdata']['md5_hash'] - except IndexError: - pass - if track['userdata'].has_key('filename_locale') and not track['userdata'].has_key('md5_hash'): + hash_name = 'sha1_hash' + del track['userdata'][hash_name] + except KeyError: + # recent gpod uses sha1_hash, older uses md5_hash + hash_name = 'md5_hash' + del track['userdata'][hash_name] + if track['userdata'].has_key('filename_locale') and not track['userdata'].has_key(hash_name): if os.path.exists(track['userdata']['filename_locale']): - track['userdata']['md5_hash'] = sha1_hash( + track['userdata'][hash_name] = sha1_hash( track['userdata']['filename_locale']) [write_pair(i[0],i[1]) for i in track['userdata'].items()] @@ -115,7 +118,13 @@ def parse(filename, db, itunesdb_file=None): tracks_by_id[id]['userdata'] = ext_block else: for track in db: + # make a dict to allow us to find each track by the sha1_hash tracks_by_sha[sha1_hash(track.ipod_filename())] = track for ext_block in ext_data.values(): - tracks_by_sha[ext_block['md5_hash']]['userdata'] = ext_block + try: + track = tracks_by_sha[ext_block['sha1_hash']] + except KeyError: + # recent gpod uses sha1_hash, older uses md5_hash + track = tracks_by_sha[ext_block['md5_hash']] + track['userdata'] = ext_block |