X-Git-Url: https://code.delx.au/notipod/blobdiff_plain/cbf749aac869dcb3bec9077a1d1051a6a461f33c..7d3f0713c45c6d6e933269fc3e24a446a0df7baf:/libsyncitunes.py diff --git a/libsyncitunes.py b/libsyncitunes.py index 4122891..c25ef26 100644 --- a/libsyncitunes.py +++ b/libsyncitunes.py @@ -167,16 +167,21 @@ def export_m3u(dry_run, dest, path_prefix, playlist_name, files): f.write("%s%s\n" % (path_prefix, filename)) f.close() -def sync(dry_run, source, dest, files): +def sync(dry_run, source, dest, files_to_copy): join = os.path.join logging.info("Calculating files to sync and deleting old files") source = source.encode("utf-8") dest = dest.encode("utf-8") filemap = {} - for f in files: - filemap[encode_filename(f)] = f.encode("utf-8") - files = set(filemap.keys()) + class SyncFile(object): pass + for f in files_to_copy: + sf = SyncFile() + sf.orig_filename = f.encode("utf-8") + sf.encoded_filename = encode_filename(f) + filemap[sf.encoded_filename.lower()] = sf + files_to_copy = set(filemap) + for dirpath, dirnames, filenames in os.walk(dest): full_dirpath = dirpath dirpath = strip_prefix(dirpath, dest) @@ -188,13 +193,14 @@ def sync(dry_run, source, dest, files): if not os.path.exists(join(dest, filename)): continue - if filename in files: - sourcestat = os.stat(join(source, filemap[filename])) + if filename.lower() in files_to_copy: + source_filename = filemap[filename.lower()].orig_filename + sourcestat = os.stat(join(source, source_filename)) deststat = os.stat(join(dest, filename)) same_time = abs(sourcestat.st_mtime - deststat.st_mtime) < 5 same_size = sourcestat.st_size == deststat.st_size if same_time and same_size: - files.remove(filename) + files_to_copy.remove(filename.lower()) yield "Keep: " + filename else: yield "Update: " + filename @@ -211,12 +217,15 @@ def sync(dry_run, source, dest, files): logging.info("Copying new files") - files = list(files) - files.sort() - for filename in files: - yield "Copy: " + filename + files_to_copy = list(files_to_copy) + files_to_copy.sort() + for filename in files_to_copy: + yield "Copy: " + filemap[filename].orig_filename if not dry_run: mkdirhier(os.path.dirname(join(dest, filename))) - shutil.copy2(join(source, filemap[filename]), join(dest, filename)) + shutil.copy2( + join(source, filemap[filename].orig_filename), + join(dest, filemap[filename].encoded_filename) + )