每日设置Bing首页图片为壁纸
看腻了每日一成不变的壁纸,希望每天都能有个未知的壁纸可以期待。
所以我打算做一个小工具来实现此目的。
于是乎便有了本文。
本文大代码是从几个地方搜索,然后组合的。
我所做的工作就是:
1. 将网上的Python3的代码修改成Python2的;
2. 改变下载的Bing首页图片的命名规则,防止图片大量重复和日后查找;
3. 将下载壁纸和设置壁纸的代码组合在一起
4. 用Py2exe打包成可执行文件
5. 将可执行文件的快捷方式设置为开机启动
结果:每一次开机,程序都会自动将Bing首页的图片下载下来并设置为壁纸。
推广:可以自己建立一个图片文件夹存放收藏的图片,定时更换图片文件夹中的图片为壁纸。
其中设置开机自动运行是将程序的快捷键方式放到 “开始” 目录下的 ”启动“文件夹内。
一台windows往往不止有一个这也的 “启动文件夹”,因很多电脑不止有一个用户。
...\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\
或者
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\
在设置壁纸部分,用到了Image模块。这是它的下载地址,
http://www.pythonware.com/products/pil/
下载好后只需要点击exe即可安装Image。
完整代码:
# -*- coding: utf-8 -*- import urllib
import os
import time url = 'http://cn.bing.com'
urlFile = urllib.urlopen(url)
data = urlFile.read()
urlFile.close()
data = data.decode('utf-8',errors='ignore') pre = u'g_img={url: \"'
urlstart = data.find(pre) + len(pre)
urlend = data.find(u'\",id:', urlstart)
imgUrl = data[urlstart : urlend] preImg = u'<a id=\"sh_cp\" class=\"sc_light\" title=\"'
imgnameStart = data.find(preImg) + len(preImg)
imgnameend = data.find('\" alt=\"', imgnameStart)
#print("start:"+str(imgnameStart))
#print("end:"+str(imgnameend))
imgName = data[imgnameStart : imgnameend]
#imgName=imgName.replace("©".encode("utf-8"),"")
imgName=imgName.replace("/"," ") now_time = [ i for i in time.localtime()] # 获取时间
# 以下载时间为文件名
tmp_name = str(now_time[0]) + str(now_time[1]) + str(now_time[2])
imgName="F:\\BingImageForWallpaper\\" + tmp_name +u'.jpg' print("imgUrl: " + imgUrl)
print("imgName: " + imgName ) print('Download image......')
urllib.urlretrieve(imgUrl, imgName)
print('Download complete')
#os.startfile(imgName) ################################################################
## 以上为下载Bing首页图片部分,以下为设置壁纸部分 ##
################################################################ import Image
import win32api,win32con,win32gui
import re,os def set_wallpaper_from_bmp(bmp_path):
#打开指定注册表路径
reg_key = win32api.RegOpenKeyEx(win32con.HKEY_CURRENT_USER,"Control Panel\\Desktop",0,win32con.KEY_SET_VALUE)
#最后的参数:2拉伸,0居中,6适应,10填充,0平铺
win32api.RegSetValueEx(reg_key, "WallpaperStyle", 0, win32con.REG_SZ, "2")
#最后的参数:1表示平铺,拉伸居中等都是0
win32api.RegSetValueEx(reg_key, "TileWallpaper", 0, win32con.REG_SZ, "0")
#刷新桌面
win32gui.SystemParametersInfo(win32con.SPI_SETDESKWALLPAPER,bmp_path, win32con.SPIF_SENDWININICHANGE) def set_wallpaper(img_path):
#把图片格式统一转换成bmp格式,并放在源图片的同一目录
img_dir = os.path.dirname(img_path)
bmpImage = Image.open(img_path)
new_bmp_path = os.path.join(img_dir,'wallpaper.bmp')
bmpImage.save(new_bmp_path, "BMP")
set_wallpaper_from_bmp(new_bmp_path) if __name__ == '__main__':
set_wallpaper(imgName)
import sys
sys.exit()
2016-11-30
每日设置Bing首页图片为壁纸的更多相关文章
- 编写C#程序,自动将bing首页图片设为壁纸
任务目标: 1,获取图片 2,设为壁纸 3,自动化 环境需求: .NET Framework 4.0+, Visual Studio 2017 ==================== 1,获取图片 ...
- 用c#每日更换“必应背景图片”为“桌面壁纸”
必应每天都会更换背景图片,都非常漂亮,有的时候还十分惊艳,同时还会根据每个地区的特色不同应用不同的图片. 下面用c#抓取必应每天的背景图片,并实现桌面壁纸的每天自动切换 实现思路 1.通过获取&quo ...
- 获取bing首页的每日一图
从必应(bing)首页抓取他的每日一图 以前上学时,曾经用python写过一个每天抓取bing每日一图的小工具. 现在想用java来重构一下. 抓取图片的思路 首先获取网页源码 从网页源码中,我们可以 ...
- 在GNU/Linux下设置与定时更换桌面壁纸
1 简介 在电脑桌面设置一组可以定时更换的壁纸已经不是什么新奇的功能了.比如,Windows 7.KDE桌面环境都可以实现这样的效果.可是,自己目前使用的Debian系统并未安装KDE.GNOME这样 ...
- js实现淘宝首页图片轮播效果
原文:http://ce.sysu.edu.cn/hope2008/Education/ShowArticle.asp?ArticleID=10585 <!DOCTYPE html> &l ...
- Win10家庭版设置桌面右键更换桌面壁纸
Win10家庭版设置桌面右键更换桌面壁纸.. ------------------------- 这是设置之前的右键快捷菜单.. ------------------------- 开始设置:右键桌面 ...
- JS兼容所有浏览器的一段加入收藏代码,设置为首页
<script language="javascript" type="text/javascript"> function addfavorite ...
- 记录一下bing的图片 - 升级版冰糖葫芦
记录一下bing的图片 - 升级版冰糖葫芦
- 设置按钮背景图片(HTML-CSS)
很多人提交表单时都喜欢用一个图片来作为提交按钮,大多数人可能用JS去操作表单的提交,即当用户点击这个图片时响应一个JS来提交表单.其实还有一种方法,就是直接设置SUBMIT按钮的图片背景.设置它的图片 ...
随机推荐
- ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库
在这一章中,我们将直接进入项目,并且为产品和分类添加一些基本的模型类.我们将在Entity Framework的代码优先模式下,利用这些模型类创建一个数据库.我们还将学习如何在代码中创建数据库上下文类 ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(76)-微信公众平台开发-网页授权
前言 网页授权是:应用或者网站请求你用你的微信帐号登录,同意之后第三方应用可以获取你的个人信息 网上说了一大堆参数,实际很难理解和猜透,我们以实际的代码来演示比较通俗易懂 配置 实现之前我们必须配置用 ...
- 关于面试题 Array.indexof() 方法的实现及思考
这是我在面试大公司时碰到的一个笔试题,当时自己云里雾里的胡写了一番,回头也曾思考过,最终没实现也就不了了之了. 昨天看到有网友说面试中也碰到过这个问题,我就重新思考了这个问题的实现方法. 对于想进大公 ...
- c#多线程
一.使用线程的理由 1.可以使用线程将代码同其他代码隔离,提高应用程序的可靠性. 2.可以使用线程来简化编码. 3.可以使用线程来实现并发执行. 二.基本知识 1.进程与线程:进程作为操作系统执行程序 ...
- 免费开源的DotNet任务调度组件Quartz.NET(.NET组件介绍之五)
很多的软件项目中都会使用到定时任务.定时轮询数据库同步,定时邮件通知等功能..NET Framework具有“内置”定时器功能,通过System.Timers.Timer类.在使用Timer类需要面对 ...
- Asp.Net 操作XML文件的增删改查 利用GridView
不废话,直接上如何利用Asp.NET操作XML文件,并对其属性进行修改,刚开始的时候,是打算使用JS来控制生成XML文件的,但是最后却是无法创建文件,读取文件则没有使用了 index.aspx 文件 ...
- 在Visual Studio Code中配置GO开发环境
一.GO语言安装 详情查看:GO语言下载.安装.配置 二.GoLang插件介绍 对于Visual Studio Code开发工具,有一款优秀的GoLang插件,它的主页为:https://github ...
- 代码的坏味道(20)——过度耦合的消息链(Message Chains)
坏味道--过度耦合的消息链(Message Chains) 特征 消息链的形式类似于:obj.getA().getB().getC(). 问题原因 如果你看到用户向一个对象请求另一个对象,然后再向后者 ...
- 高性能 TCP/UDP/HTTP 通信框架 HP-Socket v4.1.1
HP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通信系统,提供 C/ ...
- Java列表
Java列表踩过的坑 其中subList是RandomAccessSubList,不是序列化的列表,不可以加入tair. 加入tair测试代码 @Autowired private CacheMana ...