一个图片服务脚本

Python 自带了一个很简单的 HTTP Server,就是 python -m http.server 8000 这个,很方便。组里面同学基于这个改出来一个专门用来看图的 HTTP Server,但我觉得不太好用+看不懂+多文件不优雅。于是就自己动手重新写了一个。

大致思路是,找到 Python 官方的 SimpleHTTPServer 进行魔改。

首先确定我想要什么功能:

  1. 快速的文件夹跳转,就像 SimpleHTPServer 那样。这样的话我就可以将想要展示的图片放在某个目录后,配置脚本默默运行了——反正能在网页上点链接,我就不用记目录名字了
  2. 只显示图片,最多了再显示一下文件夹以供快速跳转。毕竟,这个脚本定位是「图片服务」
  3. 文件夹对比,最好是多路文件夹对比。这样的话可以比较方便地看不同算法的效果

大致就这么多。


开工。

首先对 SimpleHTTPServer 抽丝剥茧,看看 do_GET 方法是怎么做的,然后将发送 header 的部分独立出来。

然后,将原来的模板改造成自己的模板。

最后,实现上述想要的功能。

第一个版本使用的是单线程的 HTTPServer,第二个版本开始就使用 ThreadingHTTPServer 了,速度快很多很多。但是 ThreadingHTTPServer 这个东西只有在 Python3.7.4 以上的版本才有……按照自己「新版本爱好者」的习惯,就不做向下兼容了。


第一个版本实现二路文件夹比较,写得较为麻烦,想着改造成多路文件夹比较的话会写得更麻烦。但实际上做下来,也就半小时就改出来了。

然后就是,路径,遇到比较多的坑。所以这里全部用了绝对路径,然后显示的时候用相对路径——反正就是,路径方面,需要不停地 related_to(),显得比较恶心。除此之外,related_to()之后,还要按照 HTML 的东西对路径做各种我看不懂的转义(嗯,都是抄来的),也使代码显得很不优雅。

下一步,准备写一个 supervisior 配置文件,实现开机自动运行。


于是,Code 呢?

Gist:传送门

留下评论