Convertire ASS in CSV
Oppure incollare il testo dei sottotitoli
Cosa cambia questa conversione
4 elementi vengono scartati o richiedono una decisione
- Stile
tutto lo stile (grassetto, corsivo, colore, contorno, ombra)
- Posizionamento
il posizionamento sullo schermo (ogni blocco torna alla posizione predefinita)
- Karaoke
la temporizzazione karaoke (evidenziazione per sillaba)
- Contenuto specifico del formato
il contenuto che il formato di partenza tiene fuori dai suoi blocchi (blocchi non-cue, testo di intestazione, impostazioni per blocco, eventi commentati) — il formato di destinazione non ha un posto per esso
Questo elenco deriva dalla matrice delle capacità di questi due formati, non dal particolare file caricato. Un file specifico può perdere di più se usa caratteristiche che il formato consente ma la matrice non modella.
Questa pagina scrive un copione ASS come foglio di calcolo: tre colonne intestate start, end e text, con un evento per riga. I tempi passano dalla notazione ASS a quella del CSV — 0:00:04.13 diventa 00:00:04.126 — e il punto resta il separatore decimale, così la virgola può continuare a fare il separatore di campo.
Ciò che appartiene a un pezzo di testo resta nel testo: grassetto, corsivo, sottolineato e colore vengono scritti come tag, perché è l’unico tipo di stile che un formato a blocchi può ancora trasportare. Si perde invece tutto ciò che il copione diceva globalmente o con istruzioni: il posizionamento, i tempi del karaoke, la tabella di stile, il resto di [Script Info], le righe Comment: e ciò che è incorporato in [Fonts] e [Graphics]. Il testo che contiene una virgola o un a capo viene racchiuso tra virgolette, così un blocco di due righe resta una sola riga con l’interruzione dentro il campo.
Qui la conversione è reversibile con la pagina CSV → ASS. Un file o una stagione, sempre nel browser.
Esempi
Un file ASS tipico, convertito in CSV
Ingresso
[Script Info]
Title: Example
ScriptType: v4.00+
WrapStyle: 0
[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,2,2,2,10,10,10,1
Style: Title,Arial,36,&H0000FFFF,&H000000FF,&H00000000,&H00000000,-1,0,0,0,100,100,0,0,1,2,2,2,10,10,10,1
[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:01.00,0:00:04.00,Default,,0,0,0,,Hello there.
Dialogue: 0,0:00:05.00,0:00:08.50,Default,,0,0,0,,{\i1}Italic{\i0} and {\b1}bold{\b0} text.
Dialogue: 0,0:00:09.00,0:00:12.00,Title,,0,0,0,,{\pos(320,240)}Positioned
Dialogue: 0,0:00:13.00,0:00:16.00,Default,,0,0,0,,{\k50}ka{\k30}ra{\k20}o{\k10}ke
Dialogue: 0,0:00:17.00,0:00:20.00,Default,,0,0,0,,Line one\NLine two
Dialogue: 1,0:00:21.00,0:00:24.00,Default,,0,0,0,,{\an7}Top left
Uscita
start,end,text
00:00:01.000,00:00:04.000,Hello there.
00:00:05.000,00:00:08.500,<i>Italic</i> and <b>bold</b> text.
00:00:09.000,00:00:12.000,Positioned
00:00:13.000,00:00:16.000,<c>ka</c><c>ra</c><c>o</c><c>ke</c>
00:00:17.000,00:00:20.000,"Line one
Line two"
00:00:21.000,00:00:24.000,Top left
In questo output si perdono: lo stile, il posizionamento, il karaoke e i contenuti specifici del formato. Il resto corrisponde riga per riga.
La stessa conversione su un input irregolare
Ingresso
[Script Info]
; 一份真实的脏文件:BOM + CRLF + 认不出的覆写码 + Comment + 坏时间码
Title: Dirty sample
ScriptType: v4.00+
[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,1,0,0,0,100,100,0,0,1,2,2,2,10,10,10,1
[Fonts]
fontname: Arial
!!!!!!!!!!!!!!!!!!!!!!!!!!!!
[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Comment: 0,0:00:00.00,0:00:01.00,Default,,0,0,0,,这是一条注释,不该变成字幕
Dialogue: 0,0:00:01.00,0:00:04.00,Default,,0,0,0,,Hello, world
Dialogue: 0,0:00:05.00,0:00:08.00,Default,,0,0,0,,{\fad(300,300)}Unmodelled override
Dialogue: 0,0:00:09.00,0:00:12.00,Default,,0,0,0,,{\an7\pos(320,240)}Both, wrong order
Dialogue: 0,0:00:13.00,0:00:16.5,Default,,0,0,0,,One decimal centisecond
Dialogue: 0,0:00:17.00,0:00:20.00,Default,,0,0,0,,Soft\nbreak
Dialogue: 0,0:00:xx.00,0:00:24.00,Default,,0,0,0,,Broken timecodeUscita
start,end,text
00:00:01.000,00:00:04.000,"Hello, world"
00:00:05.000,00:00:08.000,"{\fad(300,300)}Unmodelled override"
00:00:09.000,00:00:12.000,"Both, wrong order"
00:00:13.000,00:00:16.500,One decimal centisecond
00:00:17.000,00:00:20.000,"Soft
break"
Il copione irregolare porta eventi Comment: e una tabella incompleta: la tabella contiene solo i dialoghi, con i tempi nell’ordine giusto.
Domande frequenti
Grassetto e corsivo sopravvivono da ASS a CSV?
L’enfasi sì; la tabella di stile no. La formattazione di un pezzo di testo — grassetto, corsivo, sottolineato, colore — viene scritta nel testo CSV come tag (`<i>`, `<b>`, `<u>`, `<font color="…">`), mentre carattere, corpo, contorno, ombra e margini si perdono.
Che fine fa la posizione sullo schermo da ASS a CSV?
Il CSV non sa dire dove viene disegnato un sottotitolo: `\pos`, `\an` e `\move` vengono scartati e ogni blocco torna alla posizione predefinita scelta dal lettore, di solito in basso al centro.
Che fine fa il karaoke da ASS a CSV?
Il tempo sparisce, le parole restano: `\k`, `\kf` e `\ko` non hanno posto in un formato che non sa registrare un istante dentro una riga, e le sillabe arrivano come testo CSV normale.
Che fine fanno [Script Info] e il resto del copione nel CSV?
Solo le righe `Dialogue:` diventano sottotitoli: `[Script Info]` (titolo compreso), la tabella di stile, le righe `Comment:` e ciò che è incorporato in `[Fonts]` o `[Graphics]` vengono scartati. Per un copione con stile scritto a mano è la perdita più visibile.
Che aspetto ha l’output quando ASS diventa CSV?
Ha l’aspetto di CSV: una riga di intestazione (`start,end,text`) e poi una riga per blocco. Ogni blocco ASS diventa un blocco CSV, nello stesso ordine.
I tempi ASS sono esatti nel file CSV?
Sì, al millisecondo: ASS scrive `0:00:04.13` e CSV scrive `00:00:04.126`. Nulla viene arrotondato e un blocco visibile per 2,9 secondi resta tale.
Come esce un blocco ASS di due righe in CSV?
Come due righe dentro l’unica cella di testo, tra virgolette come richiede il CSV. Le due righe restano un solo sottotitolo.
I blocchi mantengono l’ordine nell’output CSV?
Sì, e il riordino avviene prima della scrittura: un copione fuori sequenza produce una tabella cronologica, con le righe di dati nell’ordine dei tempi di inizio.
Posso riconvertire il CSV in ASS?
Sì, e quella direzione ha una lista propria: da CSV ad ASS si perde la precisione, perché l’ASS scrive al centesimo. Le due liste differiscono perché i due formati conservano cose diverse.
L’output CSV mantiene la codifica del file ASS?
No: la tabella CSV esce in UTF-8 con fine riga Unix e senza BOM. Un copione in UTF-16 o a byte singolo viene decodificato in ingresso e l’evento viene riportato.