从WebDAV服务器获取文件列表的Lektor插件
lektor-webdav的Python项目详细描述
Lektor WebDAV插件
获取WebDAV服务器上托管的文件列表,以便在 Lektor模板。
安装
mkdir packages
cd packages
git clone https://github.com/mesbahamin/lektor-webdav
我会尽快设置它,以便可以用lektor plugins add
正确安装它。
配置
对于要使用的每个WebDAV服务器,在configs/webdav.ini
:
[photos]
url = https://my.webdav.domain/photography/
username = my_user@example.com
passcmd = pass my_webdav_server
将“照片”替换为此特定WebDAV服务器所需的任何标签。
选项
Option | Description |
---|---|
url | URL of your WebDAV folder |
username | Username with which to authenticate with the WebDAV server |
passcmd | A command that will return your WebDAV password as a UTF-8 string |
在模板中使用
此插件公开了以下内容,供Jinja2模板使用:
功能
webdav_ls_files
- 返回WebDAV目录中所有文件(不是文件夹)的列表。文件 以实例列表的形式返回。
- 参数:
webdav_id
。这是您在中选择作为节标题的名称webdav.ini
(上面片段中的“照片”)。path
(可选)。如果要查看WebDAV的子文件夹 文件夹,在这里输入它的名称。
webdav_ls_file_names
- 与
webdav_ls_files
相同,但只返回名称。
- 与
webdav_ls_file_paths
- 与
webdav_ls_files
相同,但仅返回路径。
- 与
元组
WebdavFile
:保存文件信息的命名元组。path
- 以WebDAV服务器的URL为根的文件的完整路径。
- 示例:
'/photographs/my_photograph_of_a_wall.jpg'
name
- 只是文件本身的名称。
- 示例:
'my_photograph_of_a_wall.jpg'
content_type
- WebDAV服务器提供的文件类型元数据。
- 示例:
'images/jpeg'
过滤器
webdav_zip
- jinja2没有
zip
过滤器,所以我在这里包括了一个,因为我需要 将我的照片与生成的缩略图配对(参见下面的示例)。 - 用法:
{{ zipped_iterator_ab = iterator_a|zip(iterator_b) }}
- jinja2没有
示例
我做这个是因为我想在我的博客上做一个照片库。我已经有了 一个webdav服务器通过我的fastmail帐户,我想托管图像 在那里。
可以找到我的完整站点配置 here,但这里是主要位:
配置
我的webdav.ini
看起来是这样的:
[photography]
url = https://myfiles.fastmail.com/photography/
username = me@mydomain.com
passcmd = pass sync/fastmail_webdav
我用pass来管理我的密码,所以
我在passcmd
中调用它。
模板
我的摄影页面模板如下:
{% extends "layout.html" %}
{% block body %}
<h2>Photography</h2>
<section class="photos">
<div class="photo-list">
{% set photo_host_url = bag('photo_list', 'host_url') %}
{% set thumb_dimension = bag('photo_list', 'thumb_dimension') %}
{%
for photo_file_name, thumbnail_file_name
in (
webdav_ls_file_names('photography')
|webdav_zip(webdav_ls_file_names('photography', 'thumbnails')
)
|sort(reverse=True))
%}
{% set photo_url = photo_host_url + photo_file_name %}
{% set thumb_url = photo_host_url + 'thumbnails/' + thumbnail_file_name %}
<div class="photo">
<a href="{{ photo_url }}">
<img src="{{ thumb_url }}" width="{{ thumb_dimension }}" height="{{ thumb_dimension }}"/>
</a>
</div>
{% endfor %}
</div>
</section>
{% endblock %}
我得到了一个我的webdav托管照片列表和一个预生成的缩略图列表。
然后我用webdav_zip
压缩它们并遍历它们
同时。
结果
我的图库页面看起来像this。
当我想添加更多照片时,我只需将它们上传到我的webdav服务器,然后
运行lektor build
。