embed-tweet
Scrapboxにツイートを埋め込むUserScript
こんな感じに引用表示に書き換えます
注意
Twitter公式の埋め込みと違って、単に文章をコピーするだけなので著作権に気をつけましょう
アカウントの表示名の変更なども反映されません
埋め込み用HTMLからは画像のURLが分からないので、画像や動画は埋め込まれません
どうしても画像を表示したければ、画像を別途アップロードするか手動で画像のURL(pbs.twimg.com/...)をコピペしてください
使い方
0. インポートします import '/api/code/kn1cht/embed-tweet/script.js'
1. ツイート埋め込み用のHTMLを貼り付けます
2. 貼ったものを全選択し、 Embed Tweet
ボタンを押すと埋め込まれます
Issue
インデントを付けた状態で実行すると最初の改行より後がインデントなしになる
修正
Changelog
7696c02
2019/04/30 公開
0073008
2019/05/01 複数のリンクがあるとツイートが途中で消える問題を修正
fb0a22e
2019/05/52 scriptタグが置換されない問題を修正
0754ff0
2019/06/23 インデントに対応
script.jsscrapbox.PopupMenu.addButton({
title : 'Embed Tweet',
onClick : text => {
const convertContent = (content, indent) => {
const replaced = content
.replace(/<a href="(https?:.*?)">(.*?)<\/a>/g, '[$1 $2]')
.replace(/<br>/g, `\n${indent}`);
const elem = document.createElement('div');
elem.innerHTML = replaced;
return indent + elem.innerText;
}
const tweetRegex = /(?<spaces>[\t ]*)<blockquote[\w"\-= ]*><p[\w"\-= ]*>(?<content>.*)<\/p>—(?<author>.*)(?<link><a.*>)<\/blockquote>[\n\t ]*<script.*?><\/script>/;
const match = text.match(tweetRegex);
if(!match) return;
const {spaces, content, author, link} = match.groups;
const ind = `${spaces}>`;
return text.replace(tweetRegex, convertContent(content, ind) + '\n' + convertContent(`\t—${author} ${link}`, ind));
}
})