Gracenote API 调用以获取节目/节目

Posted

技术标签:

【中文标题】Gracenote API 调用以获取节目/节目【英文标题】:Gracenote API call to get Programs/Shows 【发布时间】:2019-07-05 21:24:24 【问题描述】:

我正在尝试通过 Gracenote API 搜索查询(节目名称)来获取节目。

供参考: http://developer.tmsapi.com/io-docs (v1.1/programs/search)

使用他们网站上列出的示例(获取电影),效果很好。

http://developer.tmsapi.com/Sample_Code

<html>
    <head>
        <style type="text/css">
            .tile 
                display: inline-block;
                border: 2px;
                padding: 4px;
                text-align: left;
                font-size: 15px;
                width:250px;
                font-family: Avenir;
                color: white;
            
            </style>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
        <script>

            // construct the url with parameter values
            var apikey = "xxxxx";
            var baseUrl = "http://data.tmsapi.com/v1.1";
            var showtimesUrl = baseUrl + '/movies/showings';
            var zipCode = "78701";
            var d = new Date();
            var today = d.getFullYear() + '-' + (d.getMonth()+1) + '-' + d.getDate();

            $(document).ready(function() 

                              // send off the query
                              $.ajax(
                                     url: showtimesUrl,
                                     data:     startDate: today,
                                     zip: zipCode,
                                     jsonp: "dataHandler",
                                     api_key: apikey
                                     ,
                                     dataType: "jsonp",
                                     );
                              );

                              // callback to handle the results
                              function dataHandler(data) 
                                  $(document.body).append('<h2>Found ' + data.length + ' movies showing within 5 miles of ' + zipCode+'</h2>');
                                  $.each(data, function(index, movie) 
                                         var movieData = '<div class="tile"><img src="http://fanc.tmsimg.com/' + movie.preferredImage.uri + '?api_key='+apikey+'"><br/>';
                                         movieData += 'Title:' + movie.title + '<br>';
                                         movieData += 'ID: ' + movie.tmsId + '<br>';
                                         if (movie.ratings) movieData += 'Rating: ' + movie.ratings[0].code;
                                         else movieData += 'Rating: ' + 'N/A';
                                         $(document.body).append(movieData);
                                         );
                              

            </script>
    </head>
    <body>
    </body>
</html>

当我尝试修改它(以获取程序)时,我无法检索任何数据,全部返回为未定义。

<html>
    <head>
        <style type="text/css">
            .tile 
                display: inline-block;
                border: 2px;
                padding: 4px;
                text-align: left;
                font-size: 15px;
                width:250px;
                font-family: Avenir;
                color: white;
            
            </style>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
        <script>

            // construct the url with parameter values
            var apikey = "xxxxx";
            var baseUrl = "http://data.tmsapi.com/v1.1";
            var showtimesUrl = baseUrl + '/programs/search';
            var zipCode = "78701";
            var showName = 'Friends';

            $(document).ready(function() 

                              // send off the query
                              $.ajax(
                                     url: showtimesUrl,
                                     data:     q: showName,
                                     jsonp: "dataHandler",
                                     api_key: apikey
                                     ,
                                     dataType: "jsonp",
                                     );
                              );

                              // callback to handle the results
                              function dataHandler(data) 
                                  $(document.body).append('<h2>Found ' + data.length + ' movies showing within 5 miles of ' + zipCode+'</h2>');
                                  var programs = data.hits;
                                  $.each(data, function(index, program) 
                                         var programData = '<div class="tile">' + program.entityType + '<br/>';
                                         programData += 'Title:' + program.title + '<br>';
                                         programData += 'ID: ' + program.tmsId + '<br>';
                                         $(document.body).append(programData);
                                         );
                              

            </script>
    </head>
    <body>
    </body>
</html>

实际结果:(响应状态:200)

未定义

标题:未定义

ID:未定义

预期结果:(响应状态:200)

显示

标题:朋友

ID:SH001151270000

【问题讨论】:

由于我们无法请求对此进行测试,您能否编辑问题以包含您从 API 收到的响应示例 另外,我强烈建议您更新您正在使用的 jQuery 版本。 1.5 已经过时 8 年了 感谢 Rory,我忘了从他们网站的示例代码中更新 jQuery。将更新我上面的帖子。附言。我给你发了一封电子邮件。 【参考方案1】:

我可以通过查看数组来对其进行排序。

对于网站提供的 Movies 示例代码,该数组返回属性路径为 [""0""].entityType,但对于 Program,它返回为 hits[""0 ""].program.entityType.

所以我将 data 替换为 data.hits 并将 program.entityType 替换为 program.program.entityType 等.

  function dataHandler(data) 
    $(document.body).append('<h2>Found ' + data.hits.length + ' shows.</h2>');
    $.each(data.hits, function(index, program) 
      var programData = '<div class="tile">' + program.program.entityType + '<br/>';
      programData += 'Title:' + program.program.title + '<br>';
      programData += 'ID: ' + program.program.tmsId + '<br>';
      $(document.body).append(programData);
    );
  

【讨论】:

以上是关于Gracenote API 调用以获取节目/节目的主要内容,如果未能解决你的问题,请参考以下文章

Paypal API 调用以获取订单详情

亚马逊 API 调用以获取页面上列出的产品数量

Facebook credits Graph API 调用以获取订单详细信息不适用于测试用户

PayPal API 调用以获取所有经常性付款资料“支付”我的帐户

需要帮助使用 Alamofire 进行 POST 调用以检索 XML

垃圾回收器非诚勿扰已被所有嘉宾关闭,他听了这是什么浪费后