【问题标题】:Download mp3 file下载 mp3 文件
【发布时间】:2017-07-04 09:28:57
【问题描述】:

我想使用 R 的网站。该网站是 http://soundoftext.com/,我可以在其中下载 WAV。带有来自给定文本和语言(语音)的音频的文件。

下载WAV语音有两个步骤: 1) 插入文本并选择语言。并提交 2) 在新窗口中,点击保存并选择文件夹。

到目前为止,我可以获取 xml 树,将其转换为列表并修改文本和语言的值。但是,我不知道如何将列表转换为 XML(使用新值)并执行它。然后,我也需要做第二步。

到目前为止,这是我的代码:

require(RCurl)
require(XML)
webpage <- getURL("http://soundoftext.com/")
webpage <- readLines(tc <- textConnection(webpage)); close(tc)
pagetree <- htmlTreeParse(webpage, error=function(...){}, useInternalNodes = TRUE)
x<-xmlToList(pagetree)
# Inserting word
x$body$div$div$div$form$div$label$.attrs[[1]]<-"Raúl"
x$body$div$div$div$form$div$label$.attrs[[1]]

# Select language
x$body$div$div$div$form$div$select$option$.attrs<-"es"
x$body$div$div$div$form$div$select$option$.attrs 

我已遵循this 方法,但“标签”出现错误。

更新:我只是尝试使用 rvest 下载音频文件,但是,它没有响应或触发任何东西。我做错了什么(失踪)?

url <- "http://soundoftext.com/"
s <- html_session(url)
f0 <- html_form(s)
f1 <- set_values(f0[[1]], text="Raúl", lang="es")
attr(f1, "type") <- "Submit"
s[["fields"]][["submit"]] <- f1
attr(f1, "Class") <- "save"

test <- submit_form(s, f1)

【问题讨论】:

  • 你可能会用rvest包和它的html_form函数玩得更好
  • 谢谢@GGamba。我已根据您的建议使用代码修改了帖子。但是,它仍然不起作用。我做错了什么?

标签: r xml list web rvest


【解决方案1】:

我认为您的方法没有任何问题,值得一试。这也是我要写的。
该页面有点烦人,因为它使用 jquery 在每个请求处附加新的 div。我仍然认为 rvest 应该可以做到这一点,但我发现了一个使用 httr 包的有趣解决方法:

library(httr)    

url <- "http://soundoftext.com/sounds"

fd <- list(
  submit = "save",
  text = "Banana", 
  lang="es"
)

resp<-POST(url, body=fd, encode="form")
id <- content(resp)$id

download.file(URLencode(paste0("http://soundoftext.com/sounds/", id)), destfile = 'test.mp3')

基本上当它向服务器发送POST请求时,一个ID回来,如果我们简单地GETid什么时候可以下载文件。

【讨论】:

  • 再次感谢@GGamba。它可以下载音频,但是文件没有长度,不能从任何播放器收听。有什么问题?
  • 抱歉,我没有测试过。 mp3 文件所在的 Url 不同,试试这个:download.file(URLencode(paste0("http://soundoftext.com/static/sounds/", fd[['lang']], '/', fd[['text']], '.mp3')), 'test.txt')
  • 有效!谢谢你。顺便说一句,您知道如何解决某些语言中常见的带有 ` 和 ´ 的单词吗?
  • 请考虑投票
  • 无法打开 URL 'soundoftext.com/static/sounds/it/Ra%FAl.mp3':HTTP 状态为 '404 NOT FOUND' 这是尝试将“Raúl”作为文本
【解决方案2】:

这里是文字声音的创造者。抱歉,我花了这么长时间才找到这篇文章。

我刚刚重新设计了 Sound of Text,因此您的 html 解析可能不再起作用。 不过,现在有一个 API 可供您使用,它应该会让您的事情变得相当容易。

您可以在此处找到文档:https://soundoftext.com/docs

如果不是很好,我很抱歉。如果您有任何问题,请告诉我。

【讨论】:

    猜你喜欢
    • 2013-01-09
    • 2014-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-30
    • 2011-05-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多