巴哈編輯器與留言區圖片網址格式化

在你要貼上 Twitter 跟 Discord 圖片連結時,改成巴哈能認出來的格式

目前为 2023-12-18 提交的版本。查看 最新版本

// ==UserScript==
// @name         巴哈編輯器與留言區圖片網址格式化
// @namespace    https://home.gamer.com.tw/homeindex.php?owner=qwert535286
// @version      0.0.2
// @description  在你要貼上 Twitter 跟 Discord 圖片連結時,改成巴哈能認出來的格式
// @author       笑翠鳥
// @icon         https://www.google.com/s2/favicons?domain=gamer.com.tw
// @match        https://forum.gamer.com.tw/C.php?*
// @match        https://forum.gamer.com.tw/Co.php?*
// @match        https://forum.gamer.com.tw/post1.php?*
// @license      MIT
// ==/UserScript==

(() => {
	function fmtImgUrl(url) {
		switch(true) {
			case /cdn\.discordapp\.com\/attachments\/.*\.(jpg|jpeg|png|gif)\?/.test(url):
				return url.split('?')[0]
			case /pbs\.twimg\.com\/media\/[a-zA-Z0-9\-\_]+\?format=(jpg|jpeg|png|webp)/.test(url):
				return url.split('&')[0].replace('?format=', '.').replace('webp', 'jpg')
		}
	}

	window.addEventListener('load', () => {
		const $iframeEditor = document.getElementById('editor').contentWindow.document.body

		$iframeEditor.addEventListener('paste', e => {
			const clipboardTxt = e.clipboardData.getData('text')
			const fmtUrl = fmtImgUrl(clipboardTxt)

			if (fmtUrl) {
				const targetCtx = `<a href="${clipboardTxt}">${clipboardTxt}</a>`.replace(/&/g, '&amp;')
				$iframeEditor.innerHTML = $iframeEditor.innerHTML.replace(targetCtx, `<img src="${fmtUrl}">`)
			}
		})

		document.querySelectorAll('textarea').forEach($area => {
			$area.addEventListener('paste', e => {
				const fmtUrl = fmtImgUrl(e.clipboardData.getData('text'))

				if (fmtUrl) {
					e.preventDefault()
					e.target.value = `${e.target.value} ${fmtUrl}`.trim()
				}
			})
		})
	})
})()