Downloading/storing 潜望镜直播
Downloading/storing Periscope live streaming broadcasts
我正在抓取推文,如果可用,将信息存储到外部资源(例如 Instagram 图片)。现在人们开始使用 Periscope,用户可以在推文中发送 links 到 Periscope 实时流媒体广播(也可以在接下来的 24 小时内使用)。 Here 是一个例子 link,但它可能 invalid/obsolete 很快。
有什么方法可以获取该广播,即将其作为视频文件存储在本地?
当我查看 Periscope 广播的源代码时,我得到了类似的信息:
<html>
<head>
...
<script src="https://assets.periscope.tv/assets/bugsnag-2.min.js"></script>
<script src="https://assets.periscope.tv/js/vendor.a8cd99eb89a488ec6ea465f57d3ad41bcd832eff.js"></script>
</head>
<body>
<div id="periscope-app" class="u-fullHeight"></div>
<script src="https://assets.periscope.tv/js/application.min.2a8176c317fb715fd0e6c2728cb04318c5c53941.js"></script>
</body>
所以一切基本上都是脚本化的。我试图查看 Javascript 文件,看看我是否可以至少以某种方式重建流 URL 或其他东西。但我没有成功。我还尝试使用 Google Chrome 来检查从侧面发出的请求。但这也没有给我带来任何进一步的进展。
编辑:这是我当前的 Phantom.js 脚本:
var page = require('webpage').create(),
system = require('system'),
t, address;
if (system.args.length === 1) {
console.log('Usage: periscope.js <periscope-url>');
phantom.exit();
}
page.onResourceRequested = function(request) {
console.log('Request ' + JSON.stringify(request, undefined, 4));
};
page.onResourceReceived = function(response) {
console.log('Receive ' + JSON.stringify(response, undefined, 4));
};
address = system.args[1];
page.settings.userAgent = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36';
page.open(address, function(status) {
if (status !== 'success') {
console.log('FAIL to load the address');
} else {
}
//phantom.exit();
});
当我使用 Google Chrome 的开发者工具时,我找到了 application/vnd.apple.mpegurl
请求,但它从未从 Phantom.js 脚本中弹出。
它在 Chrome 桌面上使用 Http Live Streaming (HLS),因此只需 proxy/sniff 类型 application/vnd.apple.mpegurl
的 HTTP 响应并获取请求 URL。我能够在 VLC 中观看您的直播。
您可以使用 Phantom.js.
奇幻最新版livestreamer(1.12.2)可以下载潜望镜视频
livestreamer https://www.periscope.tv/w/aKzPpDIxNDYxN3w2OTg1MTQxNZnjGACxw2Nyl6RSvdnX8T3EaE7z5mSvxfK_-uqS5SQv best --output output.mp4
如果您想以编程方式执行此操作,因为这是 Whosebug,python 中的潜望镜插件在这里:
https://github.com/chrippa/livestreamer/blob/develop/src/livestreamer/plugins/periscope.py
我正在抓取推文,如果可用,将信息存储到外部资源(例如 Instagram 图片)。现在人们开始使用 Periscope,用户可以在推文中发送 links 到 Periscope 实时流媒体广播(也可以在接下来的 24 小时内使用)。 Here 是一个例子 link,但它可能 invalid/obsolete 很快。
有什么方法可以获取该广播,即将其作为视频文件存储在本地?
当我查看 Periscope 广播的源代码时,我得到了类似的信息:
<html>
<head>
...
<script src="https://assets.periscope.tv/assets/bugsnag-2.min.js"></script>
<script src="https://assets.periscope.tv/js/vendor.a8cd99eb89a488ec6ea465f57d3ad41bcd832eff.js"></script>
</head>
<body>
<div id="periscope-app" class="u-fullHeight"></div>
<script src="https://assets.periscope.tv/js/application.min.2a8176c317fb715fd0e6c2728cb04318c5c53941.js"></script>
</body>
所以一切基本上都是脚本化的。我试图查看 Javascript 文件,看看我是否可以至少以某种方式重建流 URL 或其他东西。但我没有成功。我还尝试使用 Google Chrome 来检查从侧面发出的请求。但这也没有给我带来任何进一步的进展。
编辑:这是我当前的 Phantom.js 脚本:
var page = require('webpage').create(),
system = require('system'),
t, address;
if (system.args.length === 1) {
console.log('Usage: periscope.js <periscope-url>');
phantom.exit();
}
page.onResourceRequested = function(request) {
console.log('Request ' + JSON.stringify(request, undefined, 4));
};
page.onResourceReceived = function(response) {
console.log('Receive ' + JSON.stringify(response, undefined, 4));
};
address = system.args[1];
page.settings.userAgent = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36';
page.open(address, function(status) {
if (status !== 'success') {
console.log('FAIL to load the address');
} else {
}
//phantom.exit();
});
当我使用 Google Chrome 的开发者工具时,我找到了 application/vnd.apple.mpegurl
请求,但它从未从 Phantom.js 脚本中弹出。
它在 Chrome 桌面上使用 Http Live Streaming (HLS),因此只需 proxy/sniff 类型 application/vnd.apple.mpegurl
的 HTTP 响应并获取请求 URL。我能够在 VLC 中观看您的直播。
您可以使用 Phantom.js.
奇幻最新版livestreamer(1.12.2)可以下载潜望镜视频
livestreamer https://www.periscope.tv/w/aKzPpDIxNDYxN3w2OTg1MTQxNZnjGACxw2Nyl6RSvdnX8T3EaE7z5mSvxfK_-uqS5SQv best --output output.mp4
如果您想以编程方式执行此操作,因为这是 Whosebug,python 中的潜望镜插件在这里: https://github.com/chrippa/livestreamer/blob/develop/src/livestreamer/plugins/periscope.py