Recent check works

This commit is contained in:
Jevin Maltais
2025-03-22 08:44:14 -04:00
parent 4c9cea7f30
commit dd7dfb56c4

View File

@@ -204,36 +204,54 @@ class Obsidian():
return self._safe_call(call_fn) return self._safe_call(call_fn)
def get_recent_changes(self, limit: int = 10, days: int = None, extensions: list = None) -> Any: def get_recent_changes(self, limit: int = 10, days: int = 90, extensions: list = None) -> Any:
"""Get recently modified files in the vault. """Get recently modified files in the vault.
Args: Args:
limit: Maximum number of files to return (default: 10) limit: Maximum number of files to return (default: 10)
days: Only include files modified within this many days (optional) days: Only include files modified within this many days (default: 90)
extensions: Only include files with these extensions (optional) extensions: Only include files with these extensions (optional)
Returns: Returns:
List of recently modified files with metadata List of recently modified files with metadata
""" """
url = f"{self.get_base_url()}/vault/recent" # Build the DQL query based on parameters
params = {"limit": limit} query_lines = ["TABLE file.mtime"]
# Add WHERE clauses
where_clauses = []
if days is not None: if days is not None:
params["days"] = days where_clauses.append(f"file.mtime >= date(today) - dur({days} days)")
if extensions is not None: if extensions:
params["extensions"] = ",".join(extensions) ext_list = ", ".join(f'"{ext}"' for ext in extensions)
where_clauses.append(f"file.ext IN ({ext_list})")
if where_clauses:
query_lines.append(f"WHERE {' AND '.join(where_clauses)}")
# Add sorting and limit
query_lines.append("SORT file.mtime DESC")
query_lines.append(f"LIMIT {limit}")
# Join with proper DQL line breaks
dql_query = "\n".join(query_lines)
# Make the request to search endpoint
url = f"{self.get_base_url()}/search/"
headers = self._get_headers() | {
'Content-Type': 'application/vnd.olrapi.dataview.dql+txt'
}
def call_fn(): def call_fn():
response = requests.get( response = requests.post(
url, url,
headers=self._get_headers(), headers=headers,
params=params, data=dql_query.encode('utf-8'),
verify=self.verify_ssl, verify=self.verify_ssl,
timeout=self.timeout timeout=self.timeout
) )
response.raise_for_status() response.raise_for_status()
return response.json() return response.json()
return self._safe_call(call_fn) return self._safe_call(call_fn)