javascript
  • search
  • youtube-api
  • playlists
  • 2017-02-09 197 views 0 likes 
    0

    嗨,朋友正在尝试使用youtube api v3搜索获取所有结果。这里是代码..无法获取使用页面令牌的第二页搜索令牌youtube api搜索

    <!doctype html> 
        <html> 
        <head> 
         <title>Search</title> 
        </head> 
        <body> 
        <div id="buttons"> 
         <label> <input id="query" value='cats' type="text"/><button id="search-button" onclick="search()">Search</button></label> 
    </div> 
    <div id="search-container"> 
    </div> 
        <button id="prev-button" class="paging-button" onclick="previousPage(document.getElementById('query').value);">Previous Page</button> 
        <button id="next-button" class="paging-button" onclick="nextPage(document.getElementById('query').value);">Next Page</button><br><br> 
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script> 
    <script src="search.js"></script> 
    <script src="https://apis.google.com/js/client.js?onload=googleApiClientReady"></script> 
    </body> 
    

    这里是脚本代码..

    var search,nextPageToken, prevPageToken; 
    
    function search(pageToken) { 
        var q = $('#query').val(); 
        gapi.client.load('youtube', 'v3', function() { 
        gapi.client.setApiKey('Api-key'); 
        var request = gapi.client.youtube.search.list({ 
        q: q, 
        part: 'snippet', 
        type: 'playlist', 
        maxResults: 50, 
        order: 'viewCount' 
        }); 
         if (pageToken) { 
         request.pageToken = pageToken; 
        } 
        request.execute(function(response) { 
         nextPageToken = response.result.nextPageToken; 
        var nextVis = nextPageToken ? 'visible' : 'hidden'; 
        $('#next-button').css('visibility', nextVis); 
        prevPageToken = response.result.prevPageToken 
        var prevVis = prevPageToken ? 'visible' : 'hidden'; 
        $('#prev-button').css('visibility', prevVis); 
         var playlistItems = response.result.items; 
         if (playlistItems) { 
         $.each(playlistItems, function(index, item) { 
         displayResult(item.id); 
         }); 
         } else { 
         $('#search-container').html('Sorry you have no uploaded videos'); 
         } 
         }); 
        }); 
        } 
        function displayResult(videoSnippet) { 
         var title = videoSnippet.playlistId; 
         $('#search-container').append(title + '<br>'); 
         } 
    
    
        function nextPage(val) {; 
         var search_val=val; 
         search(nextPageToken,search_val); 
         } 
    
        // Retrieve the previous page of videos in the playlist. 
        function previousPage(listid) { 
         var search=listid; 
         search(prevPageToken,search); 
        } 
    

    我试图获取使用pagetokens的所有结果,但我不能把所有的结果我得到我同样的50个结果repeatedly..How可以得到使用搜索

    回答

    1

    要使用pageToken参数确切的结果,你应该在这里把您在得到字符串代码你的第一组结果。

    例如,我用Search: list与这些参数:

    - part: snippet 
    - maxResults: 6 
    - order: viewCount 
    - type: playlist 
    

    https://developers.google.com/apis-explorer/#p/youtube/v3/youtube.search.list?part=snippet&maxResults=6&order=viewCount&type=playlist&_h=4&

    下面是结果

    • 流行音乐视频
    • 热门ñ嗷嗷 - 俄罗斯
    • 热门眼下
    • 英国官方40强单曲榜 - 2017" 年2月4日
    • 重要的视频
    • 热门音乐2017年 - 最好的歌曲播放列表

    现在,如果我们使用maxResults: 3在这个请求中,我们得到了预期的前3个。

    https://developers.google.com/apis-explorer/#p/youtube/v3/youtube.search.list?part=snippet&maxResults=3&order=viewCount&type=playlist&_h=2&

    { 
    "kind": "youtube#searchListResponse", 
    "etag": "\"uQc-MPTsstrHkQcRXL3IWLmeNsM/ytSWQ-kg4VSK7qMICh0IzyEBj9k\"", 
    "nextPageToken": "CAMQAA", 
    "regionCode": "PH", 
    "pageInfo": { 
        "totalResults": 1000000, 
        "resultsPerPage": 3 
    }, 
    "items": [ 
        { 
        "kind": "youtube#searchResult", 
        "etag": "\"uQc-MPTsstrHkQcRXL3IWLmeNsM/WsiG1obELyLKGKhqpeHgqP3Zr0g\"", 
        "id": { 
        "kind": "youtube#playlist", 
        "playlistId": "PLFgquLnL59alCl_2TQvOiD5Vgm1hCaGSI" 
        }, 
        "snippet": { 
        "publishedAt": "2013-11-20T16:21:03.000Z", 
        "channelId": "UC-9-kyTW8ZkZNDHQJ6FgpwQ", 
        "title": "Popular Music Videos", 
        "description": "", 
        "thumbnails": { 
        "default": { 
         "url": , 
         "width": 120, 
         "height": 90 
        }, 
        "medium": { 
         "url": ", 
         "width": 320, 
         "height": 180 
        }, 
        "high": { 
         "url": "", 
         "width": 480, 
         "height": 360 
        } 
        }, 
        "channelTitle": "Music", 
        "liveBroadcastContent": "none" 
        } 
        }, 
        { 
        "kind": "youtube#searchResult", 
        "etag": "\"uQc-MPTsstrHkQcRXL3IWLmeNsM/HSVXUxTS3sWhu_EXXqL19b-n3VE\"", 
        "id": { 
        "kind": "youtube#playlist", 
        "playlistId": "PLgMaGEI-ZiiZ0ZvUtduoDRVXcU5ELjPcI" 
        }, 
        "snippet": { 
        "publishedAt": "2014-01-13T16:24:21.000Z", 
        "channelId": "UCtxxJi5P0rk6rff3_dCfQVw", 
        "title": "Popular Right Now - Russia", 
        "description": "", 
        "thumbnails": { 
        "default": { 
         "url": "", 
         "width": 120, 
         "height": 90 
        }, 
        "medium": { 
         "url": "", 
         "width": 320, 
         "height": 180 
        }, 
        "high": { 
         "url": "", 
         "width": 480, 
         "height": 360 
        } 
        }, 
        "channelTitle": "Popular on YouTube - Russia", 
        "liveBroadcastContent": "none" 
        } 
        }, 
        { 
        "kind": "youtube#searchResult", 
        "etag": "\"uQc-MPTsstrHkQcRXL3IWLmeNsM/smJq1QWQX4SzucjteOJ91pLe96Y\"", 
        "id": { 
        "kind": "youtube#playlist", 
        "playlistId": "PLrEnWoR732-BHrPp_Pm8_VleD68f9s14-" 
        }, 
        "snippet": { 
        "publishedAt": "2014-01-03T17:55:03.000Z", 
        "channelId": "UCF0pVplsI8R5kcAqgtoRqoA", 
        "title": "Popular Right Now", 
        "description": "", 
        "thumbnails": { 
        "default": { 
         "url": "", 
         "width": 120, 
         "height": 90 
        }, 
        "medium": { 
         "url": "", 
         "width": 320, 
         "height": 180 
        }, 
        "high": { 
         "url": "", 
         "width": 480, 
         "height": 360 
        } 
        }, 
        "channelTitle": "Popular on YouTube", 
        "liveBroadcastContent": "none" 
        } 
        } 
    ] 
    } 
    

    您将在上述结果的参数的“nextPageToken”注意到:“CAMQAA”,这是你需要在你的下一个请求供应串码拿到下一页,或者在这个例子中得到接下来的三个结果:

    • 英国官方40强选拔榜 - 第4楼月‧日2017" 年
    • 重要的视频
    • 热门音乐2017年 - 最好的歌曲播放列表

    https://developers.google.com/apis-explorer/#p/youtube/v3/youtube.search.list?part=snippet&maxResults=3&order=viewCount&pageToken=CAMQAA&type=playlist&_h=3&

    { 
    "kind": "youtube#searchListResponse", 
    "etag": "\"uQc-MPTsstrHkQcRXL3IWLmeNsM/MUqIBto7KPYKqDBGqUboyp81FPs\"", 
    "nextPageToken": "CAYQAA", 
    "prevPageToken": "CAMQAQ", 
    "regionCode": "PH", 
    "pageInfo": { 
        "totalResults": 1000000, 
        "resultsPerPage": 3 
    }, 
    "items": [ 
        { 
        "kind": "youtube#searchResult", 
        "etag": "\"uQc-MPTsstrHkQcRXL3IWLmeNsM/yRymKW4Nn45KqMRXNQAMKnKeUB8\"", 
        "id": { 
        "kind": "youtube#playlist", 
        "playlistId": "PL2vrmw2gup2Jre1MK2FL72rQkzbQzFnFM" 
        }, 
        "snippet": { 
        "publishedAt": "2015-01-04T15:21:08.000Z", 
        "channelId": "UCchuF2Q0QhYzeUShQUm1yzQ", 
        "title": "The Official UK Top 40 Singles Chart - 4th February 2017", 
        "description": "The Official UK Top 40 Singles Chart [Update Every Week]", 
        "thumbnails": { 
        "default": { 
         "url": "", 
         "width": 120, 
         "height": 90 
        }, 
        "medium": { 
         "url": "", 
         "width": 320, 
         "height": 180 
        }, 
        "high": { 
         "url": "", 
         "width": 480, 
         "height": 360 
        } 
        }, 
        "channelTitle": "MUSIC CHARTS", 
        "liveBroadcastContent": "none" 
        } 
        }, 
        { 
        "kind": "youtube#searchResult", 
        "etag": "\"uQc-MPTsstrHkQcRXL3IWLmeNsM/JCiR47eVFaF_o19Ax9V5_K2_Ux8\"", 
        "id": { 
        "kind": "youtube#playlist", 
        "playlistId": "PL7XlqX4npddfrdpMCxBnNZXg2GFll7t5y" 
        }, 
        "snippet": { 
        "publishedAt": "2015-12-30T03:21:42.000Z", 
        "channelId": "UCZj9kF7Wu2IE_-DzbQZwCEw", 
        "title": "important videos", 
        "description": "", 
        "thumbnails": { 
        "default": { 
         "url": "", 
         "width": 120, 
         "height": 90 
        }, 
        "medium": { 
         "url": "", 
         "width": 320, 
         "height": 180 
        }, 
        "high": { 
         "url": "", 
         "width": 480, 
         "height": 360 
        } 
        }, 
        "channelTitle": "eljolto", 
        "liveBroadcastContent": "none" 
        } 
        }, 
        { 
        "kind": "youtube#searchResult", 
        "etag": "\"uQc-MPTsstrHkQcRXL3IWLmeNsM/BBQhDUu22HGejcoP1QvArM4001U\"", 
        "id": { 
        "kind": "youtube#playlist", 
        "playlistId": "PLw-VjHDlEOgvtnnnqWlTqByAtC7tXBg6D" 
        }, 
        "snippet": { 
        "publishedAt": "2015-06-07T17:54:39.000Z", 
        "channelId": "UCo7i93EtJhQub3SDKrtIAPA", 
        "title": "Music Hits 2017 - Best Songs Playlist", 
        "description": "Follow this playlist on Spotify: https:xxx/DZ8tw6 Follow this playlist on Deezer: https:xxxxJmKIaH \"Music can change the world because it can change ...", 
        "thumbnails": { 
        "default": { 
         "url": , 
         "width": 120, 
         "height": 90 
        }, 
        "medium": { 
         "url": "", 
         "width": 320, 
         "height": 180 
        }, 
        "high": { 
         "url": "", 
         "width": 480, 
         "height": 360 
        } 
        }, 
        "channelTitle": "#RedMusic: HotMusicCharts", 
        "liveBroadcastContent": "none" 
        } 
        } 
    ] 
    } 
    

    然后再次使用"nextPageToken": string获得下一个页面结果。

    希望这些信息对您有所帮助。

    相关问题