iTunes Music Store Link Maker - как искать в моем приложении?
Я пишу справочное приложение для музыки и для каждого альбома (взятого из last.fm) хотел бы добавить ссылку на ITMS (если альбом находится в магазине).
Веб-инструмент iTunes для создателя ссылок http://apple.com/itunes/linkmaker/ отлично подходит для получения ссылок на известный альбом, но мне нужен программный доступ к нему из моего приложения.
Этот пост NSLog, который был написан в 2003 году, но упоминался совсем недавно в другом вопросе, кажется, предлагает единственное решение, с которым я сталкивался до сих пор, предлагая отправить запрос:
phobos.apple.com/WebObjects/MZSearch.woa/wa/advancedSearchResults?
Поставьте перед ним "itms://", и ссылка будет работать в iTunes, а перед ним "http://", и ссылка будет работать в Camino (Safari иногда выдает некорректную XML-ошибку).
Вот важные теги:
- songTerm - название песни
- artistTerm - имя исполнителя
- albumTerm - название альбома
- composerTerm - имя композитора
- термин - все поля
Предполагается, что при использовании http: // вместо itms: // сервер вернет XML-документ с результатами вместо открытия iTunes, но в любом случае меня отправят прямо в iTunes.
Можно ли вернуть список результатов?
2 ответа
Я использую LinkMaker, чтобы получить iTunes информацию о песне, которую я играю. Для этого я обнаружил, что LinkMaker может возвращать данные JSON, а также 1 результат за раз.
Я использую этот URL для выполнения моего запроса:
Вот параметры, которые вы должны дать:
> country : store country term : could
> contains artist name, song name, album
> media : music
Например, если вы хотите получить подробную информацию о песне под названием "One" от "U2", вот правильный URL:
Тогда вы получите данные JSON, как это:
{
"resultCount":1,
"results": [
{"wrapperType":"track", "mediaType":"song", "artistName":"U2", "itemParentName":"Achtung Baby", "itemParentCensoredName":"Achtung Baby", "itemCensoredName":"One", "itemName":"One", "artistLinkUrl":"http://itunes.apple.com/us/artist/u2/id78500?uo=4", "artworkUrl60":"http://a1.phobos.apple.com/us/r1000/009/Features/32/9a/60/dj.mfynlttx.60x60-50.jpg", "artworkUrl100":"http://a1.phobos.apple.com/us/r1000/009/Features/32/9a/60/dj.mfynlttx.100x100-75.jpg", "country":"USA", "currency":"USD", "discCount":1, "discNumber":1, "itemExplicitness":"notExplicit", "itemLinkUrl":"http://itunes.apple.com/us/album/one/id368713?i=368617&uo=4", "itemPrice":"1.29000", "itemParentExplicitness":"notExplicit", "itemParentLinkUrl":"http://itunes.apple.com/us/album/one/id368713?i=368617&uo=4", "itemParentPrice":"9.99000", "previewUrl":"http://a1.phobos.apple.com/us/r1000/019/Music/b6/8c/c5/mzm.epegonxg.aac.p.m4a", "primaryGenreName":"Rock", "trackCount":12, "trackNumber":3, "trackTime":276042}]
}
Затем вам нужно декодировать эти данные JSON.
NSDictionary *jsonResultsParsed = [jsonResults JSONValue];
И, наконец, получить то, что вы хотите:
NSDictionary *songDetailsDict = [[jsonResultsParsed objectForKey:@"results"] objectAtIndex:0];
Если вы хотите определить страну пользователя, вам нужно определить ее страну, используя ее локаль, вот код, который я использую:
- (NSString *)getUserCountry
{
NSLocale *locale = [NSLocale currentLocale];
return [locale objectForKey: NSLocaleCountryCode];
}
Надеюсь это поможет.
Thierry
Изменить: Наконец, документ доступен:
Этот документ для API поиска веб-службы iTunes Store (pdf), хотя и старый и неполный, кажется, является способом достижения этой цели.
Однако это болезненный опыт, как и любая другая часть партнерской программы.