1

を使用して、iTunes のアルバムからすべてのトラックを取得したいと思いiTunes.hます。
現在、次の方法で現在のトラックのデータを取得します。

NSInteger trackID = iTunes.currentTrack.databaseID;
NSString *name  = iTunes.currentTrack.name;

そしてアルバム名:

NSString *trackAlbum = iTunes.currentTrack.album;

しかし、現在のトラックと同じアルバムにあるすべてのトラックを取得する方法がわかりません。
何か案は?ありがとう

4

3 に答える 3

1

iTunes 11 では、 iTunes Library Framework (10.9 osx) を 使用できます。

#import <iTunesLibrary/ITLibrary.h>
#import <iTunesLibrary/ITLibMediaItem.h>
#import <iTunesLibrary/ITLibAlbum.h>

NSError *error = nil;
ITLibrary *library = [ITLibrary libraryWithAPIVersion:@"1.0" error:&error];
if (library)
{
        NSArray *tracks = library.allMediaItems; //  <- NSArray of ITLibMediaItem
}
for (ITLibMediaItem *item in tracks) {
       NSLog(@"tracks %@",item.album.title);
}

ITLibMediaItemからアルバム情報を取得できます

于 2013-10-31T10:35:02.050 に答える
1

iTunes API の記述が不十分です。述語で配列をフィルタリングする必要があります。

NSArray *allSongs = [self allSongs];
NSArray *songsOfAlbum = [allSongs filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"album == %@ && artist == %@", albumString, artistString]];

次のようにすべての曲を取得できます。

// Get all Songs
- (NSArray *)allSongs {
    if (_allSongs == nil) {

        NSArray *tracksToPlay = [(SBElementArray *)[self.library tracks] get];

        // Sort by artist
        _allSongs = tracksToPlay;
    }

    return _allSongs;
}

- (iTunesLibraryPlaylist *)library {
    if (_library == nil) {
        // Whole Library
        iTunesSource *source = [[[[self.iTunes sources] get] filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"kind == %i", iTunesESrcLibrary]] objectAtIndex:0];
        // Only the Music
        _library = [[[[source playlists] get] filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"specialKind == %i", iTunesESpKMusic]] objectAtIndex:0];
    }

    return _library;
}
于 2012-12-28T21:54:26.413 に答える
-1

アートワークを取得する例として、私は github リポジトリを提出しました。これは、変更された上記のコードを使用する目的の C コードです。

    #import <Foundation/Foundation.h>
    #import <iTunesLibrary/ITLibrary.h>
    #import <iTunesLibrary/ITLibMediaItem.h>
    #import <iTunesLibrary/ITLibArtwork.h>
    int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSError *error = nil;
        ITLibrary *library = [ITLibrary libraryWithAPIVersion:@"1.0" error:&error];
        NSFileManager *fileManager = [NSFileManager defaultManager];

        if (library)
        {
            //NSArray *playlists = library.allPlaylists; //  <- NSArray of ITLibPlaylist
            NSArray *tracks = library.allMediaItems; //  <- NSArray of ITLibMediaItem
            [tracks enumerateObjectsUsingBlock:^(ITLibMediaItem*  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
                if (obj.artworkAvailable) {
                    ITLibArtwork* artWork=obj.artwork;
                    //NSData* d=artWork.imageData;
                    switch (artWork.imageDataFormat) {
                        case ITLibArtworkFormatPNG:{
                            NSURL* fileURL=obj.location;
                            NSString* fs=fileURL.lastPathComponent;
                            NSString* path=[fileURL.path stringByReplacingOccurrencesOfString:fs withString:@"Folder.png"];
                            if (![fileManager fileExistsAtPath:path]){
                                [artWork.imageData writeToFile:path atomically:YES];
                            }
                        }
                            break;
                        case ITLibArtworkFormatJPEG:{
                            NSURL* fileURL=obj.location;
                            NSString* fs=fileURL.lastPathComponent;
                            NSString* path=[fileURL.path stringByReplacingOccurrencesOfString:fs withString:@"Folder.jpg"];
                            if (![fileManager fileExistsAtPath:path]){
                                [artWork.imageData writeToFile:path atomically:YES];
                            }
                        }
                            break;
                        default:
                            break;
                    }
                }
            }];
            NSLog(@"End reached");
        }
    }
    return 0;
    }

https://github.com/ENees/iTunesGetImages

于 2016-02-18T14:32:39.017 に答える