2010-04-14 24 views
2

我正在寫一個音樂參考應用程序,併爲每個專輯(從last.fm拉)想鏈接到ITMS(如果專輯在商店)。iTunes音樂商店鏈接製作 - 如何從我的應用程序內搜索?

iTunes鏈接製造商網絡工具http://apple.com/itunes/linkmaker/非常適合獲取已知專輯的鏈接,但我需要從我的應用程序中以編程方式訪問它。

NSLog blogpost這是從2003年但referenced more recently in another question here似乎提供了唯一的解決辦法我已經遇到到目前爲止,這將查詢提交:

phobos.apple.com/WebObjects/MZSearch。 WOA/WA/advancedSearchResults?

將「itms://」放在它之前,鏈接將在iTunes中運行,將「http://」放在它之前,鏈接將在Camino中運行(Safari有時會回傳格式錯誤的XML錯誤)。是

是重要的標籤如下:

  • songTerm - 歌名
  • artistTerm - 藝術家的名字
  • albumTerm - 專輯名稱
  • composerTerm - 作曲家名字
  • 名詞 - 所有字段

建議使用http://而不是itms://服務器將返回結果的XML文檔,而不是打開iTunes,但是以任何方式直接發送到iTunes。

是否有可能找回結果列表?

回答

5

我正在使用LinkMaker獲取關於我正在播放的歌曲的iTunes詳細信息。 爲此,我發現LinkMaker能夠一次返回json數據和1個結果。

我使用這個網址來perfom我的查詢:

http://ax.phobos.apple.com.edgesuite.net/WebObjects/MZStoreServices.woa/wa/itmsSearch?lang=1&output=json&country=%@&term=%@&media=%@&limit=1

下面是參數,你需要給:

> country : store country term : could 
> contains artist name, song name, album 
> media : music 

對於爲例,如果你想有關於「U2」的歌曲「One」的詳細信息,請在此處輸入正確的網址:

http://ax.phobos.apple.com.edgesuite.net/WebObjects/MZStoreServices.woa/wa/itmsSearch?lang=1&output=json&country=US&term=U2%20one&media=music&limit=1

然後你會收到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]; 
} 

希望這會有所幫助。

蒂埃裏

編輯:最後一個文檔可用:

http://www.apple.com/itunes/affiliates/resources/documentation/itunes-store-web-service-search-api.html

+0

感謝此使用示例。出於好奇,您是否總是在您的應用中使用美國商店,或者您是否根據用戶切換? – prendio2 2010-04-20 15:02:44

+0

請看我更新的答案。 – thierryb 2010-04-20 15:06:23

0

該文檔適用於iTunes Store Web Service Search API(pdf),雖然陳舊且不完整,似乎是實現這一目標的方法。

雖然這是一個很痛苦的經歷,因爲聯盟計劃的其他部分都是如此。

相關問題