프로필 로고

X(구 트위터) '마음에 들어요' 일괄 삭제하는 코드 공유 (2025.01.19.)

반응형

 

 

 

1. 트위터 마음에 들어요(맘찍, 좋아요) 삭제?

 

X(구 트위터)에서 마음을 누르다보면 어느새 엄청나게 쌓여있는 걸 볼 수 있다.
일일히 삭제하는 건 사실 너무나도 힘든 일이라,
보다 편하게 삭제하기 위해 익스텐션이나 프로그램을 찾아봤더니 대부분 유료더라.

그런 유료 서비스를 이용하는 것이 아니라
데스크탑(PC) 환경에서 스크립트를 활용해 쉽게 맘찍을 삭제할 수 있는 방법을 고안해보았다.

 

2. 맘찍 일괄 삭제하는 법

 

기존에 구글링으로 나온 스크립트 코드는 정상적으로 동작하지 않아서,
새롭게 바뀐 x의 html 구조에 맞게 커스텀된 코드를 작성하였다. (25.01.19.)

(나는 문제 없이 작동하는 것을 확인했으나 문제 시 보장은 못 함)

 

 

1. 일단 PC화면에서 내 프로필 - '마음에 들어요' 목록으로 이동

 

 

 

 

 

2. 브라우저 오른쪽 상단에 위치한 더보기 ⋮ 아이콘을 클릭 -> 도구 더보기 -> 개발자도구 선택

 

 

 

 

 

 

3. Console을 클릭하고 아래 코드를 붙여넣기 후 엔터

참고로 처음 붙여넣기하면 경고문구가 뜨면서 작동을 안 할 텐데,
'allow pasting' 입력하고 엔터 누른 뒤 다시 명령어 입력하면 됨

 

// 작업 시작을 알리는 메시지
console.log("마음에 들어요 취소 작업을 시작합니다. 계정 상태를 주기적으로 확인하세요.");

// 스크립트 속도 조정을 위한 변수
const intervalTime = 4000; // 4초 간격으로 실행 (속도 제한 대비)

// 취소 횟수를 추적
let unlikeCount = 0;

// 실행 중인지 확인하는 플래그
let isRunning = true;

// 작업 수행
let unlikeInterval = setInterval(() => {
    if (!isRunning) {
        console.log("작업이 사용자 요청으로 중단되었습니다.");
        clearInterval(unlikeInterval);
        return;
    }

    // "마음에 들어요 취소" 버튼을 모두 선택
    const unlikeButtons = document.querySelectorAll('button[data-testid="unlike"]');
    
    if (unlikeButtons.length > 0) {
        // 버튼 클릭
        unlikeButtons.forEach((button) => {
            button.click();
            unlikeCount++;
            console.log(`마음에 들어요 취소 클릭 (${unlikeCount}회 완료)`);
        });

        // 페이지 아래로 스크롤
        window.scrollTo(0, document.body.scrollHeight);
        console.log("페이지를 아래로 스크롤합니다...");
    } else {
        // 더 이상 버튼이 없으면 작업 종료
        console.log("더 이상 '마음에 들어요 취소' 버튼이 없습니다. 작업을 종료합니다.");
        clearInterval(unlikeInterval);
        isRunning = false;
    }
}, intervalTime);

// 사용자가 직접 작업을 중단할 수 있도록 추가
document.addEventListener('keydown', (event) => {
    if (event.key === 'q') {
        console.log("작업 중단 요청이 감지되었습니다. 작업을 중단합니다.");
        isRunning = false;
    }
});

// 작업 중인 상태를 주기적으로 출력
let statusInterval = setInterval(() => {
    if (!isRunning) {
        clearInterval(statusInterval);
    } else {
        console.log(`현재까지 ${unlikeCount}개의 '마음에 들어요'가 취소되었습니다. 작업 진행 중...`);
    }
}, 10000); // 10초마다 상태 출력

 

(나는 문제 없이 작동하는 것을 확인했으나 문제 시 보장은 못 함)

 

 

 

스크립트를 실험해보느라 얼마안되는 200개의 맘찍이 다 사라져버렸지만
어쨌든 정상적으로 작동하는 것을 확인했음 (25.01.19.)

 

 

 

 

반응형