Bubu ff1389b3f5
Add Memos loader (#53)
* add memos loader

* handling networking errors and update README

* add keyword

* fix error

* fix

* fix

* Update README.md

* Update README.md

---------

Co-authored-by: Jesse Zhang <jessetanzhang@gmail.com>
2023-02-20 22:21:17 -08:00

56 lines
1.4 KiB
Python

"""Simple Reader for Memos"""
from typing import List, Optional, Any, Dict
from gpt_index.readers.base import BaseReader
from gpt_index.readers.schema.base import Document
from urllib.parse import urljoin
class MemosReader(BaseReader):
"""Memos reader.
Reads content from an Memos.
"""
def __init__(self, host: str = "https://demo.usememos.com/") -> None:
"""Init params."""
self._memoUrl = urljoin(host, "api/memo")
def load_data(self, params: Dict = {}) -> List[Document]:
"""Load data from RSS feeds.
Args:
params (Dict): Filtering parameters.
Returns:
List[Document]: List of documents.
"""
import requests
documents = []
realUrl = self._memoUrl
if not params:
realUrl = urljoin(self._memoUrl, "all", False)
try:
req = requests.get(realUrl, params)
res = req.json()
except:
raise ValueError("Your Memo URL is not valid")
if not "data" in res:
raise ValueError("Invalid Memo response")
memos = res["data"]
for memo in memos:
content = memo["content"]
extra_info = {"creator": memo["creator"], "resource_list": memo["resourceList"], id: memo["id"]}
documents.append(Document(content, extra_info=extra_info))
return documents