diff --git a/Info.plist b/Info.plist index 8d0ab32..cd38399 100644 --- a/Info.plist +++ b/Info.plist @@ -7,7 +7,7 @@ CFBundleExecutable ${EXECUTABLE_NAME} CFBundleGetInfoString - iTunesFS version 1.3.3, Copyright 2007-2015 Mulle kybernetiK. + iTunesFS version 1.3.4, Copyright 2007-2015 Mulle kybernetiK. CFBundleIconFile iTunesFS CFBundleIdentifier @@ -19,11 +19,11 @@ CFBundlePackageType APPL CFBundleShortVersionString - 1.3.3 + 1.3.4 CFBundleSignature ???? CFBundleVersion - 1.3.3 + 1.3.4 LSApplicationCategoryType public.app-category.utilities LSUIElement @@ -54,6 +54,8 @@ %(artist) / %(album) / %(trackNumber#00) %(name).%(ext.lowercaseString) M3UTrackFormat %(name) + UseM3U8 + ShowFormatFiles SymbolicLinks diff --git a/Version b/Version index 7af51ce..61b0bcc 100644 --- a/Version +++ b/Version @@ -1,3 +1,3 @@ MAJOR_VERSION=1 MINOR_VERSION=3 -SUBMINOR_VERSION=3 +SUBMINOR_VERSION=4 diff --git a/iTunesFSInfo.plist b/iTunesFSInfo.plist index 2fe9b14..8ebe495 100644 --- a/iTunesFSInfo.plist +++ b/iTunesFSInfo.plist @@ -9,6 +9,7 @@ PlaylistsTrackFormat = "%(playlistNumber#000) %(name).%(ext)"; "PlaylistsTrackFormat[folders]" = "%(artist) / %(album) / %(trackNumber#00) %(name).%(ext.lowercaseString)"; M3UTrackFormat = "%(name)"; + UseM3U8 = NO; ShowFormatFiles = YES; }; } diff --git a/iTunesM3UPlaylist.h b/iTunesM3UPlaylist.h index bbe9dd2..8018070 100644 --- a/iTunesM3UPlaylist.h +++ b/iTunesM3UPlaylist.h @@ -49,6 +49,9 @@ - (NSString *)name; - (NSString *)fileName; +- (NSString *)fileExtension; +- (NSStringEncoding)fileEncoding; + @end /* iTunesM3UPlaylist */ #endif /* __iTunesFS_iTunesM3UPlaylist_H */ diff --git a/iTunesM3UPlaylist.m b/iTunesM3UPlaylist.m index 6ad4df4..8edb2f4 100644 --- a/iTunesM3UPlaylist.m +++ b/iTunesM3UPlaylist.m @@ -39,6 +39,19 @@ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF @implementation iTunesM3UPlaylist +static BOOL useM3U8 = NO; +static NSString *fileExt = nil; + ++ (void)initialize { + static BOOL didInit = NO; + if (didInit) return; + didInit = YES; + + NSUserDefaults *ud = [NSUserDefaults standardUserDefaults]; + useM3U8 = [ud boolForKey:@"UseM3U8"]; + fileExt = [ud stringForKey:@"M3UPlaylistFileExtension"]; +} + - (id)initWithPlaylist:(iTunesPlaylist *)_playlist useRelativePaths:(BOOL)_useRelativePaths { @@ -61,9 +74,18 @@ - (NSString *)name { return [self->playlist name]; } - (NSString *)fileName { - return [[[self name] stringByAppendingPathExtension:@"m3u"] + return [[[self name] stringByAppendingPathExtension:[self fileExtension]] properlyEscapedFSRepresentation]; } +- (NSString *)fileExtension { + if (fileExt) + return fileExt; + return useM3U8 ? @"m3u8" : @"m3u"; +} +- (NSStringEncoding)fileEncoding { + return useM3U8 ? NSUTF8StringEncoding : NSWindowsCP1252StringEncoding; +} + - (NSArray *)tracks { return self->useRelativePaths ? [self->playlist tracks] : [self->playlist allTracks]; @@ -121,7 +143,7 @@ - (NSData *)fileContents { [rep appendString:location]; [rep appendString:@"\n"]; } - NSData *d = [rep dataUsingEncoding:NSUTF8StringEncoding]; + NSData *d = [rep dataUsingEncoding:[self fileEncoding]]; [rep release]; [formatter release]; return d;