一个图片服务脚本


发布于

|

分类

,

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:传送门


评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注