下载podcast节目

提醒:请注意podcast关于版权的说明。


最近发现一些podcast的内容不错,而且已经结束或者很长时间不再更新,就希望能批量下载下来,以后慢慢听。Mac OS下没有找到合适的软件,只能用不同的工具拼凑。记录备忘。

我的要求如下:

  1. 能够批量下载。
  2. 根据feed,按目录组织文件。
  3. 能够按照标题修改文件名。

前两个要求简单,一般podcast客户端都支持。第3个少见些,但是,有这个功能才方便移动文件,脱离客户端播放。

除了iTunes,没有找到更好的免费软件。gPodder界面实在太差。Miro还不错,不过3年没有更新了,不支持中文目录和文件名。

最后用到的软件或者服务如下:

  1. http://www.podcrawler.com 可以搜索iTunes的Podcast目录,并且给出原始的RSS地址。

  2. 如果是要下载某一Feed的全部文件,可以用 podcastdl 。默认只下载mp3文件,如果是其他类型的音频文件,如m4a,可以修改源代码。

  3. 如果只下载最新的节目,可以用 upodder 。默认只下载最近30天的节目。说是可以通过参数指定天数,但是,无论是指定参数还是修改源代码,都不能下载全部节目(改了之后根本不下载)。

  4. 按照标题命名的功能只能自己写了。从Feed文件中提取标题和原始文件名,生成改名脚本。

    #!/usr/bin/env python
    # encoding: utf-8
    
    import os
    import sys
    import feedparser
    
    if __name__ == '__main__':
        os.chdir(os.path.abspath(os.path.dirname(__file__)))
    
    if len(sys.argv) < 2:
        print 'getname.py feedfilename outfilename'
        exit()
    elif len(sys.argv) == 2:
        feedname = sys.argv[1]
        outfilename = '%s.txt' % feedname
    else:
        feedname = sys.argv[1]
        outfilename = sys.argv[2]
    outfile = open(outfilename, 'w')
    d = feedparser.parse(feedname)
    for entry in d.entries:
        for l in entry['links']:
            if l['href'].endswith('mp3'):
                cmd = u'mv "%s" "%s.mp3"\n' % (l['href'].split('/')[-1], entry['title'])
                outfile.write(cmd.encode('utf8'))
    outfile.close()
    

另外,如果只知道某一podcast在iTunes的地址,可以用 itunes_podcast_rss 得到原始RSS地址。

Comments

Comments powered by Disqus