从WebDAV服务器获取文件列表的Lektor插件

lektor-webdav的Python项目详细描述


Lektor WebDAV插件

PyPI version shields.io

获取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服务器所需的任何标签。

选项

OptionDescription
urlURL of your WebDAV folder
usernameUsername with which to authenticate with the WebDAV server
passcmdA 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) }}

示例

我做这个是因为我想在我的博客上做一个照片库。我已经有了 一个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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何读取、验证和移动数据。csv文件?   用于在线蛇游戏的java解析scaing   java JavaFX:在窗口上移动元素(阶段)调整大小   mysql如何使用java中的IOUtils包在jsp中显示多个图像?   Java dateFormat不可解析日期异常   spring mvc java。执行单元测试时lang.AssertionError   java在一个webapp中运行多个调度器有什么问题吗?   JAVAlang.ArrayIndexOutofBounds异常:1未来。get()多线程   java使用MDC或spring boot中的任何过滤器屏蔽日志消息中的密码,而不使用logback。xml文件   与应用服务器的java AJP和SSL通信   java Hibernate更新列表中的特定对象   Java小程序:使用keylistener移动多边形   java访问是一个独立于MainActivity的进程   来自服务器的java重复密钥或完整性约束冲突消息:“列“volume”不能为null”   java是否有任何方法可以确保在Flink on job cancel with savepoint上通知所有检查点侦听器检查点完成?