generated at
scrapbox-url-customizer
scrapbox-url-customizer
作った意味なかったかな……と少し思ったが、返信先tweetや引用tweetを取り込めるようになったから上位互換だった
くそ!やられた!(演技)基素
やったぜtakker
基素さんに先越されてちょっとくやしかった
powered by GPT-4だから…基素
GPT使いこなせないせいでcodingが遅い……takker
人間にしては早いと思いますgpt-4
やったこと
やったー基素
scrapbox-url-customizerからは設計を完全に書き換えた
外部リンク記法に変換するscriptではなく、URLを任意の文字列に変換するscriptに汎用化した
余計なURL parametersを除去したり、短縮URLを展開したりするのにも使える
いいね!nishio
設計の解説のつもり.ts
const promise = convert( // 変換したい文字列もしくはURL object text, // 変換処理 // 上から順に適用される // 非同期処理も可能 (url: URL) => { /* ... */ }, (url: URL) => url.pathname.endsWith(".pdf") ? // 文字列を返すと、その文字列で対象のURLが置換され、以降の変換処理は実行されない `[pdf ${url}]` : // URLで返すと、次の変換処理にそれが渡される url, // ... ) // すべての変換が同期で終わるとstringに、一つでも非同期で変換処理が走ったらPromise<string>になる const convertedText = promise instanceof Promise ? await promise : promise;
コアとなる convert Scrapboxのtweet埋め込みとは全く関係ない
変換処理のサンプルとしてScrapboxのtweet埋め込みScrapboxのURLタイトル埋め込みを提供している
ScrapboxのURLタイトル埋め込みの方は、GM_fetchがないときapi/embed-text/urlにfallbackする
Scrapboxのtweet埋め込みGM_fetchのみを使っている
api/embed-text/twitterは動いていないので使わなかった……のだが復活したらしい[- 2023/03/29#6423843732ef920000370ef9 ]
書き直すか……
引用tweetと返信先tweetのみを一緒に展開している
thread中のすべてのtweetを展開するコードの記述は読者の課題とする
その他、t.coの展開などの処理をサンプルとして置いてある
詳しい書き方等は、例によってAPI referenceを参照してください

編集用コマンド
0.2.1 => 0.2.1

使い方
簡単な方法
ここを押して生成されたコードを、自分のページの script.js に貼り付ける
これは以下のコードをbuildしたものです
同期変換、つまりfetchせずに変換が終了したときは、即座に文字列置換が走るようになっている
(PC限定)GM fetchを入れるといい感じになります
カスタマイズ方法
このUserScriptが提供するのは、URLの変換処理のみです
実際にScrapbox上で編集するコードは各自で書く必要があります
上記のコードを参考にしてカスタマイズしてください
カスタマイズ例
twitterの画像をgyazoにuploadする
連続してtwitter APIを叩いて、連ツイを取得する
リンク先のページの本文全てをscrapboxに取り込む
ScrapboxでWebクリップするScriptとしても使える
別の全然違うUserScript内で、URLを変換する処理として使う


基素
使ってみたいけどScrapboxで利用するための初期設定がまだわかっていない
scrapbox-url-customizer#6427284e774b1700009c664fのimportはこのままでは動かないので適切にしないといけない
簡単に使う場合は、ここからPopupMenuとして実装したサンプルを取得できますtakker
mod.ts
export * from "https://raw.githubusercontent.com/takker99/scrapbox-url-customizer/0.2.1/mod.ts";
これでmodを読み込んでscrapbox-url-customizer#6427284e774b1700009c664fみたいな感じで書いていくのかな
そんな感じですtakker
githubのdepsに依存しているからそのままだと読めない気がする
サンプルだとinsertText()を使っていますtakker
scrapbox-userscript-stdから読み込んでもいいですし、/motoso/Tweetを取り込むPopup menu v2#64183879774b17000008c111をコピペして使っても大丈夫です
URL変換処理以外のすべてを自前で実装しなければならないので、設定はけっこう大変かも……takker
ユーザーが自由にカスタマイズできるようにしたかった
なるほど基素
まだ触れていない基素

wogikaze
エラー出るけど何かミスっているのだろうか..
結局エラー出てるのか
ビンゴ
ok(js)
fetch_(`https://cdn.syndication.twimg.com/tweet-result?id=${tweetId}&token=x`);
でも全文じゃなくなってるな、なぜだ
Blue課金勢の長文は全文を取得できませんtakker
それ以外も展開されない場合はおかしいな
もしかしたら埋め込みも全文でないようになってるのかも
帰ったら調べます
いやこれscrapbox側のjavascriptやないかい、console.errorでこっち呼べるんだ

UserScript