Twilogで現在表示中のページのツイートを全削除する

Twilogには特定ツイートを一括で削除する機能がなかったので適当に作りました。
ページネーション機能はないので暇な人作ってください。
事前にページネーションリンクを取得して各ページのHTMLを取得してID引っこ抜けばできると思います。多分

/**
 * これは何?
 *  Twilogで現在表示中のページのツイートをすべて削除します
 *  事前に削除対象のツイートを日付選択や検索などで表示した上で実行します
 *  ページネーション機能はありません
 *
 * 使い方
 *  このスクリプトをChromeのDevtoolsのConsoleにコピペして実行します
 *  複数ページある場合はページをリロードして同様に操作します
 */

const getSession = () => {
  const scr = [...document.getElementsByTagName('script')].find(v => v.text.match(/j-delete-tweet.rb/) !== null)
  const mat = scr.text.match(/j-delete-tweet.rb\?c=(.+?)&.+&token=(.+)"/)
  return {
    c: mat[1],
    token: mat[2]
  }
}

const getDeleteIdList = () => {
  return [...document.getElementsByClassName('tl-del')]
    .map((el) => {
      const mat = el.children[0].onclick.toString().match(/delete_tweet\('(.+?)','(.+?)',/)
      return {
        date: mat[1],
        status_id: mat[2]
      }
    }
  )
}

const createDeleteRequest = (c, token) => {
  return async (date, statusId) => {
    return fetch(`https://twilog.org/j-delete-tweet.rb?c=${c}&date=${date}&status_id=${statusId}&token=${token}`)
  }
}

const session = getSession()
const requestDelete = createDeleteRequest(session.c, session.token)

const deleteIdList = getDeleteIdList()

let index = 0;
setInterval(async () => {
  if (index < deleteIdList.length) {
      const del = deleteIdList[index]
      const result = await requestDelete(del.date, del.status_id)
      console.log(`${index} / ${deleteIdList.length}`, result)
      ++index
  }
}, 1000)

JavaScriptで正規表現の名前付きキャプチャを利用する

ググっても意外と出てこないレア情報な気がする

replace()

'foo bar'.replace(/(?<first>.+?) (?<last>.+)/, '$<first>-$<last>');

match()

const mat = 'foo bar'.match(/(?<first>.+?) (?<last>.+)/);
console.log(mat.groups.first, mat.groups.last);

参考

Windows 11のChromeで正確な位置情報を取得できるようにする

このオプションはGoogle Chrome 112.0.5615.49にはありませんが、116.0.5845.188, 117.0.5938.88, 120.0.6099.225では表示されていました

Windows 11でGoogle Chromeを利用しているケースで正確な位置情報が取得できない場合の対処方法の紹介です。KING OF TIMEとかUberEatsの位置情報取得が上手く行かないときに使えると思います。

確認環境

Env Ver
Windows 11 22621.1105
Google Chrome 109.0.5414.120

手順

  1. Windowsの設定を開く
  2. プライバシーとセキュリティ>位置情報を開く
  3. デスクトップアプリに位置情報へのアクセスを許可するをON
    1. デスクトップアプリに位置情報へのアクセスを許可するをONにする
  4. 以下のアドレスを開き設定をEnabledに変更
    1. chrome://flags/#enable-winrt-geolocation-implementation
    2. 設定をEnabledに変更
  5. Google Mapsなど適当な位置利用サイトを開き、位置情報取得操作を行う
  6. 位置情報の利用を許可
  7. Windows側の位置情報が反映されればOK

関連記事

Windows 11で既定の位置を設定出来ないのを解決する

この記事では設定のプライバシーとセキュリティ>位置情報にある「既定の位置」の「既定値に設定」が動かない場合の解決法を紹介します。

確認環境

Env Ver
Windows 11 22621.1194

問題事象

「既定値に設定」ボタンを押しても何も起きない

「既定値に設定」ボタンを押しても何も起きない

解決方法

  1. Microsoft Storeを開く
  2. Mapsで検索
  3. Windowsマップというアプリを入手する
    1. Windowsマップというアプリを入手する
  4. 設定のプライバシーとセキュリティ>位置情報を開く
  5. 「既定の位置」の「既定値に設定」をクリックする
    1. 「既定の位置」の「既定値に設定」をクリックする
  6. マップアプリが開き座標を選択できれば解決です

あとがき

せめてマップアプリが入ってませんとかエラーくらい出してほしい
問題が起きてるときはボタン押しても何も起きないので意味不明すぎる…