【发布时间】:2021-01-09 16:50:20
【问题描述】:
我遇到的问题是,在创建包含来自特定流预览的图像的列表后,我希望能够单击这些图像并将正在播放的流替换为来自图像的流。
在下面的代码中,我得到了播放 GTA V 和 GTA RP 的流媒体。有了这些信息,我得到了玩家的昵称,用他们的流的预览图像创建了 url。
...
function streamData(auth){
$.ajax({
type: 'GET',
url: 'https://api.twitch.tv/helix/search/channels?
query=FailyV&live_only=true', /** gta V id = 32982 */
dataType:'json',
headers: {
"Client-ID": 'id',
"Authorization": "Bearer "+auth
},
success: function(streamList) {
for (let i = 0; i < streamList['data'].length; i++){
if(streamList['data'][i]['game_id'] == 32982){
gtaList.push(streamList['data'][i]['display_name'])
$('#twitch-embed-low').append('<img id="thumbnail'+i+' " src="https://static-cdn.jtvnw.net/previews-ttv/live_user_'+streamList['data'][i]['display_name']+'-300x200.jpg">')
.on("click", function(e){
console.log(gtaList[i])
})
}
}
new Twitch.Embed("twitch-embed-main", {
width: '80%',
height: '80%',
channel: gtaList[0],
autoplay: false,
layout: "video",
// only needed if your site is also embedded on embed.example.com and othersite.example.com
parent: ["embed.example.com", "othersite.example.com"]
});
let test = $('#twitch-embed-low')
console.log(test[0])
},
error: function(data){
info = document.getElementById("info")
info.innerHTML = "ERROR: " + data["responseJSON"]["message"] + ". Make sure your CID and corresponding secret are set in the JavaScript."
}
})
}
...
如您所见,我已经对此进行了测试
...
$('#twitch-embed-low')
.append('<img id="thumbnail'+i+' " src="https://static-cdn.jtvnw.net/previews-
ttv/live_user_'+streamList['data'][i]['display_name']+'-300x200.jpg">')
.on("click", function(e){console.log(gtaList[i])})
...
但正如您可以想象的那样,它不起作用(正如我所怀疑的那样)并且每次我单击图像时,它都会形成完整的循环,因此它不会将正确的流放入阅读中,而是系统地放入最后一个而且我不是在谈论灾难性的表演,因为它会逐个加载每个流。
所以这个想法是,当您单击图像时,它会读取正确的流,但我不知道如何做到这一点。
【问题讨论】:
标签: javascript ajax twitch