Copy SteamDB Changelog as BBcode

Adds a button to copy changelog

Verzia zo dňa 06.01.2024. Pozri najnovšiu verziu.

// ==UserScript==
// @name         Copy SteamDB Changelog as BBcode
// @namespace    none
// @version      1
// @description  Adds a button to copy changelog
// @author       ingts
// @match        https://steamdb.info/patchnotes/*
// @grant        GM_setClipboard
// ==/UserScript==
function html2bb(str) {
    if (!str) return ""
    str = str.replace(/< *br *\/*>/g, "\n\n") //*/
    str = str.replace(/< *b *>/g, "[b]")
    str = str.replace(/< *\/ *b *>/g, "[/b]")
    str = str.replace(/< *u *>/g, "[u]")
    str = str.replace(/< *\/ *u *>/g, "[/u]")
    str = str.replace(/< *i *>/g, "[i]")
    str = str.replace(/< *\/ *i *>/g, "[/i]")
    str = str.replace(/< *strong *>/g, "[b]")
    str = str.replace(/< *\/ *strong *>/g, "[/b]")
    str = str.replace(/< *em *>/g, "[i]")
    str = str.replace(/< *\/ *em *>/g, "[/i]")
    str = str.replace(/< *li *>/g, "[*]")
    str = str.replace(/< *\/ *li *>/g, "")
    str = str.replace(/< *ul *class=\\*\"bb_ul\\*\" *>/g, "")
    str = str.replace(/< *\/ *ul *>/g, "")
    str = str.replace(/< *h2 *class=\"bb_tag\" *>/g, "\n[align=center][u][b]")
    str = str.replace(/< *h[12] *>/g, "\n[align=center][u][b]")
    str = str.replace(/< *\/ *h[12] *>/g, "[/b][/u][/align]\n")
    str = str.replace(/\&quot;/g, "\"")
    str = str.replace(/\&amp;/g, "&")
    str = str.replace(/< *img *src="([^"]*)".*>/g, "\n")
    str = str.replace(/< *a [^>]*>/g, "")
    str = str.replace(/< *\/ *a *>/g, "")
    str = str.replace(/< *p *>/g, "")
    str = str.replace(/< *\/ *p *>/g, "")
    str = str.replace(/“/g, "\"")
    str = str.replace(/”/g, "\"")
    str = str.replace(/  +/g, " ")
    str = str.replace(/\n +/g, "\n")
    str = str.replace(/\n\n\n+/gm, "\n\n")
    str = str.replace(/\n\n\n+/gm, "\n\n")
    str = str.replace(/\[\/b]\[\/u]\[\/align]\n\n/g, "[/b][/u][/align]\n")
    str = str.replace(/\n\n\[\*]/g, "\n[*]")
    str = str.replace(/<ul>\n/g, '')
    str = str.replace(/<h3.*>(.*?)<\/h3>/g, '[b]$1[/b]')
    return str
}

const button = document.createElement('button')
button.textContent = 'Copy changelog as BBcode'
document.querySelector('.patchnotes-editor').append(button)
button.addEventListener('click', () => {
    GM_setClipboard('[hide=Changelog]' + html2bb(document.querySelector('.patchnotes-official').innerHTML) + '[/hide]')
    button.textContent = 'Copied'
})