946
950
return [result autorelease];
953
+ (AudioMetadata *) metadataFromOggSpeexFile:(NSString *)filename
955
AudioMetadata *result;
956
TagLib::Ogg::Speex::File f ([filename fileSystemRepresentation], false);
958
TagLib::Ogg::XiphComment *xiphComment;
961
result = [[AudioMetadata alloc] init];
965
xiphComment = f.tag();
967
if(NULL != xiphComment) {
968
TagLib::Ogg::FieldListMap fieldList = xiphComment->fieldListMap();
969
NSString *value = nil;
972
tag = [self customizeOggFLACTag:@"ALBUM"];
973
if(fieldList.contains(tag)) {
974
value = [NSString stringWithUTF8String:fieldList[tag].toString().toCString(true)];
975
[result setAlbumTitle:value];
978
tag = [self customizeOggFLACTag:@"ARTIST"];
979
if(fieldList.contains(tag)) {
980
value = [NSString stringWithUTF8String:fieldList[tag].toString().toCString(true)];
981
[result setAlbumArtist:value];
984
tag = [self customizeOggFLACTag:@"GENRE"];
985
if(fieldList.contains(tag)) {
986
value = [NSString stringWithUTF8String:fieldList[tag].toString().toCString(true)];
987
[result setAlbumGenre:value];
990
tag = [self customizeOggFLACTag:@"DATE"];
991
if(fieldList.contains(tag)) {
992
value = [NSString stringWithUTF8String:fieldList[tag].toString().toCString(true)];
993
[result setAlbumDate:value];
996
tag = [self customizeOggFLACTag:@"DESCRIPTION"];
997
if(fieldList.contains(tag)) {
998
value = [NSString stringWithUTF8String:fieldList[tag].toString().toCString(true)];
999
[result setAlbumComment:value];
1002
tag = [self customizeOggFLACTag:@"TITLE"];
1003
if(fieldList.contains(tag)) {
1004
value = [NSString stringWithUTF8String:fieldList[tag].toString().toCString(true)];
1005
[result setTrackTitle:value];
1008
tag = [self customizeOggFLACTag:@"TRACKNUMBER"];
1009
if(fieldList.contains(tag)) {
1010
value = [NSString stringWithUTF8String:fieldList[tag].toString().toCString(true)];
1011
[result setTrackNumber:[NSNumber numberWithInt:[value intValue]]];
1014
tag = [self customizeOggFLACTag:@"COMPOSER"];
1015
if(fieldList.contains(tag)) {
1016
value = [NSString stringWithUTF8String:fieldList[tag].toString().toCString(true)];
1017
[result setAlbumComposer:value];
1020
tag = [self customizeOggFLACTag:@"TRACKTOTAL"];
1021
if(fieldList.contains(tag)) {
1022
value = [NSString stringWithUTF8String:fieldList[tag].toString().toCString(true)];
1023
[result setTrackTotal:[NSNumber numberWithInt:[value intValue]]];
1026
tag = [self customizeOggFLACTag:@"DISCNUMBER"];
1027
if(fieldList.contains(tag)) {
1028
value = [NSString stringWithUTF8String:fieldList[tag].toString().toCString(true)];
1029
[result setDiscNumber:[NSNumber numberWithInt:[value intValue]]];
1032
tag = [self customizeOggFLACTag:@"DISCTOTAL"];
1033
if(fieldList.contains(tag)) {
1034
value = [NSString stringWithUTF8String:fieldList[tag].toString().toCString(true)];
1035
[result setDiscTotal:[NSNumber numberWithInt:[value intValue]]];
1038
tag = [self customizeOggFLACTag:@"COMPILATION"];
1039
if(fieldList.contains(tag)) {
1040
value = [NSString stringWithUTF8String:fieldList[tag].toString().toCString(true)];
1041
[result setCompilation:[NSNumber numberWithBool:(BOOL)[value intValue]]];
1044
tag = [self customizeOggFLACTag:@"ISRC"];
1045
if(fieldList.contains(tag)) {
1046
value = [NSString stringWithUTF8String:fieldList[tag].toString().toCString(true)];
1047
[result setISRC:value];
1050
tag = [self customizeOggFLACTag:@"MCN"];
1051
if(fieldList.contains(tag)) {
1052
value = [NSString stringWithUTF8String:fieldList[tag].toString().toCString(true)];
1053
[result setMCN:value];
1056
// Maintain backwards compatibility for the following tags
1057
if(fieldList.contains("DISCSINSET") && nil == [result discTotal]) {
1058
value = [NSString stringWithUTF8String:fieldList["DISCSINSET"].toString().toCString(true)];
1059
[result setDiscTotal:[NSNumber numberWithInt:[value intValue]]];
1061
if(fieldList.contains("YEAR") && nil == [result albumDate]) {
1062
value = [NSString stringWithUTF8String:fieldList["YEAR"].toString().toCString(true)];
1063
[result setAlbumDate:value];
1065
if(fieldList.contains("COMMENT") && nil == [result albumComment]) {
1066
value = [NSString stringWithUTF8String:fieldList["COMMENT"].toString().toCString(true)];
1067
[result setAlbumComment:value];
1072
if(NULL != f.audioProperties() && 0 != f.audioProperties()->length())
1073
[result setLength:[NSNumber numberWithInt:f.audioProperties()->length()]];
1076
return [result autorelease];
949
1079
+ (AudioMetadata *) metadataFromMonkeysAudioFile:(NSString *)filename
951
1081
AudioMetadata *result = [[AudioMetadata alloc] init];