如何修改网站,烟台建设,作文网高中,搞网站建设赚钱不文章目录 调用谷歌翻译接口#xff0c;尝试了几种方案#xff0c;都提示跨域不行第一种#xff08;通过js代码获取音频文件的Blob对象#xff0c;提示跨域了#xff09;代码结果 第二种#xff08;尝试新窗打开音频url#xff0c;404#xff0c;估计也是跨域了#xf… 文章目录 调用谷歌翻译接口尝试了几种方案都提示跨域不行第一种通过js代码获取音频文件的Blob对象提示跨域了代码结果 第二种尝试新窗打开音频url404估计也是跨域了代码结果 第三种在ubuntu虚拟机服务上调用接口下载google音频虚拟机没开代理暂时没法搞但应该是可行的因为windows上可以用curl下 改成百度翻译接口使用上面的方法1一样也跨域了使用上面的方法三搞不定貌似百度翻译的音频接口做了限制 参考文章[为什么 ping 不通 google.com](https://www.amjun.com/205.html) 调用谷歌翻译接口尝试了几种方案都提示跨域不行
第一种通过js代码获取音频文件的Blob对象提示跨域了
代码
bodyh3 styledisplay:inline;{{ element_data[elements][current_element_index][en] }}/h3!-- 调用谷歌接口播放音频 --button onclickplayAudio()播放音频/button
/bodyscript// 调用谷歌接口播放音频提示cross origin了可能是谷歌的限制不能从同一个页面打开尝试新窗打开function get_audio_url(word) {var url https://translate.google.com/translate_tts?ieUTF-8tlenclienttw-obq word;return fetch(url).then(response response.blob()).then(blob URL.createObjectURL(blob));}function playAudio() {var word {{ element_data[elements][current_element_index][en] }}; // 获取要播放的单词get_audio_url(word).then(audioUrl {var audio new Audio(audioUrl);audio.play();}).catch(error {console.error(播放音频时出错:, error);});}
/script上述代码中get_audio_url函数使用fetch来获取音频文件的Blob对象并使用URL.createObjectURL来创建音频文件的URL。然后playAudio函数会在按钮点击时调用get_audio_url函数来获取音频URL并使用new Audio创建一个新的音频对象并播放音频。
结果
不行貌似提示跨域估计是谷歌那边做了限制只允许在谷歌翻译的官方网站上使用而不允许从其他域名直接访问 第二种尝试新窗打开音频url404估计也是跨域了
代码
bodyh3 styledisplay:inline;{{ element_data[elements][current_element_index][en] }}/h3!-- 调用谷歌接口播放音频 --button onclickplayAudio()播放音频/button
/bodyscript// 尝试新窗打开跳转到新窗提示404了url输入栏重新Enter下就好了估计还是跨域问题function playAudio() {var word {{ element_data[elements][current_element_index][en] }}; // 获取要播放的单词var audioUrl https://translate.google.com/translate_tts?ieUTF-8tlenclienttw-obq encodeURIComponent(word);window.open(audioUrl, _blank);}
/script上述代码中playAudio函数会在按钮点击时获取要播放的单词并构建谷歌音频的URL。然后使用window.open函数打开一个新的网页并将音频URL作为参数传递给window.open函数。这样新的网页将会打开并播放谷歌音频。
结果
点过去提示404了但是在url输出窗口重新Enter一下就能访问了 第三种在ubuntu虚拟机服务上调用接口下载google音频虚拟机没开代理暂时没法搞但应该是可行的因为windows上可以用curl下
我本来想先用curl在ubuntu虚拟机上请求一下的奈何还不知道怎么给虚拟机设置科学上网一下就卡住了
curl -o audio.mp3 https://translate.google.com/translate_tts?ieUTF-8tlenclienttw-obqfeather然后我只能在windows上测试我先从curl官网下来curl工具
https://curl.se/windows/下好解压后直接在bin目录右键打开控制台输入curl -o audio.mp3 https://translate.google.com/translate_tts?ieUTF-8tlenclienttw-obqfeather 然后音频就被下载下来了 说明谷歌翻译只是做了跨域限制而已不用浏览器跨域请求还是能直接获取到音频的。
但是问题还是那个我的ubuntu虚拟机没有设置代理没法直接访问谷歌我还是改成百度翻译的接口试试吧。
改成百度翻译接口
使用上面的方法1一样也跨域了
bodyh3 styledisplay:inline;{{ element_data[elements][current_element_index][en] }}/h3!-- 调用谷歌接口播放音频 --button onclickplayAudio()播放音频/button
/bodyscriptfunction get_audio_url(word) {var url https://fanyi.baidu.com/gettts?lanentext encodeURIComponent(word) spd3sourceweb;return fetch(url).then(response response.blob()).then(blob URL.createObjectURL(blob));}function playAudio() {var word {{ element_data[elements][current_element_index][en] }}; // 获取要播放的单词get_audio_url(word).then(audioUrl {var audio new Audio(audioUrl);audio.play();}).catch(error {console.error(播放音频时出错:, error);});}
/script使用上面的方法三搞不定貌似百度翻译的音频接口做了限制
浏览器敲链接亲测可用返回的是.ts的音频
https://fanyi.baidu.com/gettts?lanentextfeatherspd3sourceweb但是用代码下载。。。
我靠搞了半天都没法下下来一点数据都拿不到明天问问x工z工咋弄
参考文章
为什么 ping 不通 google.com
我这边用clash配置了虚拟机代理服务后虚拟机上也可以用curl下载谷歌音频了。 curl -x 127.0.0.1:7890 -o audio.mp3 https://translate.google.com/translate_tts?ieUTF-8tlenclienttw-obqfeather