Cog/FileTree/ContainedNode.m
Christopher Snowhill 925a3502fa FileTree: Fix handling of metadata with multiple values
Goody, my metadata formatting comes back to bite me.

Signed-off-by: Christopher Snowhill <kode54@gmail.com>
2025-01-03 02:20:42 -08:00

62 lines
1.6 KiB
Objective-C

//
// ContainedNode.m
// Cog
//
// Created by Vincent Spader on 10/15/07.
// Copyright 2007 __MyCompanyName__. All rights reserved.
//
#import "ContainedNode.h"
#import "CogAudio/AudioMetadataReader.h"
@implementation ContainedNode
- (BOOL)isLeaf {
return YES;
}
- (void)setURL:(NSURL *)u {
[super setURL:u];
if([u fragment]) {
NSDictionary *metadata = [AudioMetadataReader metadataForURL:u];
NSString *title = nil;
NSString *artist = nil;
if(metadata) {
id _title = [metadata valueForKey:@"title"];
id _artist = [metadata valueForKey:@"artist"];
if([_title isKindOfClass:[NSArray class]]) {
NSArray *titlearray = _title;
title = [titlearray componentsJoinedByString:@", "];
} else if([_title isKindOfClass:[NSString class]]) {
title = _title;
} else if([_title isKindOfClass:[NSNumber class]]) {
NSNumber *titlenumber = _title;
title = [NSString stringWithFormat:@"%@", titlenumber];
}
if([_artist isKindOfClass:[NSArray class]]) {
NSArray *artistarray = _artist;
artist = [artistarray componentsJoinedByString:@", "];
} else if([_artist isKindOfClass:[NSString class]]) {
artist = _artist;
} else if([_artist isKindOfClass:[NSNumber class]]) {
NSNumber *artistnumber = _artist;
artist = [NSString stringWithFormat:@"%@", artistnumber];
}
}
if(title && [title length]) {
if(artist && [artist length]) {
display = [[u fragment] stringByAppendingFormat:@": %@ - %@", artist, title];
} else {
display = [[u fragment] stringByAppendingFormat:@": %@", title];
}
} else {
display = [u fragment];
}
}
}
@end