用 XBMC 整理电影收藏

随着硬盘上收集的电影多了起来,怎么管理它们就成了问题,我之前采用的方法很简单:先把电影下载到内置的硬盘上,然后把看过之后觉得值得保留的那些,或者还没来得及看,但内置硬盘空间不够的时候,转移到外置硬盘 (一般是大容量的仓库盘) 上。一般这样的仓库盘就直接在根目录下分个 Movies 目录,然后所有的电影每个占一个目录,全部按它们原来的名字移动到这个 Movies 下面。类似这样:

$ cd /Volumes/Foo/Movies
$ ls
Apocalypto.2006.720p.BluRay.x264-ESiR
Gake.no.ue.no.Ponyo.2008.BluRay.720p.DTSES.3Audio.x264-CHD
Lock.Stock.and.Two.Smoking.Barrels.1998.720p.BluRay.x264-CYBERMEN
Mission.Impossible.1996.720p.BluRay.DD.x264-ESiR
Surrogates.2009.720p.BluRay.x264.DTS-WiKi
...

而自从 XBMC 被移植到 Mac 上以来,就开始关注这个软件内置的多媒体管理功能,毕竟大部分多媒体文件不是从 iTunes Store 上买的,所以 FrontRow 并不那么合用,而这个软件从功能全面和界面美观的程度上看都合适。不过之前一直都在用 Plex 这个 fork 版本,因为 Plex 确实对 Mac 相关的一些细节处理的比较好点,但也只把它当作一个单纯的媒体播放器来用,并没有用到它的库管理功能。主要是因为 XBMC / Plex 要求的命名方式是“标题 (年份)”这样的类 imdb 方式,而我又想保留原有的目录名 (方便找字幕什么的),所以一直没有实施。

更新:发现 XBMC 还能根据目录下放置的 nfo 文件中的 imdb 地址来查找,而且这样更精确,所以假如你每个目录都保存了 nfo 文件,可以不必修改目录的命名。

最近想到的取巧做法是,对每个这样的电影目录,都在本地目录建立一个符合 XBMC 命名规范符号链接,然后让 XBMC 对这个本地目录进行索引。于是写了这么一个脚本 试了一下,果然很方便,效果如图:

这里简单介绍一下步骤,供有兴趣的朋友参考:

  1. 推荐使用最新的 XBMC 9.11 版本,Plex 最新的 0.8.5 版本这方面支持得不好;

  2. 图中使用的是 Rapier 这个 skin,需要单独下载,推荐使用;(下载后将解压得到的目录移动到 ~/Library/Application Support/XBMC/skin 目录下,然后在 XBMC 的 Settings -> Skin 中选择 Rapier)

  3. 下载前面提到的这个 makelib.py 脚本,使用方法如下:

    $ chmod +x makelib.py
    $ ./makelib.py /Volumes/Megatron/Movies ~/Movies
    Apocalypto.2006.720p generic viagra 100mg.BluRay.x264-ESiR -> '/Users/jjgod/Movies/Apocalypto (2006)'
    Gake.no.ue.no.Ponyo.2008.BluRay.720p.DTSES.3Audio.x264-CHD -> '/Users/jjgod/Movies/Gake no ue no Ponyo (2008)'
    Mission.Impossible.1996.720p.BluRay.DD.x264-ESiR -> '/Users/jjgod/Movies/Mission Impossible (1996)'
    Surrogates.2009.720p.BluRay.x264.DTS-WiKi -> '/Users/jjgod/Movies/Surrogates (2009)'
    The.Cove.2009.LIMITED.DVDRip.XviD-AMIABLE -> '/Users/jjgod/Movies/The Cove (2009)'
    ...
    

    这么做的效果是扫描 /Volumes/Megatron/Movies 目录下所有匹配的目录,在自己的主目录下的 Movies 目录中建立对应的符号链接。

    需要注意的是,这个脚本会要求所有内容都是目录,而且命名都是 Movie.Title.Year.*.*.*.-Group 的格式,中间一段可以任意,但必须包含年份和小组后缀,如果你手头存的目录名称不规范,必须先修改为这种格式,有的来源目录名称就不包含年份,这时可以根据 themoviedb.org 或者 imdb.com 提供的年份来自行添加。如果要求不那么规范,可以修改脚本来忽略小组。另外还要注意的是,Director’s Cut, DC, Unrated, Limited 这样的词必须放到年份后面,要么自己改改脚本,过滤掉它们也行。

  4. 打开 XBMC,进入 Videos 部分,选择 Add Source,用 Browse 选择这个 ~/Movies 目录,在 Set Content 中,选择用 themoviedb.org 作为内容来源,选上 Use folder names for lookup,如图:

  5. 然后 XBMC 就会开始索引所有创建好符号链接的目录,如果能在 themoviedb.org 上找到对应记录,就会自动下载。这个时候你切换到 XBMC 的 Movies 部分,就能看到如前面截图一样的效果了。选择其中任何一个,按回车就会开始播放。按 c 键或者用 Apple Remote 的 menu 按钮则可以打开上下文菜单,这里可以编辑选定项目的信息、删除特定项目 (如果导入的内容不对)、设置已经看过的标志等等。注意在 XBMC 扫描的时候不要断开存储实际内容的硬盘,否则 XBMC 会认为本地存的是无效的链接而直接跳过。如果出现个别电影名称不规范导致找不到对应记录的,可以在更名后按 c 选择重新扫描。

  6. 如果你下载了新的内容,可以再次以同样的参数运行前面提到的脚本,这个脚本会跳过已经添加的内容。另外,还可以在 XBMC 的 Settings -> Videos -> Library 部分选上 Update Library on Startup,这样每次启动 XBMC 的时候就会自动扫描你添加为库的目录,检查是否有新的内容了。