Chinaunix首页 | 论坛 | 博客
  • 博客访问: 450592
  • 博文数量: 45
  • 博客积分: 2526
  • 博客等级: 少校
  • 技术积分: 478
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-12 21:04
文章分类

全部博文(45)

文章存档

2014年(1)

2011年(1)

2010年(3)

2009年(22)

2008年(18)

我的朋友

分类: Python/Ruby

2008-06-11 23:46:56

Deluge是一种Bittorrent客户端,使用 Python 和 GTK+ 写成,可以很好的在 GNOME 及 XFCE 这两个桌面中运行。linux下的BT工具很多,我用过的有bittorrent, Azureus和Transmission。几个工具比较下来,还是deluge好用。Bittorrent和transmission对中文支持不好,经常乱码。而Azureus是用java写的,很消耗内存。配置也麻烦些。

Deluge功能很多,由插件形式提供。但是唯独没有一个插件提供这样的常用功能:下载完毕后自动关机。相信这个功能在大部分BT工具中都有。于是我参考Deluge插件Torrent Notification源码,用python写了个简单的自动关机插件。

先介绍下思路:
1。程序的核心思路就是监测torrent文件是否完成,如果完成则关机。
2。因为deluge的核心功能libtorrent是用c++写的,同时提供Python接口。这样我们就可以在python程序利   用这些接口,来判断torrent文件是否完成。Deluge运行中,不间断的对外发出event队列,只要我们在程   序捕获“下载完成”event即可。
3。如何关机?因为我们的日常用户一般都不是root,所以象类似shutdown, poweroff这样的超级用户命令。   尽管可以加上sudo让poweroff命令运行,但过于勉强。想想,普通用户都没有权限关机,岂不是很郁闷??系统肯定是存在电源管理模块的,在linux/GNOME对应的gnome-power-manager。该damon 提供了一个完整的电源管理方案。所以,只要程序可以和gnome-power-manage通信,就可以实现下载完毕自动关机功能。
4。linux下的桌面程序间的通信,甚至桌面程序与操作系统的通信,最简单的就是Dbus。gnome-power-manage提供了Dbus Python API,让普通用户可以控制系统电源。关于Dbus,具体参见
     

Deluge自动关机插件启用方法:
1. 下载AutoShutdown.zip, 解压缩后会有一个AutoShutdown目录,里面只有一个python文件__init__.py
    将这个目录移动至deluge的插件目录下。在Fedora下,插件目录位于/usr/share/deluge/plugins
2。运行Deluge,打开“编辑->插件”,在插件列表中会出现Auto Shutdown插件,把启用选项勾上。然后点击下面该插件的“首选项”,会跳出新的选择窗口。用户可以选择下载完毕后让系统关机还是休眠。截图:






Notes:
1。 gnome-power-manager必须运行。默认情况,这个后台进程在开机时运行。可以检查下
[ray@localhost ~]$ ps -ef | grep power
ray       4974     1  0 Jun11 ?        00:00:00 /usr/bin/gnome-power-manager
ray       5518  5275  0 00:04 pts/2    00:00:00 grep power
2。 目前插件功能很差,只要有其中一个torrent任务完成,系统就会关机。

参考文档:
1。 GNOME Power Management Specification
~hughsient/temp/dbus-interface.html
2。 使用 D-BUS 连接桌面应用程序
http://www.ibm.com/developerworks/cn/linux/l-dbus.html

文件: AutoShutdown.zip
大小: 2KB
下载: 下载


6月13号: 已经更新至Version0.2  http://blog.chinaunix.net/u2/68938/showart_1000724.html
阅读(3724) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~