【发布时间】:2018-05-19 12:33:45
【问题描述】:
有一个语言列表,但我找不到动态获取它的 API 调用。 https://cloud.google.com/speech-to-text/docs/languages
【问题讨论】:
标签: google-cloud-platform speech-to-text
有一个语言列表,但我找不到动态获取它的 API 调用。 https://cloud.google.com/speech-to-text/docs/languages
【问题讨论】:
标签: google-cloud-platform speech-to-text
没有用于执行此操作的 API。无论哪种方式,您都可以使用代码列出可用的语言,方法是阅读您发送的链接的源代码,然后对其进行解析以列出它们。
如果你想使用 Python,你可以阅读源代码:
import requests
SourceCode=requests.get('https://cloud.google.com/speech-to-text/docs/languages').text
对于解析,我将使用 Python 库 pandas [1],语言在 <table></table> 中。
【讨论】:
这是我在 Javascript 中使用服务器的方法。
我只想提取英文代码,所以我的一些后续步骤可能与您想要的不同,但下面是我的 JS,然后是 php,因为您无法从 JS 中的另一个网站解析客户端
Javascript 代码(返回一个承诺):
const languageCodes = await (async () => {
let phpFetched = await fetch('grab_languages.php');
phpFetched = await phpFetched.text();
let htmlDoc = (new DOMParser()).parseFromString(phpFetched, "text/html");
htmlDoc = Array.from(htmlDoc
.querySelector('#lang-table-container')
.querySelectorAll('table tr'))
.slice(1)
.map(el => Array.from(el.querySelectorAll('td')))
.filter(children => children[2].innerHTML === 'Default' &&
children[1].innerHTML.split('-')[0] === 'en')
.map(children => {
return {
code: children[1].innerHTML,
description: (/\(([^)]+)\)/).exec(children[0].innerHTML)[1],
};
})
.reduce((acc, curr) =>
({ ...acc, [curr.code]: curr.description }), {});
return htmlDoc
})();
PHP 代码(我已将文件称为grab_languages.php
<?php
$url = "https://cloud.google.com/speech-to-text/docs/languages";
$ch = curl_init( $url );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
$response = curl_exec($ch);
curl_close($ch);
echo $response;
exit;
?>
我应该注意到我的代码的灵感来自这些:
如果您对另一个 Python 实现感兴趣,您可能还会发现 this 很有帮助
【讨论】: