diff -ru picard-0.12.1/file.py picard-0.12.1-preserve_timestamps/file.py --- picard-0.12.1/file.py 2009-11-01 19:10:27.000000000 +0100 +++ picard-0.12.1-preserve_timestamps/file.py 2009-12-01 00:07:35.000000000 +0100 @@ -24,6 +24,7 @@ import sys import re import traceback +from stat import ST_ATIME, ST_MTIME from PyQt4 import QtCore from picard.metadata import Metadata from picard.ui.item import Item @@ -143,7 +144,13 @@ """Save the metadata.""" new_filename = old_filename if not settings["dont_write_tags"]: - self._save(old_filename, metadata, settings) + try: + stat_data_for_old_filename = os.stat(old_filename) + self._save(old_filename, metadata, settings) + if settings["preserve_timestamps"]: + os.utime(old_filename, (stat_data_for_old_filename[ST_ATIME], stat_data_for_old_filename[ST_MTIME])) + except os.error: + self.log.debug("Couldn't preserve timestamp for %r", old_filename) # Rename files if settings["rename_files"] or settings["move_files"]: new_filename = self._rename(old_filename, metadata, settings) diff -ru picard-0.12.1/ui/options/tags.py picard-0.12.1-preserve_timestamps/ui/options/tags.py --- picard-0.12.1/ui/options/tags.py 2009-11-01 19:10:27.000000000 +0100 +++ picard-0.12.1-preserve_timestamps/ui/options/tags.py 2009-12-01 00:01:07.000000000 +0100 @@ -40,6 +40,7 @@ BoolOption("setting", "remove_ape_from_mp3", False), BoolOption("setting", "tpe2_albumartist", False), BoolOption("setting", "dont_write_tags", False), + BoolOption("setting", "preserve_timestamps", False), ] def __init__(self, parent=None): @@ -51,6 +52,7 @@ def load(self): self.ui.write_tags.setChecked(not self.config.setting["dont_write_tags"]) + self.ui.preserve_timestamps.setChecked(self.config.setting["preserve_timestamps"]) self.ui.clear_existing_tags.setChecked(self.config.setting["clear_existing_tags"]) self.ui.write_id3v1.setChecked(self.config.setting["write_id3v1"]) self.ui.write_id3v23.setChecked(self.config.setting["write_id3v23"]) @@ -66,6 +68,7 @@ def save(self): self.config.setting["dont_write_tags"] = not self.ui.write_tags.isChecked() + self.config.setting["preserve_timestamps"] = self.ui.preserve_timestamps.isChecked() self.config.setting["clear_existing_tags"] = self.ui.clear_existing_tags.isChecked() self.config.setting["write_id3v1"] = self.ui.write_id3v1.isChecked() self.config.setting["write_id3v23"] = self.ui.write_id3v23.isChecked() diff -ru picard-0.12.1/ui/ui_options_tags.py picard-0.12.1-preserve_timestamps/ui/ui_options_tags.py --- picard-0.12.1/ui/ui_options_tags.py 2009-11-01 19:10:27.000000000 +0100 +++ picard-0.12.1-preserve_timestamps/ui/ui_options_tags.py 2009-11-30 23:59:16.000000000 +0100 @@ -20,6 +20,9 @@ self.write_tags = QtGui.QCheckBox(TagsOptionsPage) self.write_tags.setObjectName("write_tags") self.vboxlayout.addWidget(self.write_tags) + self.preserve_timestamps = QtGui.QCheckBox(TagsOptionsPage) + self.preserve_timestamps.setObjectName("preserve_timestamp") + self.vboxlayout.addWidget(self.preserve_timestamps) self.rename_files = QtGui.QGroupBox(TagsOptionsPage) self.rename_files.setObjectName("rename_files") self.vboxlayout1 = QtGui.QVBoxLayout(self.rename_files) @@ -95,6 +98,7 @@ def retranslateUi(self, TagsOptionsPage): self.write_tags.setText(_("Write tags to files")) + self.preserve_timestamps.setText(_("Preserve timestamps of tagged files")) self.rename_files.setTitle(_("Before tagging")) self.clear_existing_tags.setText(_("Clear existing tags")) self.remove_id3_from_flac.setText(_("Remove ID3 tags from FLAC files"))