Source code for langchain_community.document_loaders.figma
import json
import urllib.request
from typing import Any, List
from langchain_core.documents import Document
from langchain_core.utils import stringify_dict
from langchain_community.document_loaders.base import BaseLoader
[docs]class FigmaFileLoader(BaseLoader):
"""加载`Figma`文件。"""
[docs] def __init__(self, access_token: str, ids: str, key: str):
"""初始化,使用访问令牌、ids和密钥。
参数:
access_token:Figma REST API的访问令牌。
ids:Figma文件的ids。
key:Figma文件的密钥。
"""
self.access_token = access_token
self.ids = ids
self.key = key
def _construct_figma_api_url(self) -> str:
api_url = "https://api.figma.com/v1/files/%s/nodes?ids=%s" % (
self.key,
self.ids,
)
return api_url
def _get_figma_file(self) -> Any:
"""从Figma REST API 获取 Figma 文件。"""
headers = {"X-Figma-Token": self.access_token}
request = urllib.request.Request(
self._construct_figma_api_url(), headers=headers
)
with urllib.request.urlopen(request) as response:
json_data = json.loads(response.read().decode())
return json_data
[docs] def load(self) -> List[Document]:
"""加载文件"""
data = self._get_figma_file()
text = stringify_dict(data)
metadata = {"source": self._construct_figma_api_url()}
return [Document(page_content=text, metadata=metadata)]