如何连接node.js应用程序与python脚本
How to connect node.js app with python script?
我已经在Meteor.js和使用Pafy的短python脚本中的节点应用程序。
import pafy
url = "https://www.youtube.com/watch?v=AVQpGI6Tq0o"
video = pafy.new(url)
allstreams = video.allstreams
for s in allstreams:
print(s.mediatype, s.extension, s.quality, s.get_filesize(), s.url)
连接它们的最有效方法是什么,所以python脚本从node.js应用程序获取url并返回输出到node.js?用Python而不是Meteor.js编码会更好吗?
嗯,有很多方法可以做到这一点,这取决于您的需求。一些选项可以是:
- 只使用stdin/stdout和子进程。在这种情况下,您只需要让Python脚本从stdin读取URL,并将结果输出到stdout,然后从Node执行脚本,可能使用child_process.spawn。我认为这是最简单的方法。
- 将Python部分作为服务器运行,假设是HTTP,但它可以是任何东西,只要您可以发送请求并获得响应。当你需要从Node获取数据时,你只需要向你的Python服务器发送一个HTTP请求,它就会在响应中返回你需要的数据。
在这两种情况下,您都应该以易于解析的格式返回数据,否则您将不得不编写额外的(无用的)逻辑来返回数据。使用JSON做这些事情非常普遍,也非常容易。例如,要让程序读取标准输入并将JSON写入标准输出,您可以以以下方式更改脚本(input()
用于Python 3,如果使用Python 2则使用raw_input()
)
import pafy
import json
url = input()
video = pafy.new(url)
data = []
allstreams = video.allstreams
for s in allstreams:
data.append({
'mediatype': s.mediatype,
'extension': s.extension,
'quality': s.quality,
'filesize': s.get_filesize(),
'url': s.url
})
result = json.dumps(data)
print(result)
下面是一个在NodeJS中使用Python脚本
的简短示例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();
如果你创建了一个窗口那么你就会在窗口外使用这段代码
var child = spawn('python', ['my_script.py']);
相关文章:
- Windows 8市场应用程序JS,访问远程XML文件
- 节点中的端点与快速应用程序.js之间的冲突
- 应用程序.js未在开发中加载(未捕获的引用错误:未定义 $)
- 有没有一种方法可以在IE8中解决我的Rails javascript应用程序.js的问题
- 如何获取应用程序.js其中不包括压缩代码
- 设置应用程序.js使用 git bash 错误
- 带帆的应用程序.js没有缓存浏览器
- 在应用程序.js中访问 io 对象
- 反应.js应用程序.js文件大小
- Windows商店应用程序JS:使用WinJS.xhr上传视频文件
- 加载应用程序.js在设备中准备好煎茶触摸科尔多瓦应用程序
- 多变量是节点应用程序.js
- 应用程序.js在部分内不起作用
- 不知道如何在节点中运行应用程序.js
- 节点应用程序.js如何使用其推荐的功能
- 应用程序.js在骨干中不起作用.js + 要求.js
- Ember-cli 创建/初始化应用程序.js两次
- 一些 CoffeeScript 不起作用,可能与应用程序.js和/或 JavaScript 插件有关
- 最佳实践:重构移动应用程序(JS、jquery、PHP)的工作流
- 带手柄的Pyramid应用程序.js:I don'这个视图不需要模板;如何禁用