收起左侧

相册批量删除功能

2
回复
97
查看
[ 复制链接 ]

2

主题

1

回帖

0

牛值

江湖小虾

2025-12-15 08:24:48 显示全部楼层 阅读模式

云同步上传了某APP不规范的缓存目录的图片, 导致多了快一百个相册, 虽然删除了源文件, 但是相册依然存在。

目前只能一个一个手动点进去删除非常麻烦。

图片.png

图片.png

收藏
送赞
分享

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

2

主题

1

回帖

0

牛值

江湖小虾

2025-12-15 11:12:03 楼主 显示全部楼层

用ChatGPT 写了一个批量删除空相册的代码, 只需要在相册页面运行即可
因为网络问题, 部分没加载删除成功的需要刷新后 再次粘贴运行

const sleep = (ms, label = '') =>
  new Promise(r => {
    label && console.log(`[sleep] ${label} ${ms}ms`);
    setTimeout(r, ms);
  });
function waitFor(selector, timeout = 5000, label = '') {
  console.log(`[waitFor:start] ${label || selector}`);

  return new Promise((resolve, reject) => {
    const start = Date.now();
    const timer = setInterval(() => {
      const el = document.querySelector(selector);

      if (el) {
        clearInterval(timer);
        console.log(
          `[waitFor:success] ${label || selector} in ${Date.now() - start}ms`
        );
        resolve(el);
      } else if (Date.now() - start > timeout) {
        clearInterval(timer);
        console.warn(
          `[waitFor:timeout] ${label || selector} after ${timeout}ms`
        );
        reject(new Error(`timeout: ${selector}`));
      }
    }, 50);
  });
}
function waitForIn(root, selector, timeout = 3000, label = '') {
  console.log(`[waitFor:start] ${label || selector}`);

  return new Promise((resolve, reject) => {
    const start = Date.now();
    const timer = setInterval(() => {
      const el = root.querySelector(selector);

      if (el) {
        clearInterval(timer);
        console.log(
          `[waitFor:success] ${label || selector} in ${Date.now() - start}ms`
        );
        resolve(el);
      } else if (Date.now() - start > timeout) {
        clearInterval(timer);
        console.warn(
          `[waitFor:timeout] ${label || selector}`
        );
        reject(new Error(`timeout: ${label || selector}`));
      }
    }, 50);
  });
}


(async () => {
  const albums = document.querySelectorAll('.relative.cursor-pointer');
  console.log(`[init] 发现相册数量:${albums.length}`);

  for (let i = 0; i < albums.length; i++) {
    console.log(`\n[album:${i}] 开始处理`);

    const AlbumI = albums[i];
    const nameEl = AlbumI.querySelector('p');
    const numEl  = AlbumI.querySelector('span');

    if (!nameEl || !numEl) {
      console.warn(`[album:${i}] 结构不完整,跳过`);
      continue;
    }

    const AlbumName = nameEl.innerText.trim();
    const AlbumNum  = parseInt(numEl.innerText, 10);

    console.log(
      `[album:${i}] 名称="${AlbumName}" 照片数量=${AlbumNum}`
    );

    if (AlbumNum !== 0) {
      console.log(`[album:${i}]  ${AlbumName}不是空相册,跳过`);
      continue;
    }

    try {
      console.log(`[album:${i}] hover`);
        AlbumI.dispatchEvent(
        new MouseEvent('mouseenter', { bubbles: true })
        );

        console.log(`[album:${i}] 等待更多按钮`);
        const moreBtn = await waitForIn(
        AlbumI,
        '[aria-haspopup="true"]',
        3000,
        'more button'
        );

        console.log(`[album:${i}] 点击更多按钮`);
        moreBtn.click();


      console.log(`[album:${i}] 等待下拉菜单`);
      await waitFor(
        '.semi-dropdown-item',
        5000,
        'dropdown item'
      );

      const deleteItem = [...document.querySelectorAll('.semi-dropdown-item')]
        .find(li => li.innerText.includes('删除相册'));

      if (!deleteItem) {
        console.warn(`[album:${i}] 未找到“删除相册”菜单项`);
        continue;
      }

      console.log(`[album:${i}] 点击删除相册`);
      deleteItem.click();

      console.log(`[album:${i}] 等待确认框`);
      const confirmBtn = await waitFor(
        'button[aria-label="confirm"]',
        5000,
        'confirm button'
      );

      console.log(`[album:${i}] 确认删除`);
      confirmBtn.click();

      console.log(`✔ 已删除空相册:${AlbumName}`);

      await sleep(1000, '删除后缓冲');
    } catch (err) {
      console.error(
        `[album:${i}] 失败:${AlbumName}`,
        err.message || err
      );
    }
  }

  console.log('[done] 所有相册处理完成');
})();


图片.png

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

6

主题

1万

回帖

0

牛值

管理员

社区上线纪念勋章社区共建团荣誉勋章飞牛百度网盘玩家fnOS1.0上线纪念勋章

2025-12-22 19:48:52 显示全部楼层

感谢反馈,这个我们看看

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则