Skip to main content

A command line tool written in Python 3 for creating lunar birthday events

Project description

lunar-birthday-ical

这是什么?

一个使用 Python 3 编写的用于创建农历生日事件的命令行工具.

lunar-birthday-ical 读入一个 YAML 配置文件, 生成 iCalendar 格式的 .ics 文件, 可选是否将日历上传到 pastebin, 方便直接订阅, 示例配置文件请参考 config/example-lunar-birthday.yaml, 注释应该足够能解释每个选项分别是什么含义.

可以使用 -h 或者 --help 选项查看命令行工具帮助信息,

$ lunar-birthday-ical -h
usage: lunar-birthday-ical [-h] [-o OUTPUT] input

Generate iCal events for lunar birthday and cycle days.

positional arguments:
  input                 input config.yaml, check config/example-lunar-birthday.yaml for example.

options:
  -h, --help            show this help message and exit
  -o OUTPUT, --output OUTPUT
                        Path to save the generated iCal file.

安装

推荐使用 pipx 来安装 Python 编写的命令行工具, 包括本项目,

$ pipx install lunar-birthday-ical
  installed package lunar-birthday-ical {{ version }}, installed using Python 3.11.2
  These apps are now globally available
    - lunar-birthday-ical
done! ✨ 🌟 ✨

$ lunar-birthday-ical config/example-lunar-birthday.yaml
[2025-01-25 12:17:05,137][lunar_birthday_ical.ical][INFO] iCal file saved to config/example-lunar-birthday.ics

关于 pastebin

在 YAML 配置文件中可选配置是否同时将生成的 .ics 文件同时上传 pastebin, 该 pastebin 实例是 repo owner 运行的一个基于 Cloudflare worker 的 pastebin 服务, 实例所使用的代码是 SharzyL/pastebin-worker.

如果选择启用 pastebin (pastebin.enabled), 在初次执行时, 可以保持 YAML 配置文件中的 pastebin.namepastebin.password 为空, 命令执行时会自动上传, 上传成功后可以将标准输出中 lunar_birthday_ical.pastebin 日志行的 admin 中由 : 分隔的 {{ pastebin.name }}{{ pastebin.password }} 手动填入配置文件, 这样下次再执行时就只会在原本的 URL 上更新, 而不会重新上传, 保持 URL 不变, 避免需要更新订阅日历的链接.

下方为启用 pastebin.enabled 后的命令行输出,

$ lunar-birthday-ical config/example-lunar-birthday.yaml
[2025-01-25 12:17:05,137][lunar_birthday_ical.ical][INFO] iCal file saved to config/example-lunar-birthday.ics
[2025-01-25 12:17:07,040][httpx][INFO] HTTP Request: POST https://komj.uk/ "HTTP/1.1 200 OK"
[2025-01-25 12:17:07,041][lunar_birthday_ical.pastebin][INFO] {'url': 'https://komj.uk/{{ pastebin.name }}', 'suggestUrl': 'https://komj.uk/{{ pastebin.name }}/example-lunar-birthday.ics', 'admin': 'https://komj.uk/{{ pastebin.name }}:{{ pastebin.password }}', 'isPrivate': True, 'expire': None}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lunar_birthday_ical-0.2.1.tar.gz (7.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

lunar_birthday_ical-0.2.1-py3-none-any.whl (9.0 kB view details)

Uploaded Python 3

File details

Details for the file lunar_birthday_ical-0.2.1.tar.gz.

File metadata

  • Download URL: lunar_birthday_ical-0.2.1.tar.gz
  • Upload date:
  • Size: 7.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: pdm/2.22.3 CPython/3.13.1 Linux/6.8.0-1020-azure

File hashes

Hashes for lunar_birthday_ical-0.2.1.tar.gz
Algorithm Hash digest
SHA256 376d8a923e7a6e4dbf82c39a313e41483e1ccc4bf4aa8795c3193cbbdb21a8fd
MD5 64cd763c8cb67d1f722bfe3ff4270613
BLAKE2b-256 d220ec7f7712f3ad103bf3806bb3ca666b7962479918bcb6f12901af6d16d4b8

See more details on using hashes here.

File details

Details for the file lunar_birthday_ical-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: lunar_birthday_ical-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 9.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: pdm/2.22.3 CPython/3.13.1 Linux/6.8.0-1020-azure

File hashes

Hashes for lunar_birthday_ical-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 2d4a3ed00328af7be4c69689957468e909627b9902e41bef13dbb9f76b6a81e5
MD5 d2224a15879f7539a2b0a964e2b89a43
BLAKE2b-256 663defc7334c678cd06f227abefa4e317cda5839c1b108a63add47afd0b6e51e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page