打造一个自动追新番的下载机:补完篇

前面两篇我们讨论了如何使用Raspberry Pi和Flexget实现自动订阅新番并下载的功能,在使用的过程中我们还可以通过一些技巧来实现一些其他的功能,这次给大家介绍几个我自己用到的例子。

我家有个高清播放机,它也兼做NAS(网络共享服务器),里面安装了一块1TB的硬盘。Raspberry Pi是用SD卡作为存储介质的,存储空间比较有限,那么能不能把文件自动下载到NAS里面去呢?当然可以,只要让Transmission的下载完成目录指向NAS中的相应位置就行了,大家知道Linux中的mount和symlink是很强大的,我们可以通过它们来实现这个功能。

首先我们将NAS中用于存放下载文件的目录挂载到Raspberry Pi中。先创建一个目录作为挂载的容器,并将这个目录的权限设置为所有用户可读写:

$ sudo mkdir /mnt/nas
$ sudo chmod 777 /mnt/nas

接下来编辑/etc/fstab,添加下面这一行代码来挂载NAS的共享目录,这个文件中所指定的内容会在每次系统启动时自动挂载。在这里我们假设NAS采用的是Samba(Windows Share)协议来共享文件的(记得将IP、用户名、密码、共享目录名称改为你自己的):

//10.0.0.200/share	/mnt/nas	cifs	username=nmt,password=1234	0	0

接下来运行mount命令来挂载:

$ sudo mount -a

现在访问一下/mnt/nas看看,应该可以看到NAS上的文件了。如果不想改动Transmission的配置文件,可以直接在Transmission配置中默认下载目录的地方做一个symlink(类似Windows中的快捷方式)指向NAS中的指定目录。例如,Transmission默认下载目录为/home/pi/downloads/completed,我们想要将下载的文件放到NAS的/Download目录下,首先我们可以将原来的completed目录改个名,然后建立一个名叫complete的symlink即可:

$ cd /home/pi/downloads
$ mv complete complete_bak
$ ln -s /mnt/nas/Download ./completed

在Flexget的配置文件中,我们上次的例子只配置了一部番,如果要同时订阅多部新番,岂不是每一个task都要把transmission和email两块内容重新写一遍吗?这样太不优雅了,我们可以用preset来搞定,最简单的方式就是创建一个名为global的preset:

presets:
  global:
    transmission:
      host: localhost
      port: 9091
      username: transmission
      password: yourpassword
      removewhendone: yes
    email:
      active: True
      from: john.smith@gmail.com
      to: john.smith@gmail.com
      smtp_host: smtp.gmail.com
      smtp_port: 587
      smtp_username: john.smith@gmail.com
      smtp_password: yourpassword
      smtp_tls: true

这样我们就可以将每个task中关于trasmission和email的部分省略了,global这个preset是会自动套用在所有task上的。我们也可以指定一些其他的preset,在需要的地方引用,详细可参见preset插件的说明

最后我们来看一个自动清理下载目录的例子。下载目录的文件越来越多,占用的空间会越来越大,而这些新番往往是不需要永久保留的,遇到想要收藏的片子稍后还是要再去下BD版嘛。我们可以编写一个Shell脚本,定期检查下载目录中文件的大小,当超过一定容量之后就删除最早下载的文件。例如,我们可以创建home/pi/clean_download_folder.sh:

#!/bin/sh
cd /home/pi/downloads/completed
while [ `du -m ./ | awk '{print $1}'` -gt 2000 ];
do
	ls -tb | tail -n1 | xargs rm -f
done

这个脚本中,我们通过一个循环来检测下载目录中所有文件的总容量,当容量超过2GB时,则列出最旧的一个文件并删除它,然后再次循环,直到容量不足2GB为止。这里面用到了Linux的管道命令,管道可是UNIX和Linux的法宝,具体的我不想多讲了不然就讲不完鸟。。。把这个脚本添加到crontab中,我觉得一天跑一次就可以了~

上面说的这些方法其实都是我的个人喜好,Flexget的好处就是你可以按照自己的需求去创建配置,灵活性非常高,在Linux环境下配合Shell脚本或者Python程序就可以完成几乎任何操作,只要你想得到。

打造一个自动追新番的下载机:补完篇》上有5条评论

  1. 我家的NAS只有用的时候才打开(附近经常有人偷电线……)
    大概1~2周把SD卡的东西同步到NAS上
    mount.cifs -o username="username",password="password" "//GoFlex_Home/Personal/" /samba/
    rsync -ahP --remove-source-files /share/BT/Finished/ /samba/Finished/

发表评论

电子邮件地址不会被公开。 必填项已用*标注