Javascript 如何在YouTube API中侦听来自特定频道的新上传?

Javascript 如何在YouTube API中侦听来自特定频道的新上传?,javascript,node.js,youtube-api,Javascript,Node.js,Youtube Api,我正在制作一个Discord机器人,我希望它能够使用YouTube API从特定频道获取新上传 我在别处搜索过,但他们都说如何上传视频,而不是如何跟踪上传 这可能吗?我该怎么做 编辑:尝试了PubSubHubbub,但它非常混乱,我无法让它工作这里是一个构建在Node.js(v12)之上的示例,发布时使用了: 我写了一些评论来解释发生了什么: const fastfy=require('fastfy')({logger:true}) const xmlParser=require('fast-x

我正在制作一个Discord机器人,我希望它能够使用YouTube API从特定频道获取新上传

我在别处搜索过,但他们都说如何上传视频,而不是如何跟踪上传

这可能吗?我该怎么做


编辑:尝试了PubSubHubbub,但它非常混乱,我无法让它工作

这里是一个构建在Node.js(v12)之上的示例,发布时使用了:

我写了一些评论来解释发生了什么:

const fastfy=require('fastfy')({logger:true})
const xmlParser=require('fast-xml-parser')
const{URLSearchParams}=require('url')
const fetch=require('node-fetch')
//添加一个xml解析器
addContentTypeParser('application/atom+xml',{parseAs:'string'},函数(req,xmlString,done){
试一试{
const body=xmlParser.parse(xmlString{
attributeNamePrefix:“”,
忽略属性:false
})
完成(空,正文)
}捕获(错误){
完成(错误)
}
})
//此端点需要进行身份验证
fastfy.get(“/”,(请求、回复)=>{
reply.send(request.query['hub.challenge'])
})
//此端点将获得更新
fastfy.post(“/”,(请求、回复)=>{
log(JSON.stringify(request.body,null,2))
答复.代码(204)
回复。发送('ok')
})
快听(8080)
.然后(()=>{
//服务器启动后,订阅集线器
//参数列表:https://pubsubhubbub.github.io/PubSubHubbub/pubsubhubbub-core-0.4.html#rfc.section.5.1
const params=新的URLSearchParams()
params.append('hub.callback','https://1f3dd0c63e78.ngrok.io“)//您必须有一个公共终结点。请使用“ngrok http 8080”获取该终结点
params.append('hub.mode','subscribe')
params.append('hub.topic','https://www.youtube.com/xml/feeds/videos.xml?channel_id=UCfWbGF64qBSVM2Wq9fwrfrg')
params.append('hub.lease_seconds','')
params.append('hub.secret','')
params.append('hub.verify','sync')
params.append('hub.verify_token','')
返回获取('https://pubsubhubbub.appspot.com/subscribe', {
标题:{'content type':'application/x-www-form-urlencoded'},
正文:params,
方法:“发布”
})
})
。然后((res)=>{
log(`状态必须是204.Received${res.status}`)
//显示出错时的错误
if(res.status!==204){
返回res.text().then(txt=>console.log(txt))
}
})

我用我的通道ID做了一些测试,考虑到通知不是实时的,通常在几分钟后触发。

你看到这个问题了吗?