Javascript 如何使用python脚本连接node.js应用程序?

Javascript 如何使用python脚本连接node.js应用程序?,javascript,python,node.js,meteor,pafy,Javascript,Python,Node.js,Meteor,Pafy,我使用Meteor.js中的节点应用程序和简短的python脚本 导入pafy url=”https://www.youtube.com/watch?v=AVQpGI6Tq0o" 视频=pafy.new(url) allstreams=video.allstreams 对于allstreams中的s: 打印(s.mediatype、s.extension、s.quality、s.get_filesize()、s.url)好吧,有很多方法可以做到这一点,这取决于您的要求。 一些选择可以是: 只需

我使用Meteor.js中的节点应用程序和简短的python脚本

导入pafy
url=”https://www.youtube.com/watch?v=AVQpGI6Tq0o"
视频=pafy.new(url)
allstreams=video.allstreams
对于allstreams中的s:

打印(s.mediatype、s.extension、s.quality、s.get_filesize()、s.url)
好吧,有很多方法可以做到这一点,这取决于您的要求。 一些选择可以是:

  • 只需使用stdin/stdout和一个子进程。在这种情况下,您只需要让Python脚本从stdin读取URL,并将结果输出到stdout,然后从节点执行脚本,可能使用。这是我认为最简单的方法
  • 将Python部分作为服务器运行,比如说HTTP,但它可以是任何东西,只要您可以发送请求并获得响应。当您需要来自节点的数据时,只需向Python服务器发送一个HTTP请求,该请求将在响应中返回您需要的数据
  • 在这两种情况下,您都应该以易于解析的格式返回数据,否则您将不得不编写额外的(无用的)逻辑来获取数据。将JSON用于这些事情是非常常见和容易的。 例如,要让程序读取stdin并将JSON写入stdout,可以通过以下方式更改脚本(
    input()
    适用于Python3,如果使用Python2,请使用
    raw\u input()

    下面是一个非常简短的使用Python脚本的NodeJS示例

    var spawn = require('child_process').spawn;
    
    var child = spawn('python', ['my_script.py']);
    
    child.stdout.on('data', function (data) {
        var parsedData = JSON.parse(data.toString());
        console.log(parsedData);
    });
    
    child.on('close', function (code) {
        if (code !== 0) {
            console.log('an error has occurred');
        }
    });
    
    child.stdin.write('https://www.youtube.com/watch?v=AVQpGI6Tq0o');
    child.stdin.end();
    
    它看起来可以从纯JS模块中检索大部分所需信息。
    var spawn = require('child_process').spawn;
    
    var child = spawn('python', ['my_script.py']);
    
    child.stdout.on('data', function (data) {
        var parsedData = JSON.parse(data.toString());
        console.log(parsedData);
    });
    
    child.on('close', function (code) {
        if (code !== 0) {
            console.log('an error has occurred');
        }
    });
    
    child.stdin.write('https://www.youtube.com/watch?v=AVQpGI6Tq0o');
    child.stdin.end();