0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

闇のプログラミングAdvent Calendar 2021

Day 18

Twitter Webで新規ツイートを表示したときに特定ユーザーのツイートがあればそれをいいねする

Posted at

きっかけ

コード

2021/12/11時点1では、下のコードをdevtoolsで入れて @sytkmをフォローすれば、タイムラインに @sytkmのツイートが出てきたときに自動でいいねされます。

5行目の"sytkm"ってところを任意のscreen_nameに変えればその人になるのでお試しあれ。

const observer = new MutationObserver((mutations) => {
    mutations.forEach((mutation) => {
        if(mutation.addedNodes.length>0){
            const target = mutation.addedNodes[0];
             if(target.querySelector('[tabindex="-1"]').href.replace(/^.*\//g, "")=="sytkm"){
                target.querySelector('[data-testid="like"]').click();
                console.log("like!");
             };
        }
    });
});

const element = document.querySelector('[aria-label="タイムライン: ホームタイムライン"]').firstElementChild;

const config = {
    childList:true
};

observer.observe(element, config);

解説

DOMの変更を監視できるMutationOvserverを使いました。
configchildList:trueとすることで新しく追加されるDOMを確認し、mutation.addedNodes[0]でその新規追加DOMを指定。
sytkmのツイートならいいねボタンのDOMをclick()しいいねするように。

思ったこと

Twitter WebはReactを使っているので該当のDOMを選択するのが大変でした。
ユーザーの判定はtabindex="-1"となっているDOMのhrefが運良くツイートユーザーのURLだったのでそこで判定しました。
ちょっと構成変わったら使えなくなるのと現時点でも読み込みが遅いとエラーが出るのが微妙かも。
とりあえず使えるので投稿。

  1. TwitterはよくUIが変わっているイメージがあるので。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?