02
15
async function deleteAllTwitterMedia() {
  let processedItems = new Set();

  console.log('미디어 삭제를 시작');

  while (true) {
    const items = Array.from(document.querySelectorAll('li[role="listitem"]'))
      .filter(item => /^verticalGridItem-\d+-profile-grid-0$/.test(item.id) && !processedItems.has(item.id));

    if (items.length === 0) {
      console.log('페이지 스크롤');
      window.scrollBy(0, window.innerHeight);
      await new Promise(r => setTimeout(r, 2000));

      const visibleItems = document.querySelectorAll('li[role="listitem"]').length;
      if (visibleItems === 0) {
        console.log('작업 종료');
        break;
      }
      continue;
    }

    for (const item of items) {
      const itemId = item.id;
      processedItems.add(itemId);

      const link = item.querySelector('a[role="link"]');
      if (link) {
        link.click();
        console.log(`삭제 시작: ${itemId}`);
        await new Promise(r => setTimeout(r, 1000));

        const moreBtn = document.querySelector('button[aria-label="더 보기"]');
        if (moreBtn) {
          moreBtn.click();
          await new Promise(r => setTimeout(r, 500));

          const deleteMenu = Array.from(document.querySelectorAll('div[role="menuitem"]'))
            .find(el => el.textContent.includes('삭제하기'));
          if (deleteMenu) {
            deleteMenu.click();
            await new Promise(r => setTimeout(r, 500));

            const confirmBtn = document.querySelector('button[data-testid="confirmationSheetConfirm"]');
            if (confirmBtn) {
              confirmBtn.click();
              await new Promise(r => setTimeout(r, 1000));

              item.remove();
              console.log(`항목 제거됨: ${itemId}`);
            } else {
              console.warn('삭제 확인 버튼 없음');
            }
          } else {
            console.warn('삭제하기 메뉴 없음');
          }
        } else {
          console.warn('더 보기 버튼 없음');
        }
      } else {
        console.warn('항목 내 링크 없음');
      }

      await new Promise(r => setTimeout(r, 1500)); // 삭제 간격 대기
    }

    console.log('삭제 작업 완료. 페이지를 스크롤하여 추가 미디어 로드 중...');
    window.scrollBy(0, window.innerHeight);
    await new Promise(r => setTimeout(r, 3000));
  }

  console.log('삭제 완료!');
}

deleteAllTwitterMedia();

 

본인 프로필 - 미디어 탭!! 을 켠 상태에서 써주셔야해요

F12 눌러서 콘솔창 연 다음에 위 코드를 써줍니다

마지막 한 줄이 삭제 시작이니까 참고!!!

중간중간 다른 페이지로 튀거나 조금 손이 가기도 하니까 주의해서 사용해주세요 ~.~

 

 

COMMENT