Вызов API Gracenote для получения программ / шоу - PullRequest
0 голосов
/ 12 февраля 2019

Я пытаюсь получить программы путем поиска запроса (название шоу) через API Gracenote.

Для справки: 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)

undefined

Название: не определено

ID: не определено

Ожидаемый результат: (Статус ответа: 200)

Показать

Название: Друзья

ID: SH001151270000

1 Ответ

0 голосов
/ 13 февраля 2019

Мне удалось разобраться, просмотрев массив.

Для примера кода Movies, предоставленного веб-сайтом, массив вернул путь свойства как ["" 0 ""]. EntityType, но для Программы оно возвращается как совпадений ["" 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);
    });
  }

enter image description here

...