diff options
author | nicholas <nicholas@f01d2545-417e-4e96-918e-98f8d0dbbcb6> | 2007-01-14 21:23:43 +0000 |
---|---|---|
committer | nicholas <nicholas@f01d2545-417e-4e96-918e-98f8d0dbbcb6> | 2007-01-14 21:23:43 +0000 |
commit | 6399e736d71b5bc7f473e74fbb62178abc68b241 (patch) | |
tree | 7f608ee59dff33c8575dfb965726470263f7d27b /bindings/python | |
parent | 6b4010b7718a53002a54e4355ebd45a9ffa7fa67 (diff) | |
download | libgpod-6399e736d71b5bc7f473e74fbb62178abc68b241.tar.gz libgpod-6399e736d71b5bc7f473e74fbb62178abc68b241.tar.xz libgpod-6399e736d71b5bc7f473e74fbb62178abc68b241.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
Diffstat (limited to 'bindings/python')
-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 |