技術書典 6 のサークルチェックを楽にする
updated: 2019-03-23
まとめ
技術書典6のサークルチェックを楽にしたい.技術書典サークルチェッカー (https://seasidelab.github.io/tbf-circle/ ) というのがあった.
技術書典サークルチェッカーでつけたスターを,技術書典公式ページに反映したい.したいのでする.
詳細
- 技術書典サークルチェッカーを使ってサークルの概要をチェックする,気に入ったサークルにスターを付ける<
- 技術書典サークルチェッカーでスターを付けたサークル一覧データを得る<
- 一覧を技術書典の公式ページから入力する
上記処理の 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 入れたりしてから動作確認してないので動くか不明