写了一个圣经映射的workflow

November 29, 2024

代码是

import sys import json import pyperclip

加载圣经数据

with open("/Users/liyuge/【鲤鱼哥的文档】/Python Code/bible_output.json", "r", encoding="utf-8") as f: bible = json.load(f)

def parse_input(user_input): """ 解析用户输入,例如:约12:7 或 约12:7-8 或 约12:7-13:1 支持 ':', ':' 作为分隔符 """ try: # 替换中文冒号和英文冒号 user_input = user_input.replace(':', ':')

    if ":" not in user_input:
        raise ValueError("输入格式错误!请使用 '约12:7' 或 '约12:7-8' 或 '约12:7-13:1'")
    
    # 查找书卷名
    book = user_input[0]  # 获取书卷缩写 (如 "约")
    rest = user_input[1:]
    
    # 判断是否为多个章节
    if '-' in rest:
        chapter_verse_start, chapter_verse_end = rest.split('-')
        start_chapter, start_verse = chapter_verse_start.split(":")
        end_chapter, end_verse = chapter_verse_end.split(":")
        return book, int(start_chapter), int(start_verse), int(end_chapter), int(end_verse)
    else:
        chapter, verses = rest.split(":")
        start_verse, *end_verse = verses.split("-")
        end_verse = int(end_verse[0]) if end_verse else int(start_verse)
        return book, int(chapter), int(start_verse), end_verse

except ValueError as e:
    print(f"解析错误:{e}")
    return None, None, None, None, None

def get_verses(book, start_chapter, start_verse, end_chapter, end_verse): results = []

# 如果是同一章节的范围
if start_chapter == end_chapter:
    for verse_num in range(start_verse, end_verse + 1):
        verse_text = bible.get(book, {}).get(str(start_chapter), {}).get(str(verse_num), None)
        if verse_text:
            results.append(f"【{book}{start_chapter}:{verse_num}】{verse_text}")
else:
    # 如果跨多个章节
    for chapter in range(start_chapter, end_chapter + 1):
        start_v = start_verse if chapter == start_chapter else 1
        end_v = end_verse if chapter == end_chapter else 10000  # 假设每章最多有10000节
        for verse_num in range(start_v, end_v + 1):
            verse_text = bible.get(book, {}).get(str(chapter), {}).get(str(verse_num), None)
            if verse_text:
                results.append(f"【{book}{chapter}:{verse_num}】{verse_text}")

return "\n".join(results)

def main(): # 获取用户输入 user_input = sys.argv[1].strip() if len(sys.argv) > 1 else "" if not user_input: print("错误:未接收到输入!") return

print(f"用户输入:{user_input}")  # 调试输出

# 解析输入
book, start_chapter, start_verse, end_chapter, end_verse = parse_input(user_input)
if not book or not start_chapter or not start_verse or not end_chapter or not end_verse:
    print("输入格式错误!")
    return

# 获取经文并复制到粘贴板
result = get_verses(book, start_chapter, start_verse, end_chapter, end_verse)
if result:
    pyperclip.copy(result)
    print("经文已复制到粘贴板:\n" + result)
else:
    print("未找到匹配的经文。")

if name == "main": main()