Files
hammerspoon/scripts/sync_note copy.js
T
2026-05-14 18:59:23 -04:00

73 lines
2.4 KiB
JavaScript

const { chromium } = require('playwright');
const path = require('path');
async function sendNote(text) {
const browser = await chromium.launch({ headless: true });
const authPath = path.join(__dirname, 'auth.json');
const context = await browser.newContext({ storageState: authPath });
const page = await context.newPage();
await page.setViewportSize({ width: 1280, height: 1000 });
try {
const targetUrl = 'http://myaff.duckdns.org:3010/workspace/fc2caf2b-3e3e-48cc-9533-4eb63b4753cf/M5HIySO_xVmitXRc3ZjdQ';
console.log('Opening Inbox...');
await page.goto(targetUrl, { waitUntil: 'domcontentloaded', timeout: 60000 });
await page.waitForSelector('#app', { timeout: 30000 });
// Crucial: Give the workspace 15s to fully load the existing notes
console.log('Syncing existing content (15s)...');
await page.waitForTimeout(15000);
// Click center to focus
await page.mouse.click(640, 400);
await page.waitForTimeout(1000);
// MOVE TO ABSOLUTE BOTTOM
console.log('Navigating to bottom...');
await page.keyboard.press('Meta+ArrowDown');
await page.waitForTimeout(500);
await page.keyboard.press('Enter');
await page.keyboard.press('Enter');
const dateStr = new Date().toLocaleString('en-CA', {
dateStyle: 'medium',
timeStyle: 'short'
});
// --- SEQUENTIAL FORMATTING ---
// We type and wait for each block to "register" before moving on
console.log('Injecting Divider...');
await page.keyboard.type('---');
await page.keyboard.press('Enter');
await page.waitForTimeout(1500); // Wait for horizontal line conversion
console.log('Injecting Heading...');
// We type '## ' then wait, then the text. The space after ## is the trigger.
await page.keyboard.type('## ');
await page.waitForTimeout(500);
await page.keyboard.type('📝 Note: ' + dateStr);
await page.keyboard.press('Enter');
await page.waitForTimeout(1000);
console.log('Injecting Content...');
await page.keyboard.type('* ');
await page.waitForTimeout(500);
await page.keyboard.type(text);
await page.keyboard.press('Enter');
// Final wait to ensure the YJS sync broadcasts the new blocks
await page.waitForTimeout(7000);
console.log('--- Done ---');
} catch (err) {
console.error('Error:', err.message);
} finally {
await browser.close();
}
}
const noteText = process.argv[2];
if (noteText) sendNote(noteText);