ubuntu 16.04LTS 开机启动自动更换壁纸的实现方法
前言
上周电脑重装,换了ubuntu16.04,想起来之前上课老师也是ubuntu而且他还提到他桌面是他自己写的个小脚本实现的自动更换桌面壁纸的,昨天晚上心血来潮自己网上搜了点资料实现了一下==
功能
功能的话,是从必应壁纸爬取最新的那张壁纸,然后本来因为我怕电脑又放了太多东西,就设置了个图片最大的数目,到达这个阈值就删除所有的图片==||通过python的os模块,设置壁纸,
这里可以参考:how-to-change-desktop-background-from-command-line-in-unity,还有就是考虑到刚开机时我不一定连得上网(辛酸T_T),所以设置了一个爬取的间隔
代码
#-*-coding:utf-8-*- #!/usr/bin/python #!/bin/bash #----------------------------------------------------------# #Thisisascriptwhichcanchangebackgroundautomatically# #everytimethesystemstarts.# #author:HuangZhenyang# #email:745125931@qq.com# #----------------------------------------------------------# #-----Import-----# importos importre importurllib importtime importsocket #---EndImport---# classSpider(object): """ Thisisthespidertogettheimgfrombeing """ def__init__(self,img_matched_pattern_para,url_para,file_name_para): """ initfunction :paramimg_matched_pattern_para:thepatterntomatchaimg :paramurl_para:urltocrawler :paramfile_name_para:filename """ self.img_matched_pattern=img_matched_pattern_para self.url=url_para self.file_name=file_name_para defget_img(self): """ downloadtheimage :return: """ html=self.get_html() img_pos=re.search(self.img_matched_pattern,html) img_page_href=self.url+img_pos.group()[6:-7]+"download" urllib.urlretrieve(img_page_href,self.file_name) defget_html(self): """ returnthehtml :return:page'shtml""" page=urllib.urlopen(self.url) html=page.read() returnhtml classController(object): """ Thisisthecontrollertocontrolthespider'sparameters. """ def__init__(self,pattern_href_para,path_para,url_para,img_max_num_para): """ :parampattern_href_para:href'smatchpattern :parampath_para:pathtosaveimages :paramurl_para:url :paramimg_max_num_para:maxnumberthatthe """ self.pattern_href=pattern_href_para self.path=path_para self.url=url_para self.img_max_num=img_max_num_para self.file_name="" self.init_file_name="0.jpg" self.file_extension_name=".jpg" defjudge(self): """ judgeifthenumberofimagesisgraterthanimg_max_num. iftrue,deleteallofthemandthenrunspider,elsedirectlyrunspider. Also,weshouldsetthefilename. :return: """ root=None _dirs=None files=None forroot,_dirs,filesinos.walk(self.path,True): pass files_len=len(files) iffiles_len==10: foriinrange(0,10): os.remove(root+files[i]) self.file_name=self.path+self.init_file_name else: self.file_name=self.path+str(files_len)+self.file_extension_name defrun_spider(self): """ runspider. TODO:Thisfunctionneedstobemodifiedinthefuturewhichmakesthesetwoclasscouplingtoomuch. :return: """ #Incaseuser'scomputerhasn'tconnecttheinternet. foriinrange(0,60): try: spider=Spider(self.pattern_href,self.url,self.file_name) spider.get_img() break exceptIOErrorase: print"Connectionerror:%s"%e time.sleep(60) continue exceptExceptionase: print"Connectionerror:%s"%e time.sleep(60) continue c_path='"file://'+self.file_name+'"'#absolutepath #callsystemcommandtochangethegnomebackground os.system('gsettingssetorg.gnome.desktop.backgroundpicture-uri'+c_path) print"gsettingssetorg.gnome.desktop.backgroundpicture-uri"+c_path if__name__=='__main__': pattern_href=r'href="/photo/.*?"rel="externalnofollow"' path='/home/hzy/图片/backgrounds/' url='https://bing.ioliu.cn/' img_max_num=10 controller=Controller(pattern_href,path,url,img_max_num) controller.judge() controller.run_spider()
开机自启动
在/home/hzy/.config/autostart中,新建一个xxx.desktop的文件,内容如下:
[DesktopEntry] Name=autoChangeBackgroundImg Comment=PythonProgram Exec=python/home/hzy/Script/autoChangeBackgroundImg/autoChangeBackgroundImg.py Icon=/home/hzy/Script/autoChangeBackgroundImg/autoChangeBackgroundImg.png Terminal=false MultipleArgs=false Type=Application Categories=Application;Development; StartupNotify=true
说明:
1.Exec后面的路径就是该脚本的路径
2.Icon的话可以自己随便找个图片,设置成该路径即可
以上这篇ubuntu16.04LTS开机启动自动更换壁纸的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。