2015-02-08 2 views
1

Я пытаюсь загрузить mp3 из текста перевода google в API. Мой код работает с английским, но не с японскими. Загруженные аудиофайлы молчат. Кто-нибудь знает, что я делаю неправильно?Загрузите из Google Translate

Я использовал этот post для справки, но он работал с немецким, а не с японским.

using (var client = new WebClient()) 
     { 
      client.Headers.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"); 
      client.Headers.Add("Accept-Encoding", "gzip,deflate,sdch"); 
      client.Headers.Add("Accept-Language", "ja-JP,ja;q=0.8,en-US;q=0.6,en;q=0.4"); 
      client.Encoding = System.Text.Encoding.UTF8; 

      client.DownloadFile("http://translate.google.com/translate_tts?tl=ja&q=日本語", @"C:\test.mp3"); 
     } 

ответ

2

Я никогда не работал с этим API, но я предлагаю вам кодировать URL вы передаете в Client.DownloadFile с System.Uri.EscapeDataString(). Те японские символы в строке URL не выглядят хорошо.

Вот решение, оно работает :). Мне кажется, что вам не хватает User-Agent, Accept-Language и удалению части client.Encoding.

 using (var client = new WebClient()) 
     { 
      client.Headers.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"); 
      client.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.111 Safari/537.36"); 
      client.Headers.Add("Accept-Encoding", "gzip, deflate, sdch"); 
      client.Headers.Add("Accept-Language", "en-US,en;q=0.8"); 
      //client.Encoding = System.Text.Encoding.UTF8; 

      client.DownloadFile("http://translate.google.com/translate_tts?tl=ja&q=%E6%97%A5%E6%9C%AC%E8%AA%9E", @"test.mp3"); 
     } 
+0

Спасибо, я попробовал экранировать строку, но она по-прежнему загружает файл без звука. – Howell21

+0

Вот и все! Благодаря! – Howell21

Смежные вопросы