openbox每日开机自动切换网络壁纸

目的

利用bing的每日一图, 每天切换壁纸

开干

联网后下载图片

  • 利用networkmanage启动后执行脚本 netafter.sh

    • 文件地址: /etc/NetworkManager/dispatcher.d/netafter.sh

      #!/bin/sh
      INTERFACE=$1 # 状态发生变化的网络接口
      STATUS=$2 # 网络接口的新状态:up, down, vpn-up, vpn-down
      
      echo "网络状态: $STATUS" > /tmp/netstatus.log
      #echo "网络状态$INTERFACE" >> /tmp/netstatus.log
      
      ping -c 1 114.114.114.114 > /dev/null 2>&1
      if [ $? -eq 0 ];then
          echo 检测网络正常 >> /tmp/netstatus.log
      
      #这里还没有开启图形界面,所以不能更换背景图片
       nohup python /home/lx7ly/workspace/python/utils/bingimg.py >> /tmp/netstatus
      .log 2>&1 &
      else
          echo 检测网络连接异常 >> /tmp/netstatus.log
      fi
         
      
  • python下载图片脚本

    import urllib.request
    import requests         
    import os.path
    # import ctypes
    import re
    import time
    
    def save_img(img_url,dirname):
        #保存图片到磁盘文件夹dirname
        try:
            if not os.path.exists(dirname):
                print ('文件夹',dirname,'不存在,重新建立')
                #os.mkdir(dirname)
                os.makedirs(dirname)
            #获得图片文件名,包括后缀
            regex = re.compile('\?[^&]*')
            timestr = time.strftime('%Y%m%d',time.localtime(time.time()))
            basename = str(regex.search(img_url).group()).replace("?id=", "_")
            basename=timestr+basename
            # basename = os.path.basename(img_url)
            #拼接目录与文件名,得到图片路径
            filepath = os.path.join(dirname, basename)
            # print(filepath)
            #下载图片,并保存到文件夹中
            urllib.request.urlretrieve(img_url,filepath)
        except IOError as e:
            print ('文件操作失败',e)
        except Exception as e:
            print ('错误 :',e)
        print("Save", filepath, "successfully!")
    
        return filepath
    
    # 请求网页,跳转到最终 img 地址
    def get_img_url(raw_img_url = "https://area.sinaapp.com/bingImg/"):
        r = requests.get(raw_img_url)       
        img_url = r.url # 得到图片文件的网址
        # print('img_url:', img_url)
        return img_url
    
    # 设置图片绝对路径 filepath 所指向的图片为壁纸
    def set_img_as_wallpaper(filepath):
        ctypes.windll.user32.SystemParametersInfoW(20, 0, filepath, 0)
    
    if __name__ == "__main__":
        dirname = "/home/lx7ly/Pictures/bingImg"       # 图片要被保存在的位置
        img_url = get_img_url()
        filepath = save_img(img_url, dirname)   # 图片文件的的路径
        # set_img_as_wallpaper(filepath)
    

加载界面后切换图片

  • 利用openbox启动界面后更新背景图 autostart中加入bingimg.sh

注意

联网后执行脚本的路径是确定的,必须放入到networkmanager/dispatcher目录下

python脚本是参考网上一小伙伴,拿出来跟大家分享了

posted @ 2019-07-10 21:20  p205  阅读(366)  评论(0编辑  收藏  举报