首页 > 编程问答 >使用 Confluence API 的日历信息

使用 Confluence API 的日历信息

时间:2024-08-08 05:13:37浏览次数:11  
标签:python confluence

我有一个 Confluence 页面,里面有一个日历(请检查下面的照片)。 日历 我正在尝试从此日历中提取信息,例如每天有多少个事件。仅此而已。

我使用了来自 Stack Overflow 的代码,该代码使用 API 读取 Confluence 页面。但 JSON 响应不包含有关页面内日历的任何数据。

`import requests
import json
from requests.auth import HTTPDigestAuth
confluence_host = "https://confluence.tools.mycompany.com"
url = confluence_host + '/rest/api/content/'
page_id = "36013799"
page = requests.get(url=url + page_id,
                       params={'expand': 'body.storage'},
                   auth=('my_user', 'my_password') ).json()`

即使我编写 HTML = page['body']['storage']['value'] 并检查其输出,它也只给出这个:

name="日历" ac:schema-version="1" ac:macro-id="99a26d73-abaa-45a1-92cc-0edafec567f5"><ac:parameter ac:name="id">72da4ae5 -4888-46dd-9078-0299b51ab815,743a55b4-7b3b-4e00-b102-90d95916de8d</ac:parameter></ac:structed-macro>

有什么方法可以获取日历信息吗?


不幸的是,你无法使用 Confluence REST API 直接从 Team Calendars 宏中提取日历事件数据。你提供的 API 响应仅提供宏本身的基本信息(例如宏 ID、宏名称),而不提供其生成的内容。

可能的解决方法:

  1. 使用 Team Calendars API(如果可用): 检查你的 Confluence 版本是否有可公开日历事件数据的单独 Team Calendars REST API。这将是检索所需信息的更可靠方法。但是,Team Calendars 文档没有提供此类 API 的信息。

  2. 从 Team Calendars 导出日历: Team Calendars 通常允许你将日历数据导出为 iCalendar (.ics) 文件。你可以定期导出此文件并从中提取信息。这是一个解决方法,但它允许你访问数据。

  3. 屏幕抓取(不推荐): 作为最后的手段,你可以使用屏幕抓取技术从呈现的 Confluence 页面中提取日历数据。但是,这种方法很脆弱,容易受到 Confluence UI 或 Team Calendars 宏的任何更改的影响。

使用导出选项的示例(如果适用):

  1. 从 Team Calendars 视图导出日历(通常有一个导出选项)。
  2. 使用 Python 库(如 icalendar)解析生成的 .ics 文件。
from icalendar import Calendar

with open('calendar_export.ics', 'r') as f:
    calendar = Calendar.from_ical(f.read())

for component in calendar.walk():
    if component.name == "VEVENT":
        print(f"Summary: {component.get('summary')}")
        print(f"Start Date: {component.get('dtstart').dt}")
        print(f"End Date: {component.get('dtend').dt}")

请记住,这只是一个示例,你需要调整代码以匹配导出的 .ics 文件的结构。

在继续之前,请先探索 Team Calendars 文档或联系你的 Confluence 管理员,看看是否有可用的 API。

标签:python,confluence
From: 44412554

相关文章

  • 为什么 Python NewType 与 isinstance 和 type 不兼容?
    这似乎不起作用:fromtypingimportNewTypeMyStr=NewType("MyStr",str)x=MyStr("HelloWorld")isinstance(x,MyStr)我什至没有得到False,但是TypeError:isinstance()arg2mustbeatypeortupleoftypes因为MyStr是一个函数......
  • Python & Selenium 4 & Edge 浏览器 |加载个人浏览器配置文件(包括cookie)
    使用Selenium4,我尝试加载我的个人浏览器配置文件(包括cookie),以便它可以加载到我之前登录过的网站。我正在使用边缘浏览器。在测试我的代码片段时,它似乎没有加载我的浏览器配置文件,而是创建一个新的(配置文件1)。我已确保配置文件的路径是正确的。我的代码片段:edge_opt......
  • 如何在通用 Python 类中输入 __eq__ ?
    当我定义带有泛型类型参数的类型时(例如K/V映射的键和值),我似乎无法编写合适的isinstance检查来实现__eq__:fromcollectionsimportOrderedDictfromcollections.abcimportMutableMappingfromtypingimportTypeVarK=TypeVar("K")......
  • 无法使用 devstack 安装 openstack 因为 python 版本
    我正在使用默认的python3.8.10运行./stack.sh,我收到此错误,因为我需要3.9或更高版本3.8msg错误但是当我将默认版本更改为3.9时,我收到错误没有找到模块“apt_pkg”3.9msgerror我一直在em之间来回跳动,但错误仍然存​​在(我也每次都会检查版本)......
  • Python @overload 使用联合类型会导致函数签名重叠错误
    我想编写以下重载的Python函数:fromtypingimportAny,TypeVar,overload_T1=TypeVar('_T1')_T2=TypeVar('_T2')_T3=TypeVar('_T3')@overloaddefparse_as(ty:type[_T1]|type[_T2],s:bytes)->_T1|_T2:...@overload......
  • python joblib.load 发生错误:协议 0 中的持久 ID 必须是 ASCII 字符串 在 GCP 云运行
    总体而言:我尝试使用Cloudbuild和Cloudrun构建BERT模型。我将模型(参数)和元数据(标签)保存在GCPCloudStorage中。但是,我遇到了通过joblib.load()加载metadata.bin文件的错误。我的metadata.bin文件包含UTF-8字符,但joblib.load需要ASCII字符。在......
  • Python + Svelte,如何使用本地文件系统
    总结一下,我有一个用python编写的应用程序。它在输入时需要一堆视频文件。使用一些魔法并生成合并的视频文件输出。我没有找到一个好的GUI解决方案(tkinter,QT,TUI等),所以我选择Svelte框架。但是出现了一个问题,我如何使用本地文件系统。在GUI(svelte)上,我必须上......
  • 如何在Python中绘制伪球面
    目标是使用meshgrid和numpy库生成伪球体的三维图形,但我使用下面的代码生成的图形不完整u=np.linspace(0,np.pi,50)v=np.linspace(0,2*np.pi,100)x,y=np.meshgrid(u,v)X=np.arccos(x)*np.cos(y)Y=np.arccos(x)*np.sin(y)Z=x-np.tan(x)fig=plt.f......
  • 18:Python集合属性
    #Python3集合#集合(set)是一个无序的不重复元素序列。#集合中的元素不会重复,并且可以进行交集、并集、差集等常见的集合操作。#集合中元素必须是不可变类型,也就说里面不能是列表和字典#可以使用大括号{}创建集合,元素之间用逗号,分隔,或者也可以使用set()函数创建集合。s......
  • Python爬虫案例与实战:爬取源代码练习评测结果
    Python爬虫案例与实战:爬取源代码练习评测结果本章案例将介绍用Python编写程序实现简单网站的模拟登录,然后保持登录后的网页会话,并在会话中模拟网页表单提交,之后使用Requests库的高级特性爬取提交之后的返回结果。在HTTP网页中,如登录、提交和上传等操作一般通过向网页发送......