Files
ObsidianAI/force_sync.py

52 lines
1.5 KiB
Python
Raw Permalink Normal View History

2026-01-03 10:23:05 -06:00
#!/usr/bin/env python3
"""
Force Obsidian LiveSync to re-sync by touching all documents
This updates mtime to trigger the _changes feed
"""
import couchdb
import time
from urllib.parse import quote
USER = "admin"
PASSWORD = "DonCucarach0!?"
IP_ADDRESS = "100.100.112.48"
PORT = "5984"
DB_NAME = "obsidiandb"
def force_sync():
safe_password = quote(PASSWORD, safe="")
safe_username = quote(USER, safe="")
url = f"http://{safe_username}:{safe_password}@{IP_ADDRESS}:{PORT}/"
server = couchdb.Server(url)
db = server[DB_NAME]
print("Force syncing all files by updating mtime...")
current_time = int(time.time() * 1000)
count = 0
for row in db.view('_all_docs', include_docs=True):
doc = row.doc
# Only update file metadata docs
if 'children' in doc and isinstance(doc.get('children'), list):
path = doc.get('path', doc['_id'])
# Update mtime to current time to trigger sync
doc['mtime'] = current_time
try:
db.save(doc)
count += 1
print(f"{path}")
time.sleep(2) # Rate limit: 2 seconds between updates
except Exception as e:
print(f"{path}: {e}")
print(f"\nUpdated {count} files. Obsidian should now re-sync.")
print("Check your Obsidian sync plugin - it should detect changes now.")
if __name__ == "__main__":
force_sync()