#webring #static-site #indieweb #static-site-generator #linker #generate-static #smallweb

app ringfairy

通过为一系列网站生成HTML文件并将它们相互链接来创建一个网页圈

1个不稳定版本

0.1.2 2024年5月7日

#479 in Web编程

GPL-3.0 许可证

45KB
758

ringfairy 🧚

这是一个用Rust编写的网页圈生成器。它类似于静态网站生成器,但专门用于网页圈。

与大多数依赖于某种服务器端代码(例如PHP、JS)来重定向访客的网页圈不同,这种方法使用HTML重定向。

静态方法允许更简单的托管要求(它可以在Neocities、GitHub Pages等上托管),因为它消除了对服务器端处理的需求。

更新网页圈需要您重新生成整个网站。这很快且简单,不需要经常进行。但这是一个传统服务器端系统可能没有的额外步骤,除非您通过GitHub Actions等自动化它。

🔮 什么是网页圈?

网页圈是一组相互链接的网站集合。每个网站都包含指向圈中上一和下一网站的链接。如果您导航足够远,最终会回到您开始的地方!

Hypothetical webring example

网页圈在互联网早期非常流行,作为网站所有者相互推广内容并鼓励社区参与的一种方式。

这是一个为任何拥有某种个人网站或博客并希望与他人建立联系的人提供的工具。您可以使用它从头开始建立自己的在线社区!

🔬 特性

  • 高度优化
  • 自动检测网站上的网页圈链接
  • 完全通过模板自定义
  • 生成包含所有具有RSS源的所有网站的OPML文件
  • 可选命令行界面或配置文件
  • 也支持远程配置文件
  • 洗牌选项
  • HTML最小化
  • 自动链接网站所有者联系信息
  • 捕获重复条目
  • 详细日志记录

🔎 网页圈

使用 ringfairy 的网页圈(据我所知)

如果您决定使用这个工具启动自己的网站环,请告诉我,我会在这里列出它! :)

🪄 使用方法

  • 下载发布二进制文件或克隆存储库并从源代码构建。
  • 修改默认的 websites.json 文件,以包含您想要包含在网站环中的网站的详细信息。每个网站都必须添加到列表中。
  • 根据您的需求修改默认的 config.json 文件。
  • (可选) 通过修改位于 data/templates 文件夹中的模板来自定义页面(默认)。您也可以使用远程文件作为模板。请参阅下面的“模板”部分。
  • (可选) 将任何附加文件添加到默认的 data/assets 文件夹中。此文件夹中的所有内容都将简单地复制到输出目录中。在这里,您可以添加图像、HTML/CSS 等额外内容。
  • 运行 ringfairy 通过写入包含重定向的 HTML 文件来生成网站环。每个网站将链接到 websites.json 文件中的下一个/上一个网站,从而形成您的网站环!
  • 在您首选的托管平台上托管生成的文件。

⚙️ 命令行参数

命令行参数优先于配置文件中的任何设置。

  • -A, --audit: 审计模式。抓取列表中的每个网站,检查是否可以找到下一个/上一个链接。否则,该网站不会添加到该构建的网站环中。这意味着您不必立即删除不合规的网站;网站仅在找到链接之前不会显示。如果您不使用详细模式(-v),您可能看不到审计的结果。如果您要离线构建网站环,或想要尽可能快的构建速度,请不要使用审计模式。
  • -, --config: 指定可选配置文件的路径。它可以远程;例如,Pastebin、GitHub 等上的适当 JSON 文件的 HTTP 链接。
  • -, --list: 指定包含网站列表的文件。默认:./websites.json
  • -, --output: 定义输出文件夹,生成的文件将保存在该文件夹中。默认:./webring
  • -, --assets: 指定资源文件夹。这里的任何文件都将复制到输出文件夹中。这允许您包含任何想要包含的额外文件,例如图像或额外的网页等。默认:./data/assets
  • -, --templates: 指定模板文件夹的路径。使用 template.html 作为重定向页面(即组成网站环的 HTML)。如果想要添加额外的页面并使用生成的内容填充它们,也可以在这里添加。默认:./data/templates
  • -, --url: 网站环的基本 URL。例如 'https://example.com'。
  • -, --name: 网站环的名称。例如 'Ghostring'。
  • -, --description: 关于网站环的简短描述/说明。
  • -m, --maintainer:网站环的所有者/维护者,可以是个人或组织。
  • -w, --website:网站所有者的网站链接,不是网站环的基础URL。
  • --skip-minification:输出未经优化或修改的页面。如果您希望生成的文件稍后可以手动编辑,或者如果您在使用输出时遇到任何意外问题,请尝试此选项。
  • --skip-verification:在不检查潜在问题的情况下生成文件...不明智!
  • --dry-run:运行应用程序而不输出任何文件
  • -s, --shuffle:在生成过程中随机打乱网站的顺序。这是完全内部的,不会影响网站输入列表;您可以反复打乱相同的网站环,而不会丢失原始顺序。
  • -v, --verbose:输出信息到控制台
  • -V, --version:打印版本
  • -h, --help:打印帮助

注意:日志记录

默认情况下,应用程序只记录错误消息。通过传递 -v/--verbose(在命令行上)或在配置JSON中设置 "verbose": true,您可以指示应用程序显示信息级别的日志。

要将这些日志保存到文件,您可以在运行应用程序时将标准输出和标准错误重定向到文件。例如

$ ./ringfairy > log.txt 2>&1

🎭 模板

模板默认位于 ./data/templates 文件夹中;此路径可以通过命令行参数 --templates 或配置文件中的 path_templates 指定。

模板包含将被生成内容替换的标签。您可以通过在标签前后添加内容来自定义生成的文件。该存储库包含基本的模板示例以帮助您入门。

在模板文件夹中,template.html 用于生成每个 next.html/previous.html 页面,包含每个网站的跳转。生成器在每个页面中插入标签 {{ url }},从而驱动网站环。

除了 template.html 之外,模板文件夹还可以包含您想要的任何其他模板。

例如,网站环拥有一个列出所有网站的中央枢纽页面的想法是很好的。您可以将此放在 index.html 上,或者创建一个专门的页面,如 list.htmltable.html 等。只需在模板中使用标签 {{ table_of_sites }},然后 ringfairy 将生成网站环中网站的格式化列表。

模板标签

以下标签目前在模板中可用

  • {{ table_of_sites }} 生成一个格式化的HTML表格,列出环中所有站点的信息。
  • {{ number_of_sites }} 显示环的当前大小。
  • {{ current_time }} 显示生成时间,显示页面最后更新时间。
  • {{ opml }} 插入环的OPML文件的相对路径。

目前,{{ url }} 是一个仅在 template.html 中用于下一页/上一页链接的特殊标签。


                    __
                  .-'  |
                 /   <\|
                /     \'
                |_.- o-o
                / C  -._)\
               / ',        |
              |   `-,_,__,'
              (,,)====[_]=|
                '.   ____/
                 | -|-|_
                 |____)_)

✨ 贡献

欢迎贡献!如果您有任何改进建议或新功能建议,请随时打开问题或提交拉取请求。

依赖项

~27–41MB
~628K SLoC