ソンブレロ鍋

鍋メモ

技術書典 6 のサークルチェックを楽にする

まとめ

技術書典6のサークルチェックを楽にしたい.技術書典サークルチェッカー (https://seasidelab.github.io/tbf-circle/ ) というのがあった.
技術書典サークルチェッカーでつけたスターを,技術書典公式ページに反映したい.したいのでする.

内容

  1. 技術書典サークルチェッカーを使ってサークルの概要をチェックする,気に入ったサークルにスターを付ける
  2. 技術書典サークルチェッカーでスターを付けたサークル一覧データを得る
  3. 一覧を技術書典の公式ページから入力する

上記処理の 2, 3 をブラウザのコンソールで実行できるようにした.

// サークルチェッカーのページで実行する https://seasidelab.github.io/tbf-circle/
//
// サークルチェッカーでスターを付けたサークル一覧を取得
// => "{\"12345678\":\"12345678\",\"98765432\":\"98765432\"}"
localStorage.getItem("star"); // これで取得した文字列を使う

サークルチェッカーで得た文字列をコピペする.

// 技術書典6のページでログインしてから実行する https://techbookfest.org/event/tbf06/circle
//
// 処理する時に使う wait ヘルパー
let wait = function sleep(milliseconds) {  return new Promise(resolve => setTimeout(resolve, milliseconds)); }

(async function(){
  // サークルチェッカーのページで取得してきたサークル一覧を入力する(Pasteする)
  let starList = Object.keys(JSON.parse(XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX));

  console.log("start");
  // 全サークルを取得
  Array.prototype.slice.call(document.getElementsByClassName("circle-list-item-link"))
  // スターリストに入れているサークルだけ取得
  .filter(circle => starList.includes(circle.getAttribute("href").split('/').slice(-1)[0]))
  // 技術書典のサークルチェックリストに入れるボタンを取得
  .map(
    circle =>
      circle
        .getElementsByClassName("circle-list-item-name")[0]
        .getElementsByTagName("button")[0])
  // 既にスターを付けてるボタンを押すと toggle されてスターが外れるので,"追加"できるサークルだけにする
  .filter(
    btn =>
      btn.getAttribute("mattooltip").includes("追加")
  )
  // スターボタンを押す
  // 一応ちょっと wait 入れる
  .forEach(btn => { btn.click(); await wait(200); });
  console.log("end")
})();

Firefox 65.0.1 で実行した.
なお, wait 入れたりしてから動作確認してないので動くか不明