6

我需要通过 iTunes Store 中的项目 ID 获取有关应用程序/歌曲/视频的信息。

我找到了这个

但它不适用于应用程序。

有公共 API 吗?

UPD:我可以使用此链接获取信息 ,但这不是结构化数据,它只是 iTunes 显示内容的标记。我不能依赖它 - 它可以随时更改并且难以解析,因为它没有一致的结构......

4

5 回答 5

7

Apple 现在似乎提供了一种返回 JSON 的更友好的搜索服务。注意:文档确实规定该 API 用于促进搜索结果(即,它是为附属链接而设计的)。

例如,如果您知道应用程序的 Apple ID,则获取有关应用程序的信息:

http://itunes.apple.com/lookup?id=[appleID]

通用关键字搜索

http://itunes.apple.com/search?term=[query]
于 2011-09-06T07:57:09.207 回答
4

据我所知(我已经做了很多研究),没有公共 API。

您是对的,HTML 不是语义结构化的,因此解析它不会很健壮。但我认为这是你唯一的选择。以下是一些可能有帮助的链接:-

解析评论的Python 脚本。

Ars Technica 文章:链接到明星:入侵 iTunes 以征求评论

iPhone 内部文章:抓取 AppStore 评论

于 2009-09-24T15:50:45.843 回答
2

iTunes 中有一个名为“iTunes Store Web Service Search API”的公共 API,它返回相当多的信息。其中一些记录在此处,但该文档不完整。

您可以使用 API 获取有关 iTunes Store 和 App Store 中所有待售商品的信息,包括艺术品的 url、直接到 iTunes 的链接、开发人员的所有应用程序等等。它非常强大,我很想找到更新的文档。

我目前正在iPhone Dev FAQ上写一篇文章来展示如何完成一些事情并扩展可用的文档。

于 2009-10-22T01:42:31.863 回答
1

我为自己编写了这个脚本。它没有经过优化或面向未来,但同时它对我有用......

<?php
ini_set('display_errors', false);

if(isset($_GET['appID']) && isset($_GET['format']))
{
    $appID = (int)stripslashes($_GET['appID']);
    $format = stripslashes($_GET['format']);

    $url = "http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=$appID&mt=8";
    $useragent = "iTunes/4.2 (Macintosh; U; PPC Mac OS X 10.2";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,$url); 
    curl_setopt($ch, CURLOPT_FAILONERROR, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
    curl_setopt($ch, CURLOPT_USERAGENT, $useragent);

    $result = curl_exec($ch); 
    curl_close($ch); 

    $temp = str_replace("&#189;","",strip_tags(substr($result,
                    strpos($result,"Average rating for the current version:"),
                    strpos($result,"Rate this application:")-strpos($result,"Average rating for the current version:"))));

    $temp1 = explode("ratings",$temp);

    if(strpos($temp1[2], "Average rating for all versions:"))
            $temp1[2] = substr($temp1[2],0,stripos($temp1[2],"Average rating for all versions:"));

    $temp1[2] = preg_replace('/\s\s+/', ' ', $temp1[2]);
    $temp2 = explode(" ",$temp1[2]);

    $ratings[0] = $temp2[1];
    $ratings[1] = $temp2[2];
    $ratings[2] = $temp2[3];
    $ratings[3] = $temp2[4];
    $ratings[4] = $temp2[5];

    if($format == "prettyPrint")
        printRatings($ratings);
    else if($format == "XML");
        getXML($ratings);
}
else
{
    echo "Enter the app id and format (http://iblackjackbuddy.com/getAppRatings.php?appID=###&format=###";  
}

function printRatings($ratings)
{
    echo "Five stars: " . $ratings[0];
    echo "<br>Four stars: " . $ratings[1];
    echo "<br>Three stars: " . $ratings[2];
    echo "<br>Two stars: " . $ratings[3];
    echo "<br>One star: " . $ratings[4];

    echo "<hr>Total ratings: " . getTotalRatings($ratings);

    echo "<br>Average rating: " . getAverageRating($ratings);
}

function getTotalRatings($ratings)
{
    $temp = 1;

    for($i=0; $i < count($ratings); ++$i) 
        $temp+=$ratings[$i];

    return $temp;
}

function getAverageRating($ratings)
{
    $totalRatings = getTotalRatings($ratings);
    return round(5*($ratings[0]/$totalRatings) 
                                + 4*($ratings[1]/$totalRatings) 
                                    + 3*($ratings[2]/$totalRatings)
                                        + 2*($ratings[3]/$totalRatings) 
                                            + 1*($ratings[4]/$totalRatings),2);
}

function getXML($ratings)
{   
    header('Content-type: text/xml');
    header('Pragma: public');        
    header('Cache-control: private');
    header('Expires: -1');
    echo '<?xml version="1.0" encoding="utf-8"?>';
    echo '<Rating>';
    echo '<FiveStars>'.$ratings[0].'</FiveStars>';
    echo '<FourStars>'.$ratings[1].'</FourStars>';
    echo '<ThreeStars>'.$ratings[2].'</ThreeStars>';
    echo '<TwoStars>'.$ratings[3].'</TwoStars>';
    echo '<OneStar>'.$ratings[4].'</OneStar>';
    echo '<TotalRatings>'.getTotalRatings($ratings).'</TotalRatings>';
    echo '<AverageRating>'.getAverageRating($ratings).'</AverageRating>';
    echo '</Rating>';
}

?>
于 2009-09-29T05:18:24.807 回答
1

您拥有的那个链接是 JSON!您在这里找到了解决方案。你只需要JSON.framework

于 2009-09-27T14:47:08.523 回答