Recent check works
This commit is contained in:
@@ -204,36 +204,54 @@ class Obsidian():
|
||||
|
||||
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.
|
||||
|
||||
Args:
|
||||
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)
|
||||
|
||||
Returns:
|
||||
List of recently modified files with metadata
|
||||
"""
|
||||
url = f"{self.get_base_url()}/vault/recent"
|
||||
params = {"limit": limit}
|
||||
# Build the DQL query based on parameters
|
||||
query_lines = ["TABLE file.mtime"]
|
||||
|
||||
# Add WHERE clauses
|
||||
where_clauses = []
|
||||
if days is not None:
|
||||
params["days"] = days
|
||||
where_clauses.append(f"file.mtime >= date(today) - dur({days} days)")
|
||||
|
||||
if extensions is not None:
|
||||
params["extensions"] = ",".join(extensions)
|
||||
if 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():
|
||||
response = requests.get(
|
||||
url,
|
||||
headers=self._get_headers(),
|
||||
params=params,
|
||||
verify=self.verify_ssl,
|
||||
response = requests.post(
|
||||
url,
|
||||
headers=headers,
|
||||
data=dql_query.encode('utf-8'),
|
||||
verify=self.verify_ssl,
|
||||
timeout=self.timeout
|
||||
)
|
||||
response.raise_for_status()
|
||||
|
||||
return response.json()
|
||||
|
||||
return self._safe_call(call_fn)
|
||||
|
Reference in New Issue
Block a user