메모장에다가 붙혀넣는게 귀찮기도 하고 그래서


gpt한테 버튼딸깍으로 본문 내용을 srt 파일로 다운로드 하게 해달라고 갈궈서 만듬


설치하게 되면 본문에 이런 작고 앙증맞은 버튼이 생김

이걸 딸깍하면??


자동으로 본문을 .srt로 바꿔줌


잘보면 시간표시도 00:00:00.000에서 00,000으로 (.)이 (,)으로 바뀜


그리고 본문을 그대로 복붙하면 이런식으로 한줄 더 띄워지는데

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

1


00:00:05.321 --> 00:00:09.001


주인님, 일어나셨어요?

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ


이 스크립트로 자막을 만들면


ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

1

00:00:05.321 --> 00:00:09.001

주인님, 일어나셨어요?

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

이렇게 자동으로 블록 단위로다가 줄바꿈이 없어짐


이 줄바꿈 없을때 좀 귀찮고 몰입깨지는 일이 많았는데 지루하고 현학적이라 그냥 있으면 좋다로 넘어가겠음


https://chromewebstore.google.com/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo?hl=ko

이거 깔아야하고 아래 스크립트 복붙하면 댐(업로드하는법 몰름 ㅈㅅ;;)


// ==UserScript==

// @name         ArcaLive VTT → SRT 수동 다운로더

// @namespace    http://tampermonkey.net/

// @version      1.1

// @description  아카라이브 본문(VTT)을 SRT로 변환해서 버튼 클릭 시 다운로드

// @match        https://arca.live/b/*

// @grant        none

// ==/UserScript==


(function() {

    'use strict';


    // VTT → SRT 변환 함수

    function vttToSrt(vtt) {

        let srt = vtt.replace(/^WEBVTT\s*\n+/i, "");            // 헤더 제거

        srt = srt.replace(/(\d{2}:\d{2}:\d{2})\.(\d{3})/g, "$1,$2"); // 시간 포맷 수정


        let lines = srt.split("\n").map(l => l.trim()).filter(l => l !== "");

        let result = [];

        for (let i = 0; i < lines.length; ) {

            if (/^\d+$/.test(lines[i]) && /\d{2}:\d{2}:\d{2},\d{3}/.test(lines[i+1])) {

                let block = [lines[i], lines[i+1]];

                i += 2;

                while (i < lines.length && !/^\d+$/.test(lines[i])) {

                    block.push(lines[i]);

                    i++;

                }

                result.push(block.join("\n"));

            } else {

                i++;

            }

        }

        return result.join("\n\n");

    }


    // 본문 추출 & 변환 → 다운로드

    function downloadSrt() {

        let article = document.querySelector('.fr-view.article-content');

        if (!article) {

            alert("본문을 찾을 수 없습니다.");

            return;

        }

        let text = article.innerText.trim();

        if (!text) {

            alert("본문이 비어있습니다.");

            return;

        }

        let srt = vttToSrt(text);


        let title = document.querySelector("h2.title")?.innerText.trim() || "subtitles";

        title = title.replace(/[\\/:*?"<>|]/g, "_");


        let blob = new Blob([srt], { type: "text/plain;charset=utf-8" });

        let link = document.createElement("a");

        link.href = URL.createObjectURL(blob);

        link.download = title + ".srt";

        link.click();

    }


    // 버튼 생성

    function createButton() {

        let btn = document.createElement("button");

        btn.textContent = "SRT 다운로드";

        Object.assign(btn.style, {

            position: "fixed",

            bottom: "20px",

            right: "20px",

            padding: "10px 15px",

            backgroundColor: "#ff4757",

            color: "#fff",

            border: "none",

            borderRadius: "6px",

            fontSize: "14px",

            cursor: "pointer",

            zIndex: 9999

        });

        btn.addEventListener("click", downloadSrt);

        document.body.appendChild(btn);

    }


    window.addEventListener('load', createButton);

})();