Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否可以在不通过API进行身份验证的情况下检索youtube视频的描述?_Javascript_Api_Youtube_Greasemonkey - Fatal编程技术网

Javascript 是否可以在不通过API进行身份验证的情况下检索youtube视频的描述?

Javascript 是否可以在不通过API进行身份验证的情况下检索youtube视频的描述?,javascript,api,youtube,greasemonkey,Javascript,Api,Youtube,Greasemonkey,我正试图编写一个Greasemonkey脚本来提取Youtube视频的描述,并将其插入另一个使用嵌入式视频的站点 我发现实现这一点的唯一方法是使用API调用视频的所有数据。我认为这是一种非常复杂的方法,所以我想创建一个不需要身份验证的脚本,并且可以删除描述 有什么方法可以做到这一点吗?使用https://www.youtube.com/get_video_info服务,返回一个由各种视频参数(包括标题)组成的兼容&分隔字符串 function getYoutubeVideoTitle(id, c

我正试图编写一个Greasemonkey脚本来提取Youtube视频的描述,并将其插入另一个使用嵌入式视频的站点

我发现实现这一点的唯一方法是使用API调用视频的所有数据。我认为这是一种非常复杂的方法,所以我想创建一个不需要身份验证的脚本,并且可以删除描述


有什么方法可以做到这一点吗?

使用
https://www.youtube.com/get_video_info
服务,返回一个由各种视频参数(包括
标题
)组成的兼容
&
分隔字符串

function getYoutubeVideoTitle(id, callback) {
    GM_xmlhttpRequest({
        method: 'GET',
        url: 'https://www.youtube.com/get_video_info?video_id=' + id,
        onload: function(r) {
            var encoded = (r.responseText.match(/(^|&)title=(.*?)(&|$)/) || [])[2] || '';
            callback(decodeURIComponent(encoded.replace(/\+/g, ' ')));
        }
    });
}

Specsavers锅炉广告-2017

要获取对象中的所有参数,请按
&
拆分响应,并按
=
将每个元素拆分为键/值:

function getYoutubeVideoData(id, callback) {
    GM_xmlhttpRequest({
        method: 'GET',
        url: 'https://www.youtube.com/get_video_info?video_id=' + id,
        onload: function(response) {
            var data = {};
            response.responseText.split('&').forEach(function(param) {
                param = param.split('=');
                data[param[0]] = decodeURIComponent(param[1].replace(/\+/g, ' '));
            });
            callback(data);
        }
    }
}

注释

在现代浏览器中,提供了更方便的访问:

        onload: (r) => callback(new URLSearchParams(r.responseText).get('title'));

代码假定响应中没有重复的键,这对于get_video_info服务是正确的

要在响应中获取视频下载链接和更多信息,请修改请求URL:

    GM_xmlhttpRequest({
        method: 'GET',
        url: 'https://www.youtube.com/get_video_info?video_id=' + id +
             '&hl=en_US&html5=1&el=embedded&eurl=' + encodeURIComponent(location.href),

使用URLSearchParams,我是否会像往常一样使用Greasemonkey将响应定位在我希望它出现在网页中的位置?URLSearchParams只是一种方便,可以升级手动字符串拆分,它与其他任何内容无关。
        onload: (r) => {
            var data = {};
            for (var entry of new URLSearchParams(r.responseText).entries())
                data[entry[0]] = entry[1];
            callback(data);
        }
    GM_xmlhttpRequest({
        method: 'GET',
        url: 'https://www.youtube.com/get_video_info?video_id=' + id +
             '&hl=en_US&html5=1&el=embedded&eurl=' + encodeURIComponent(location.href),