@@ -450,7 +450,7 @@ class StorageStyle(object):
450450 """
451451
452452 def __init__ (self , key , as_type = six .text_type , suffix = None ,
453- float_places = 2 ):
453+ float_places = 2 , read_only = False ):
454454 """Create a basic storage strategy. Parameters:
455455
456456 - `key`: The key on the Mutagen file object used to access the
@@ -462,11 +462,16 @@ def __init__(self, key, as_type=six.text_type, suffix=None,
462462 - `float_places`: When the value is a floating-point number and
463463 encoded as a string, the number of digits to store after the
464464 decimal point.
465+ - `read_only`: When true, writing to this field is disabled.
466+ Primary use case is so wrongly named fields can be addressed
467+ in a graceful manner. This does not block the delete method.
468+
465469 """
466470 self .key = key
467471 self .as_type = as_type
468472 self .suffix = suffix
469473 self .float_places = float_places
474+ self .read_only = read_only
470475
471476 # Convert suffix to correct string type.
472477 if self .suffix and self .as_type is six .text_type \
@@ -1198,7 +1203,8 @@ def __set__(self, mediafile, value):
11981203 if value is None :
11991204 value = self ._none_value ()
12001205 for style in self .styles (mediafile .mgfile ):
1201- style .set (mediafile .mgfile , value )
1206+ if not style .read_only :
1207+ style .set (mediafile .mgfile , value )
12021208
12031209 def __delete__ (self , mediafile ):
12041210 for style in self .styles (mediafile .mgfile ):
@@ -1233,7 +1239,8 @@ def __get__(self, mediafile, _):
12331239
12341240 def __set__ (self , mediafile , values ):
12351241 for style in self .styles (mediafile .mgfile ):
1236- style .set_list (mediafile .mgfile , values )
1242+ if not style .read_only :
1243+ style .set_list (mediafile .mgfile , values )
12371244
12381245 def single_field (self ):
12391246 """Returns a ``MediaField`` descriptor that gets and sets the
0 commit comments