登录

收藏了也不会看,X/Twitter JS 清空收藏夹

59811
  • 版主楼主博主 编辑于

    X/ Twitter 清空收藏夹,浏览器打开 https://x.com/i/history 登录 F12 控制台执行:

    (async () => {
      const sleep = ms => new Promise(r => setTimeout(r, ms));
      const KEY = 'bm_removed_total_v3';
      let removed = +(sessionStorage.getItem(KEY) || 0);
      const before = removed;
      let idle = 0, skipped = 0;
      while (idle < 10) {
        const students = [...document.querySelectorAll('button[data-testid="removeBookmark"]')];
        const btn = students.find(b => {
          const row = b.closest('article, [data-testid="cellInnerDiv"]');
          return row && !row.dataset.bmSkip;
        });
        if (!btn) {
          if (students.length > 0) break;            // 剩下的都是失败跳过项
          idle++;
          const el = document.scrollingElement;
          el.scrollTop = el.scrollHeight;
          await sleep(2500);
          continue;
        }
        idle = 0;
        const row = btn.closest('article, [data-testid="cellInnerDiv"]');
        btn.click();
        let ok = false;
        for (let i = 0; i < 12 && !ok; i++) {        // 最多等 3 秒确认状态变化
          await sleep(250);
          ok = !document.contains(row)
            || !row.querySelector('button[data-testid="removeBookmark"]');
        }
        if (ok) {
          removed++;
          sessionStorage.setItem(KEY, removed);
          if (removed % 10 === 0) console.log('累计已取消 ' + removed + ' 条');
        } else {
          row.dataset.bmSkip = '1';
          skipped++;
          console.warn('有一条取消后状态没变,已标记跳过(可能是限流),稍后可重跑');
        }
      }
      console.log('本轮取消 ' + (removed - before) + ' 条,累计 ' + removed + ' 条,失败跳过 ' + skipped + ' 条');
      console.log('请刷新页面确认;如果还有书签,再跑一遍即可');
    })();
    
    收藏支持反对打赏
    个性签名

    vps.gift | vps.gripe

11 条回复

发表回复