Merge pull request #55 from vicampuzano/Metadata-for-periodic-notes
Adding a parameter to optionally retrieve metadata for periodic notes, in addition to just the content.
This commit is contained in:
@@ -173,11 +173,14 @@ class Obsidian():
|
|||||||
|
|
||||||
return self._safe_call(call_fn)
|
return self._safe_call(call_fn)
|
||||||
|
|
||||||
def get_periodic_note(self, period: str) -> Any:
|
def get_periodic_note(self, period: str, type: str = "content") -> Any:
|
||||||
"""Get current periodic note for the specified period.
|
"""Get current periodic note for the specified period.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
period: The period type (daily, weekly, monthly, quarterly, yearly)
|
period: The period type (daily, weekly, monthly, quarterly, yearly)
|
||||||
|
type: Type of the data to get ('content' or 'metadata').
|
||||||
|
'content' returns just the content in Markdown format.
|
||||||
|
'metadata' includes note metadata (including paths, tags, etc.) and the content..
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
Content of the periodic note
|
Content of the periodic note
|
||||||
@@ -185,7 +188,10 @@ class Obsidian():
|
|||||||
url = f"{self.get_base_url()}/periodic/{period}/"
|
url = f"{self.get_base_url()}/periodic/{period}/"
|
||||||
|
|
||||||
def call_fn():
|
def call_fn():
|
||||||
response = requests.get(url, headers=self._get_headers(), verify=self.verify_ssl, timeout=self.timeout)
|
headers = self._get_headers()
|
||||||
|
if type == "metadata":
|
||||||
|
headers['Accept'] = 'application/vnd.olrapi.note+json'
|
||||||
|
response = requests.get(url, headers=headers, verify=self.verify_ssl, timeout=self.timeout)
|
||||||
response.raise_for_status()
|
response.raise_for_status()
|
||||||
|
|
||||||
return response.text
|
return response.text
|
||||||
|
@@ -422,6 +422,12 @@ class PeriodicNotesToolHandler(ToolHandler):
|
|||||||
"type": "string",
|
"type": "string",
|
||||||
"description": "The period type (daily, weekly, monthly, quarterly, yearly)",
|
"description": "The period type (daily, weekly, monthly, quarterly, yearly)",
|
||||||
"enum": ["daily", "weekly", "monthly", "quarterly", "yearly"]
|
"enum": ["daily", "weekly", "monthly", "quarterly", "yearly"]
|
||||||
|
},
|
||||||
|
"type": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "The type of data to get ('content' or 'metadata'). 'content' returns just the content in Markdown format. 'metadata' includes note metadata (including paths, tags, etc.) and the content.",
|
||||||
|
"default": "content",
|
||||||
|
"enum": ["content", "metadata"]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"required": ["period"]
|
"required": ["period"]
|
||||||
@@ -436,9 +442,14 @@ class PeriodicNotesToolHandler(ToolHandler):
|
|||||||
valid_periods = ["daily", "weekly", "monthly", "quarterly", "yearly"]
|
valid_periods = ["daily", "weekly", "monthly", "quarterly", "yearly"]
|
||||||
if period not in valid_periods:
|
if period not in valid_periods:
|
||||||
raise RuntimeError(f"Invalid period: {period}. Must be one of: {', '.join(valid_periods)}")
|
raise RuntimeError(f"Invalid period: {period}. Must be one of: {', '.join(valid_periods)}")
|
||||||
|
|
||||||
|
type = args["type"] if "type" in args else "content"
|
||||||
|
valid_types = ["content", "metadata"]
|
||||||
|
if type not in valid_types:
|
||||||
|
raise RuntimeError(f"Invalid type: {type}. Must be one of: {', '.join(valid_types)}")
|
||||||
|
|
||||||
api = obsidian.Obsidian(api_key=api_key, host=obsidian_host)
|
api = obsidian.Obsidian(api_key=api_key, host=obsidian_host)
|
||||||
content = api.get_periodic_note(period)
|
content = api.get_periodic_note(period,type)
|
||||||
|
|
||||||
return [
|
return [
|
||||||
TextContent(
|
TextContent(
|
||||||
|
Reference in New Issue
Block a user