[分享]一个自动壁纸切换器

软件和网站开发以及相关技术探讨
回复
头像
zkwlx
帖子: 989
注册时间: 2009-10-09 12:54
系统: debian
来自: 北京某胡同

[分享]一个自动壁纸切换器

#1

帖子 zkwlx » 2010-10-06 20:43

今天写了个脚本,可以自动换壁纸,间隔时间自己定,python实现,喜欢的尽管拿 :em04
使用方法

代码: 全选

先要给可执行权限
sudo chmod +x background.py
然后就可以用了,可以自己指定壁纸目录,也可以不指定,直接用当前文件夹下的壁纸。
包里面有两个文件,一个主程序background.py,一个说明文档README
具体参数的使用方法README里面有,一共才3个参数,很简单的,注释是中文的,方便大家学习 :em04
有什么BUG、疑问、建议、批评的尽管说,我全部接受! :em11

使用示例:

代码: 全选

./background.py 3 /home/youself/picture/
该示例是随机抽取/home/youself/picture/中的图片做壁纸,时间间隔为3分钟

懒得下载的话,这个是源代码 :em09 嘿嘿

代码: 全选

#!/usr/bin/env python
#-*- coding: utf8 -*-

import random, os, os.path, sys, pynotify, time, imghdr, gconf

### 帮助文本 ###
def help():
    print '''
  Background Switcher, v0.01
    created by: zkwlx
    Thank : Bummer@companyName.here

 *这是一个定时切换壁纸的脚本

 *使用:python ./background.py [等待时间] [壁纸路径]
      或python ./background.py [-h or --help]
      注意!上面两种参数不能混用!

 *所有参数都是可选的,其中:
    上面第二个是显示该帮助文档
    第一个中[等待时间]就是切换壁纸的时间间隔,以'分'为单位,缺省为10分钟
    [壁纸路径]是您指定的文件夹,切换的就是此文件夹里的图片,缺省为脚本所在文件夹
 *对了,这个脚本是无限循环切换壁纸,所以想退出只能Ctrl+C或直接关闭终端了……
 *谢谢下载和使用^_^!
    '''
    sys.exit()

### 提示信息 ###
def notify(subject, message = None):
    n = pynotify.Notification(subject, message)
    n.show()

### 主程序 ###
def main():
    if len(sys.argv) == 2 and \
            (sys.argv[1] == '-h' or sys.argv[1] == '--help'):
        help()
    
    all_images = []
    sleep_time = 600
    images_dir = sys.path[0]
    try:

################ 解析参数 ################
        if len(sys.argv) == 3 and os.path.isdir(sys.argv[2]):
            sleep_time = int(sys.argv[1]) * 60
            images_dir = sys.argv[2]
        elif len(sys.argv) == 2 and os.path.isdir(sys.argv[1]):
            images_dir = sys.argv[1]
        elif len(sys.argv) == 2:
            sleep_time = int(sys.argv[1]) * 60

############### 创建壁纸列表 #############
        if images_dir[-1] != '/':
            images_dir += '/'
        for files in os.listdir(images_dir):
            if os.path.isfile(os.path.join(images_dir + files)) \
                    and imghdr.what(os.path.join(images_dir, files)):
                all_images.append(os.path.join(images_dir, files))

############### 开始循环换壁纸 #########        
        client = gconf.client_get_default()
        num = len(all_images) - 1
        while True:
            image = all_images[random.randint(0, num)]
            time.sleep(sleep_time)
            client.set_string('/desktop/gnome/background/picture_filename', image)
            notify('当前壁纸为:', os.path.basename(image))
    
    finally :
            notify('程序异常或用户强行退出。', '感谢使用!^_^')

if __name__ == '__main__':
    main()
附件
background.tar
(10 KiB) 已下载 121 次
头像
qts000
帖子: 283
注册时间: 2008-05-05 21:21

Re: [分享]一个自动壁纸切换器

#2

帖子 qts000 » 2010-10-06 21:05

:em11 顶了
一对蛔虫父子从肛门里钻出来。蛔虫儿子兴奋地问:“爸爸,那蓝蓝的是什么?”“那是蓝天,我的孩子。”“那绿绿的又是什么?”“那是草地,我的孩子。”“爸爸,外面的世界多么美好啊!我们为什么还要住在肛门里呢?”蛔虫父亲顿时挺起身子,清清嗓子,庄严地回答:"因为这里是我们的祖国!"
头像
icyomik
帖子: 76
注册时间: 2010-10-30 17:52

Re: [分享]一个自动壁纸切换器

#4

帖子 icyomik » 2010-10-31 15:30

谢谢,下载了,看看。
个人博客:http://blog.jtwo.me/
女友淘宝:http://icykiss.taobao.com/
你有什么不开心的事情,说出来让大家开心一下。
回复