Introduce wonderful_bing
2014-11-27wonderful_bing 是什么呢?它是我写的第一个有用的 python 小玩意,主要功能是下载 Bing 当天的图片到本地,然后设置为壁纸。
我在这过程中遇到了那些坎
- Bing 首页改版
比如说 issue #2, issue #7. 由于 Bing 首页的改版,我不得不重新更改代码来 得到图片的信息。由于我自身也是在使用的, 所以能够第一时间发现这个问题。可是,这样我就处于比较被动的地方。后来我发现了一个类似 API 的还是什么,你可以试着访问 这个, 你可以发现这是 json 格式的内容,我们要的图片的下载地址和关于图片的信息都可以在这个得到,而且还解决了 issue #5 的问题, 你以不同的 IP 地址访问这个,会有不同的信息显示。虽然如果这个跪了,我也就再一次跪了_(:3
- notify 显示
个人以为,下载图片设为壁纸还不够,既然 Bing 已经提供了关于图片的故事, 那么理所当然也要向用户展示出来, 于是就想到了以 notify 的形式来展示。
之前是一直使用 pynotify module, 现在目前使用 notify-send 这个命令。
这里遇到的问题有路径的问题。当你安装了 wonderful_bing 之后,你可以在 /usr/local/bin 文件夹下发现
wonderful_bing 这个命令,而实际的源文件是在 /usr/local/lib/python2.7/dist-packages/wonderful_bing。
wonderful_bing 需要使用一个 icon(笑脸的那个,由于个人十分喜欢加上的 =。=),在使用时需要指定路径。
如何得到正确的 icon 路径就是个问题 (应当为/usr/local/lib/python2.7/dist-packages/wonderful_bing/img/icon.png)。
详细的说明你可以在这个 issue #10 中得到。
- 定时自动运行
这里遇到的坑就是如何在使用 cron 的时候,壁纸也能够正常地设置。你可以看看这个 issue #3, About making it run automatically。你可以加入开机启动; 或者 cron 定时运行;如果你像我总是睡眠,关机很少,可以考虑使用 anacron。
我从中学会了些什么
- 打包 python 程序到 PyPI
是的,它现在在 PyPI 上了。如果能带来不错的体验,那还是很高兴的一件事情。关于如何做, 我看看有没有可能写篇文章总结一下。
- 开始写测试
为什么要写测试?起因是这样的,既然你要上传到 PyPI 上了,自己安装更加方便的同 时,别人也可能会使用你的代码, 如果下载无法安装或者安装了无法正常使用,这是不能忍的。但是每次手动测试又很麻烦,所谓 Don't Repeat Youself。 而且你在修改代码的同时不能保证对已有代码不会产生影响。所以自然而然就要写测试了啦。
- 持续集成
现在用的是 travis-ci,每次的 commit 都可以触发它使用指定的 python 版本来跑测试, 对于别人提交的 pull request 也会有触发,更加方便了呢。
我打算还要做些什么
- 更好的测试
目前的测试代码还是很幼稚糟糕,我也在学习。今后将尝试写更加好的测试。
- 支持 python2.x && python3.x
虽然我学的是 2.x,但是支持 3.x 个人还是觉得有必要的。它是未来。PyPI 上下载量前 100 的包大多也已经支持 3.x。
Update on 20160316:
- 之后又重构了那么几回,明显有之前都是什么玩意的感觉,重写了以后很明显就是测试好写多了, 覆盖度也可以很轻松到 80% 左右了,之前一直在 50% 左右;
- v0.7.0 以后的版本已经支持 3.x 啦 XD