从opensubtitles.org下载文件

时间:2016-01-02 19:33:26

标签: c# file download

我需要通过我的应用程序从opensubtitles.org下载文件,该应用程序是用GTK#和C#编写的。该应用程序基于.NET 4.0框架。

首先,这是我使用的代码:

    var tZip = new FastZip();
    try {
        var tRequest = (HttpWebRequest)HttpWebRequest.Create(tDownloadUrl);
        var tZipResponse = (HttpWebResponse)tRequest.GetResponse();
        using (var tStream = tZipResponse.GetResponseStream()) {
            using (var tMemStream = new MemoryStream()) {
                tStream.CopyTo(tMemStream);
                var tTempPath = Globals.video_location + "OSD";
                Directory.CreateDirectory(tTempPath);
                tZip.ExtractZip(tMemStream, tTempPath, FastZip.Overwrite.Always, null, @"\.srt$", null, false, true);
                var tDirInfo = new DirectoryInfo(tTempPath);
                var tFileInfo = new FileInfo(Globals.location_video);

                var tSrtFile = tDirInfo.EnumerateFiles().FirstOrDefault();
                if (tSrtFile == null) {
                    writeLog("No .srt file found in zip..");
                    goto text;
                }
                writeLog("Downloaded and unpacked: " + tSrtFile.Name);
                File.Copy(tSrtFile.FullName, Globals.video_location+Globals.video_name+".srt", true);
                    Globals.savedTitle = Globals.video_location+Globals.video_name+".srt";
                // clean up..
                Directory.Delete(tTempPath, true);
                writeLog("Deleted temp folder.");
                return true;
            }
        }}

直到几天前,它确实运行良好,现在它返回了一堆html代码,而不是.zip文件。我甚至试过这样的事情:

WebClient client = new WebClient();
client.DownloadFile(link, @"OSD\test.zip");

但是一切都只是不断返回一堆html代码。 我通常尝试下载的链接是这样的: http://dl.opensubtitles.org/en/download/subad/4287952

如果您点击上面的链接,它只会将您重定向到该特定字幕的opensubtitles.org页面。但是,如果您右键单击该链接,然后选择"在新选项卡中打开"或者"在新窗口中打开"它会自动开始下载。 (在Firefox中测试过) 一旦我将该链接粘贴到" Internet Download Manager"应用程序,它将自动开始下载zip文件。

如果你能帮助我解决这个问题,我将非常感激。

亲切的问候。

1 个答案:

答案 0 :(得分:0)

我遇到了这个问题,因为我直接过滤了网站xml。就像来自这样的链接:opensubtitles.org example

在开始时它曾经运作良好,但后来他们在网站上改变了一些东西并且它停止了工作。所以我所做的就是建立在此之上:OSHandler

该处理程序库正在使用XML-RPC,所以我相信将来不会出现任何问题。