从 libsyn 下载 pdf 和 mp3

Download pdf and mp3 from libsyn

主要故事:

我姐姐想从 TalkToMeInKorean 学习韩语,她要求在上述网站上下载 PDFMP3 文件,我以为只有一个音频文件和 pdf 文件所以我接受了她的请求,所以我访问了网站,然后我意识到她想要的是整本电子书和有声读物,所以我决定制作一个自动下载文件的程序,而不是手动下载文件。


我的目标是从 libsyn 下载 PDFMP3 文件,但问题是永久 link 重定向到新生成的临时 link 并且无法访问WebClient.

例如:

如果我尝试访问 permanet link

http://media.libsyn.com/talktomeinkorean/ttmik-l1l1.pdf

此 link 将自动重定向到临时 link

http://hwcdn.libsyn.com/p/b/f/b/bfbd671eb80e82bc/ttmik-l1l1.pdf?c_id=1552118&expiration=1441957016&hwt=fcd7f215fc673ee08705ee41e27f016c

并显示 PDF 或 MP3 文件。

代码段:

static string _sourcePdf = "http://media.libsyn.com/talktomeinkorean/ttmik-l{0}l{1}.{2}";

public static void Download(Level level, int lesson, FileType fileType, string path)
{
    if (level == Level.One && lesson > 25)
    {
        return;
    }

    WebClient client = new WebClient();
    Uri _uri = new Uri(string.Format(_sourcePdf, (int)level, lesson, fileType));
    string _fileName = string.Format("{0}Level{1}-Lesson{2}.{3}", path, (int)level, lesson, fileType);
    client.DownloadFile(_uri, _fileName);
}

所以我的想法是先导航到 permanet link 并在重定向到临时 link 后,我将检索临时 link 并设置为新的 URI 以供下载。 -"Any idea how to implement this in WebClient?"

对于此类工作,我通常使用 wget。您可以用 C# 或任何其他方式生成命令字符串,然后让 wget 完成所有跟随重定向或重新连接的肮脏工作,...

要么在命令提示符中粘贴命令序列,要么通过 Process.Start();

运行

如果您使用 HttpWebRequest,它默认会遵循任何重定向 (https://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.allowautoredirect(v=vs.110).aspx)。