我需要通过我的应用程序从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文件。
如果你能帮助我解决这个问题,我将非常感激。
亲切的问候。
答案 0 :(得分:0)
我遇到了这个问题,因为我直接过滤了网站xml。就像来自这样的链接:opensubtitles.org example
在开始时它曾经运作良好,但后来他们在网站上改变了一些东西并且它停止了工作。所以我所做的就是建立在此之上:OSHandler
该处理程序库正在使用XML-RPC,所以我相信将来不会出现任何问题。