import { cli } from '@jackwener/opencli/registry';
cli({
    site: 'facebook',
    name: 'groups',
    access: 'read',
    description: 'List your Facebook groups',
    domain: 'www.facebook.com',
    args: [
        { name: 'limit', type: 'int', default: 20, help: 'Number of groups' },
    ],
    columns: ['index', 'name', 'last_post', 'url'],
    pipeline: [
        { navigate: { url: 'https://www.facebook.com/groups/feed/', settleMs: 3000 } },
        { evaluate: `(() => {
  const limit = \${{ args.limit }};
  const links = Array.from(document.querySelectorAll('a'))
    .filter(a => {
      const href = a.href || '';
      return href.includes('/groups/') &&
        !href.includes('/feed') &&
        !href.includes('/discover') &&
        !href.includes('/joins') &&
        !href.includes('category=create') &&
        a.textContent.trim().length > 2;
    });

  // Deduplicate by href
  const seen = new Set();
  const groups = [];
  for (const a of links) {
    const href = a.href.split('?')[0];
    if (seen.has(href)) continue;
    seen.add(href);
    const raw = a.textContent.trim().replace(/\\s+/g, ' ');
    // Split name from "上次发帖" info
    const parts = raw.split(/上次发帖|Last post/);
    groups.push({
      name: (parts[0] || '').trim().substring(0, 60),
      last_post: parts[1] ? parts[1].replace(/^[：:]/, '').trim() : '-',
      url: href,
    });
  }
  return groups.slice(0, limit).map((g, i) => ({ index: i + 1, ...g }));
})()
` },
    ],
});
