Konwerter napisów JSON na CSV
Albo wklej tekst napisów
Co zmienia ta konwersja
3 rzeczy zostają pominięte albo wymagają decyzji
- Formatowanie
całe formatowanie (pogrubienie, kursywa, kolor, obrys, cień)
- Pozycjonowanie
pozycjonowanie na ekranie (każdy blok wraca do domyślnego położenia)
- Karaoke
czasy karaoke (podświetlanie sylaba po sylabie)
Ta lista pochodzi z macierzy możliwości tych dwóch formatów, a nie z konkretnego wczytanego pliku. Konkretny plik może stracić więcej, jeśli używa cech, które format dopuszcza, ale macierz ich nie modeluje.
Ta strona konwertuje JSON na CSV. Wrzuć plik albo wklej tekst, a dostaniesz z powrotem wersję CSV. Konwersja odbywa się w całości w Twojej przeglądarce — nic nie jest wysyłane i nie potrzebujesz konta.
Te dwa formaty nie przechowują tego samego, a różnica nie jest kosmetyczna: styl, pozycjonowanie i karaoke nie mają gdzie się podziać w CSV. Powyższa lista wynika z tego, co potrafi wyrazić każdy z formatów, a nie z zawartości Twojego pliku — więc odpowiedź jest taka sama, zanim cokolwiek wczytasz.
Jeden plik to żaden problem, podobnie cały sezon: kolejka przetwarza je po kolei, a wyniki pobierasz razem w jednym archiwum ZIP.
Przykłady
Typowy plik JSON po konwersji do CSV
Wejście
{
"version": 1,
"title": "Fixture: typical",
"fps": 25,
"styles": {
"Default": {
"name": "Default",
"fontFamily": "Arial",
"fontSize": 20,
"primaryColor": "#FFFFFF",
"bold": false,
"italic": false
}
},
"generator": "subtitlematrix fixtures",
"cues": [
{
"id": "1",
"start": 0,
"end": 2000,
"lines": [
"Hello world.",
"Second line."
],
"style": "Default",
"position": {
"x": 100,
"y": 200,
"align": "center"
}
},
{
"id": "2",
"start": 2500,
"end": 4000,
"lines": [
"Plain line.",
{
"text": "Styled line.",
"tags": [
{
"kind": "italic",
"start": 0,
"end": 6
}
]
}
]
},
{
"id": "3",
"start": 4500,
"end": 6000,
"lines": [
"Roger: I am here."
],
"speaker": "Roger"
}
]
}
Wynik
start,end,text
00:00:00.000,00:00:02.000,"Hello world.
Second line."
00:00:02.500,00:00:04.000,"Plain line.
<i>Styled</i> line."
00:00:04.500,00:00:06.000,Roger: I am here.
W tym wyniku przepada: styl, pozycjonowanie i karaoke. Reszta zgadza się linia w linię.
Ta sama konwersja na trudniejszym pliku
Wejście
[
{ "start": 0, "end": 1000, "lines": ["First."] },
{ "start": 1000, "end": 2000, "text": "Second." },
"not an object",
{ "start": 2000, "end": 3000, "lines": ["Third."], "class": "top" }
]
Wynik
start,end,text
00:00:00.000,00:00:01.000,First.
00:00:01.000,00:00:02.000,Second.
00:00:02.000,00:00:03.000,Third.
To typowe uszkodzenia prawdziwych plików — mieszane końce wierszy, zbłąkane spacje, puste pola. Porównaj z uporządkowanym przykładem powyżej, żeby zobaczyć, co parser wybacza.
Częste pytania
Czy pogrubienie i kursywa z JSON-a trafiają do CSV?
Trafia nacisk, tabela stylów nie. CSV dostaje znaczniki `<i>`, `<b>`, `<u>` i `<font color="…">` w komórce `text`, bo format tabelaryczny nie ma innego miejsca na formatowanie. Globalne ustawienia z `styles` — krój, rozmiar, obrys, cień, marginesy — nie są przenoszone.
Co dzieje się z pozycją na ekranie przy konwersji JSON na CSV?
CSV nie opisuje położenia napisu, więc obiekt `position` z `x`, `y` i `align` zostaje odrzucony, a każdy blok wraca na domyślną pozycję odtwarzacza — zwykle na dół kadru, do środka.
Co dzieje się z karaoke przy przejściu z JSON do CSV?
Znika czas, zostają słowa. Znaczniki karaoke w `tags` mówią, kiedy zapala się sylaba, ale CSV nie potrafi zapisać momentu wewnątrz linii, więc znaczniki są zdejmowane, a sylaby trafiają do komórki jako zwykły tekst.
Jak wygląda CSV powstały z JSON-a?
Jak tabela z nagłówkiem `start,end,text` i jednym wierszem na blok; czasy mają kropkę dziesiętną, np. `00:00:04.126`. Każdy blok JSON daje jeden wiersz CSV, w tej samej kolejności i z tym samym tekstem.
Czy czasy z JSON-a są dokładne w CSV?
Tak, co do milisekundy. JSON zapisuje `4126`, a CSV `00:00:04.126`; wartość jest przenoszona bez zaokrągleń, więc blok o długości 2,9 sekundy pozostaje taki sam.
Jak dwuwierszowy blok JSON zapisuje się w CSV?
Jako dwie linie w jednej komórce, ujętej w cudzysłowy — tak wymaga CSV. Para zostaje w jednym bloku, więc ponowny odczyt nadal widzi jeden napis.
Czy CSV zachowuje kolejność bloków JSON?
Tak, po sortowaniu po czasie `start`. Najwcześniejszy blok staje się pierwszym wierszem danych, a plik z zaburzoną kolejnością zostaje uporządkowany — to zmiana struktury, nie treści.
Czy CSV można z powrotem zamienić na JSON?
Tak, i ten kierunek nie pogarsza sytuacji: CSV mieści mniej niż JSON, więc powrót nie dodaje nowych strat. Nie odtworzy jednak stylu, pozycji ani karaoke, bo CSV ich nie przechowuje.
Czy wynikowy CSV zachowuje kodowanie pliku JSON?
Nie — wychodzi UTF-8 z LF i bez BOM. Kodowanie źródła jest rozpoznawane przy wczytaniu i konwertowane, o czym mówi panel wyniku; plik CSV ma już zawsze to samo kodowanie.