如何使用Youtube API v3显示搜索结果的视频时长?

时间:2019-07-04 15:47:53

标签: javascript youtube-api

我能够从Youtube API返回搜索结果。

如何显示搜索结果的持续时间?我在json数据中的任何地方都看不到持续时间。

function ySearch(e) {
    let searchYt = searchTermYt.value;
    search = encodeURIComponent(searchYt);
    let urlYt = 'https://www.googleapis.com/youtube/v3/search/?part=snippet&type=video&key=' + apiYt + '&q=' + searchYt + '&maxResults=5';

    if (e.target.token) { 
        urlYt += '&pageToken='+e.target.token;
    }
    fetch(urlYt).then(function (response) {
        return response.json() 
    }).then(function (data) {
        // check for page token to enable or disable page buttons
        if(data.prevPageToken){ 
            btnPrev.token = data.prevPageToken;
            btnPrev.disabled = false;
        }else{
            btnPrev.token = false;
            btnPrev.disabled = true;
        }
        if(data.nextPageToken){ 
            btnNext.token = data.nextPageToken;
            btnNext.disabled = false;
        }else{
            btnNext.token = false;
            btnNext.disabled = true;
        }
        return data.items.map(function (x) {
            return {
                title: x.snippet.title,
                // use id in URL to watch video 
                id: x.id.videoId

            }
        })
    }).then(function (array) {
        renderData(array);
    }).catch(function (error) {
        console.log(error);
    })
}

1 个答案:

答案 0 :(得分:1)

搜索结果不包含视频时长。您必须从搜索结果中获取videoID,然后使用videoID和部件参数“ contentDetails”再次调用Videos:list

示例:https://www.googleapis.com/youtube/v3/videos?part=contentDetails&id=gVLsVj7BebE&key=API_KEY

将返回

data() {
    return {
        tasks: [
            {'id': 0, 'title': 'One', isChecked: false},
            {'id': 1, 'title': 'Two', isChecked: true},
            {'id': 2, 'title': 'Three', isChecked: false}
        ],
    }
},
computed: {
    message() {
        return "<!-- Tasks Page -->";
    }
},
methods: {
    onDrawerButtonTap() {
        utils.showDrawer();
    },
    onLabelTap(event) {
        alert('You clicked on ' + event.index) // I can access `event.index` here
            .then(() => {
                console.log("Alert dialog closed.");
            });
    },
    onCheckChange(event) {
        this.isChecked = event.value;
        console.log(this.isChecked);
        console.log(event.index); // but I can't access it here
    }