在另一篇文章中,我们谈到了 激流情节下载器(TED),这是一个用Java编写的优秀程序,它使我们可以添加自己喜欢的系列,并在出现新章节时自动下载它们。
这篇文章中描述的方法是TED的替代方法,许多人可能会发现它很有趣。. |
该方法包括创建一个计划任务,该任务每隔一段时间运行一次python脚本。 该脚本通过RSS下载种子文件。 许多torrent下载网站都允许使用此选项,最受欢迎的是 易RSS。 使用RSS下载种子的好处是,当出现新章节时,它使您可以“订阅”并下载您喜欢的系列的种子。 就像您订阅博客或新闻提要一样。
要遵循的步骤
1.- 安装套件 蟒蛇美女汤.
须藤apt-get install python-beautifulsoup
2.- 打开您喜欢的文本编辑器。 将以下代码复制到其中,并使用以下名称保存文件: 〜/ bin / tormon.py
#!/ usr / bin / env python
导入urllib2,urlparse
从urllib2导入HTTPError,URLError
从BeautifulSoup进口BeautifulSoup
导入操作系统
导入optparse
__用法__ ='''
tormon.py -O〜/ test / tormon -u“ http://rss.feed”
'''
主类(对象):
'''
tormon检查rss feed中的新种子。 找到新的.torrent时,
将其下载到指定的输出目录,在该目录中(可能是)监视
种子文件下载程序将下载相应的文件。
'''
def parse_options(个体):
用法='用法:%编[选项]'+ __用法__
解析器= optparse.OptionParser(用法=用法)
parser.add_option(
'-O','-output_dir',dest ='output_dir',
help ='保存新种子的目录',
metavar ='DIR')
parser.add_option(
'-f','-filetype',dest ='filetype',
动作=“追加”,
默认= [],
help ='允许的文件类型',
metavar ='TYPE')
parser.add_option(
'-d','-downloaded_torrents',dest ='downloaded_torrents',
默认= os.path.expanduser('〜/ .downloaded_torrents'),
help ='已下载种子的日志',
metavar ='FILE')
parser.add_option(
'-e','-error_log',dest ='error_log',
help ='torrent tormon下载失败的日志,'
metavar ='FILE')
parser.add_option(
'-b','--batch',dest ='batch',
help ='包含rss feed网址列表的文件',
metavar ='FILE')
parser.add_option(
'-u','-url',dest ='url',
动作=“追加”,
默认= [],
help ='rss feed的网址',
metavar ='URL')
parser.add_option(
'-m','-mark_all_downloaded',dest ='mark_all_downloaded',
动作='store_true',
默认= False,
help =“将所有种子标记为已下载”)
parser.add_option(
'-M','-match_by_filename',dest ='match_by_filename',
动作='store_true',
默认= False,
help =“通过文件名而不是URL识别下载的文件。默认情况下,通过URL进行匹配。”)
(self.opt,args)= parser.parse_args()
如果self.opt.batch:
对于打开的行(self.opt.batch,'r'):
线= line.strip()
如果是line而不是line.startswith('#'):
self.opt.url.append(行)
如果不是self.opt.output_dir:
self.opt.output_dir = os.path.expanduser('〜/桌面')
如果不是self.opt.filetype:
如果不是self.opt.error_log,则self.opt.filetype = ['。torrent']:
self.opt.error_log = self.opt.downloaded_torrents +'。错误'
尝试:
os.makedirs(self.opt.output_dir)
除了OSError:
如果不是os.path.exists(self.opt.output_dir):
打印('tormon无法创建目录%s'%self.opt.output_dir)
出口(1)
def load_list_of_already_downloaded_torrents(个体):
尝试:
self.downloaded =打开(self.opt.downloaded_torrents,'r')。读()。拆分()
除了IOError:
self.downloaded = []尝试:
self.errors =打开(self.opt.error_log,'r')。read()。split()
除了IOError:
self.errors = [] def update_downloaded(self,url):
self.downloaded.append(网址)
尝试:
self.errors.remove(URL)
除了ValueError:
通过
def download_torrent(自我,网址):
尝试:
袜子= urllib2.urlopen(URL)
除了(HTTPError,URLError):
#打印(“ tormon无法下载%s'%url)
如果网址不在self.errors中:
self.errors.append(URL)
其他:
文件名= self.url2文件名(URL)
target_file = os.path.join(self.opt.output_dir,文件名)
打印(“正在下载%s”%target_file)
内容= sock.read()
sock.close()
fh =打开(target_file,“ w”)
fh.write(内容)
fh.close()
self.update_downloaded(网址)
def url2filename(自己,网址):
返回os.path.basename(urlparse.urlparse(url)[2])
def has_been_downloaded(自己,网址):
如果self.opt.match_by_filename:
文件名= self.url2文件名(URL)
返回([self.url2filename(链接)中的文件名,用于self.downloaded中的链接))
其他:
返回(self.download中的URL)
def parse_rss_feed(个体):
对于self.opt.url中的url:
打印(“ RSS供稿:%s”%url)
尝试:
袜子= urllib2.urlopen(URL)
除了(HTTPError,URLError):
打印(“ tormon无法下载%s'%url)
其他:
内容= sock.read()
sock.close()
汤= BeautifulSoup(内容)
链接=([[link.nextSibling为汤中的链接。findAll('链接')] +
[链接['href']链接到soup.findAll('a')] +
[soup.findAll中的链接的链接['url']('media:content')])
对于链接中的链接:
if(任何([link.lower()。结尾于(结束)
以self.opt.filetype结尾])
而不是self.has_been_downloaded(链接)):
如果self.opt.mark_all_downloaded:
打印(“将%s标记为已下载”%链接)
self.update_downloaded(链接)
其他:
self.download_torrent(链接)
def save_list_of_already_downloaded_torrents(个体):
fh =打开(self.opt.downloaded_torrents,“ w”)
fh.write('n'.join(自行下载))
fh.close()
fh =打开(self.opt.error_log,“ w”)
fh.write('n'.join(self.errors))
fh.close()
def __init __(个体):
self.parse_options()
self.load_list_of_already_downloaded_torrents()
尝试:
self.parse_rss_feed()
除了KeyboardInterrupt:
通过
最后:
self.save_list_of_already_downloaded_torrents()
如果__name __ =='__ main__':
主()
3.- 授予它执行权限。
chmod + x〜/ bin / tormon.py
4.- 检查一切是否正常。
tormon.py -O〜/种子/ -u“ http://rss.feed”
哪里说 〜/种子/,则必须将其替换为要保存下载的种子的路径。 请记住,将会有很多.torrent文件。
如果显示“ http://rss.feed”,则必须用您喜欢的系列的RSS feed的URL替换它。 如何获得? 好吧,如果你想使用 易RSS,我转到主页并写下了该系列的名称。 结果将显示一个巨大的列表。 如果您想优化搜索(过滤日期,质量或翻录视频的人),则可以通过在该页面上清晰发布的示例进行指导来实现。 获得所需的结果后,右键单击显示以下内容的链接 基于搜索的RSS提要 出现在RSS Feed的橙色按钮特征旁边。 复制链接并将其粘贴替换为 http://rss.feed 的例子。
注意一些额外的数据:
- 如果省略-O参数,则.torrent文件将下载到桌面。
- 如果之后立即运行相同的命令,则除非下载了新的Torrent,否则它不应下载任何新的Torrent。
- 如果不存在种子,此命令将创建一个文件夹,将在其中保存种子。
- 成功下载的种子的URL列表将保存在〜/ .downloaded_torrents中。
- 要监视多个RSS提要,可以使用-u参数。 示例:tormon.py -u“ http://rss.feed1” -u“ http://rss.feed1”
5.- 如果一切正常,则可以将脚本添加为crontab计划任务。
crontab -e命令
该命令将打开一个文本编辑器。
粘贴以下代码,使其位于文件的开头:
PATH = / sbin:/ bin:/ usr / sbin:/ usr / bin:/ home / USER / bin
MAILTO = USER
更改 USER 通过您的用户名。
将以下代码粘贴到下面的某个位置 路径=…
* / 15 * * * * tormon.py -u“ http://rss.feed”
这将每15分钟运行一次脚本。 当然,您可以根据需要进行更改。 对于电视连续剧,每周运行一次可能是明智的选择。 不要忘记阅读我们的上一篇文章,其中我们将逐步解释 如何将任务添加到crontab.
要在每个星期日的上午10点运行它:
00 10 * * 0 tormon.py -u“ http://rss.feed”
最后,请确保crontab文件末尾有空白行。 我不知道为什么,但这是所有工作正常的crontab要求。
保存文件并退出文本编辑器。
注意:如果您安装了邮件传输代理,例如exim4,则MAILTO = USER行将告诉crontab通过电子邮件向您发送tormon.py的执行结果。
好吧,我知道一些英语。 我用YaRSS做到了。 看看是否可行。
是的,很酷。 但是没有人解释如何使用FlexRSS。 在您的页面上,一切都非常好,但是我还没有找到将其添加到deluge的方法...他们还说Deluge默认附带一个,但这不是真的。
问候
Qbittorrent和其他人具有内置的调度系统。 最好解释一下它们各自的工作方式,我通常解释一下MS WOS的microtorrent和Linux的Qbittorrent。 在剧透中有一个教程,但是如果您使用每个受欢迎的torrent程序制作视频,当然可以得到很多访问,例如添加EZ
谢谢Miquel! 与您的所有评论和建议一样,我会考虑在内!
我给你一个大大的拥抱! 保罗
这是包含此程序的存储库:
https://launchpad.net/~lopeztobal/+archive/maths
通过: http://linuxmusica.com/
停止鼓吹使用内核,并传播操作系统!
呵呵 ...