2017-02-15 15 views
4

Я хотел бы использовать веб-сайт от R. На сайте http://soundoftext.com/, где я могу скачать WAV. файлы с аудиофайлами из заданного текста и язык (голос).Скачать mp3 файл

Есть два способа загрузить голос в 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) 
+0

Возможно, у вас будет лучшее время с пакетом 'rvest' и его функцией' html_form' – GGamba

+0

Спасибо @GGamba. Я изменил сообщение с помощью кода, используя вашу рекомендацию. Однако он все еще не работает. Что я делаю не так? –

ответ

1

Я не вижу ничего плохого в вашем подходе, и стоило попробовать. Это то, что я тоже напишу.
Страница несколько раздражает тем, что использует jquery для добавления новых divs при каждом запросе. Я до сих пор считаю, что должно быть возможно сделать с 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 вернуться, если мы просто GET что id когда может скачать файл.

+0

Еще раз спасибо @GGamba. Он может загружать аудио, однако файл не имеет длины, и он не может быть прослушан с любого игрока. В чем проблема? –

+0

Извиняюсь, я его не тестировал. Url в mp3-файле различается, попробуйте следующее: 'download.file (URLencode (paste0 (" http://soundoftext.com/static/sounds/ ", fd [[lang ']],'/', fd [['text']], '.mp3')), 'test.txt') ' – GGamba

+0

Он работает! Спасибо. Кстати, знаете ли вы, как решать слова с 'и 'общие на некоторых языках? –

0

Создатель звука текста здесь. Извините, мне потребовалось столько времени, чтобы найти этот пост.

Я только что перепроектировал Sound of Text, поэтому ваш синтаксический анализ html, вероятно, больше не будет работать. Однако, теперь есть API, который вы можете использовать, что должно значительно упростить вам.

Вы можете найти документацию здесь: https://soundoftext.com/docs

Я прошу прощения, если это не очень хорошо. Пожалуйста, дай мне знать, если возникнут какие-либо вопросы.