从谷歌翻译下载

时间:2015-02-08 04:53:26

标签: c#

我试图能够从谷歌翻译文本下载MP3来说API。我的代码适用于英语,但不适用于日语字符。下载的音频文件是静音的。有谁知道我做错了什么?

我使用此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");
        }

1 个答案:

答案 0 :(得分:2)

我从未使用过该API,但我建议您使用System.Uri.EscapeDataString()将您传递给Client.DownloadFile的网址编码。

表示网址字符串中的日文字符看起来不太好。

这是解决方案,它有效:)。在我看来,你错过了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");
        }