0

如何在page_id给定一个page_url. 例如:

如果这是显示 URL:https ://confluence.som.yale.edu/display/SC/Finding+the+Page+ID+of+a+Confluence+Page

我想page_id使用 Confluence REST API来获取它

更多细节在这里

4

1 回答 1

1

你使用atlassian-python-api吗?

在这种情况下,您可以解析您的 url 以获取汇合空间 ( SC) 和页面标题 ( Finding the Page ID of a Confluence Page),然后使用confluence.get_page_id(space, title).

from atlassian import Confluence

page_url = "https://confluence.som.yale.edu/display/SC/Finding+the+Page+ID+of+a+Confluence+Page"

confluence = Confluence(
        url='https://confluence.som.yale.edu/',
        username=user,
        password=pwd)
        
space, title = page_url.split("/")[-2:]
title = title.replace("+", " ")

page_id = confluence.get_page_id(space, title)

请注意,当您的标题包含特殊字符(+üä...)时,您的页面 url 将已经包含这样的 id:https://confluence.som.yale.edu/pages/viewpage.action?pageId=1234567890因此您可能需要先检查它。

编辑:这里是你的函数的一个版本:

from atlassian import Confluence
import re
import urllib

# regex pattern to match pageId if already in url
page_id_in_url_pattern = re.compile(r"\?pageId=(\d+)")

def get_page_id_from_url(confluence, url):
    page_url = urllib.parse.unquote(url) #unquoting url to deal with special characters like '%'
    space, title = page_url.split("/")[-2:]

    if re.search(page_id_in_url_pattern, title):
        return re.search(page_id_in_url_pattern, title).group(1)
    
    else:
        title = title.replace("+", " ")
        return confluence.get_page_id(space, title)



if __name__ == "__main__":
    from getpass import getpass
    user = input('Login: ')
    pwd = getpass('Password: ')

    page_url = "https://confluence.som.yale.edu/display/SC/Finding+the+Page+ID+of+a+Confluence+Page"

    confluence = Confluence(
            url='https://confluence.som.yale.edu/',
            username=user,
            password=pwd)

    print(get_page_id_from_url(confluence, page_url))
于 2021-10-13T06:56:17.623 回答