Documentation
¶
Index ¶
- Constants
- Variables
- type Color
- type Item
- type Line
- type LineItem
- type Metadata
- type Options
- type Region
- type Style
- type StyleAttributes
- type Subtitles
- func NewSubtitles() *Subtitles
- func Open(o Options) (s *Subtitles, err error)
- func OpenFile(filename string) (*Subtitles, error)
- func ReadFromAudacityTXT(r io.Reader) (subs *Subtitles, err error)
- func ReadFromSRT(i io.Reader) (o *Subtitles, err error)
- func ReadFromSRV3(r io.Reader) (*Subtitles, error)
- func ReadFromSSA(i io.Reader) (o *Subtitles, err error)
- func ReadFromSTL(i io.Reader) (o *Subtitles, err error)
- func ReadFromTTML(i io.Reader) (o *Subtitles, err error)
- func ReadFromTeletext(r io.Reader, o TeletextOptions) (s *Subtitles, err error)
- func ReadFromWebVTT(i io.Reader) (o *Subtitles, err error)
- func (s *Subtitles) Add(d time.Duration)
- func (s Subtitles) Duration() time.Duration
- func (s *Subtitles) ForceDuration(d time.Duration, addDummyItem bool)
- func (s *Subtitles) Fragment(f time.Duration)
- func (s Subtitles) IsEmpty() bool
- func (s *Subtitles) Merge(i *Subtitles)
- func (s *Subtitles) Optimize()
- func (s *Subtitles) Order()
- func (s *Subtitles) RemoveStyling()
- func (s *Subtitles) Sync(ds ...time.Duration)
- func (s *Subtitles) Unfragment()
- func (s Subtitles) Write(dst string) (err error)
- func (subs Subtitles) WriteToAudacityTXT(w io.Writer) (err error)
- func (s Subtitles) WriteToSRT(o io.Writer) (err error)
- func (subs Subtitles) WriteToSRV3(w io.Writer) (err error)
- func (s Subtitles) WriteToSSA(o io.Writer) (err error)
- func (s Subtitles) WriteToSTL(o io.Writer) (err error)
- func (s Subtitles) WriteToTTML(o io.Writer) (err error)
- func (s Subtitles) WriteToWebVTT(o io.Writer) (err error)
- type TTMLIn
- type TTMLInDuration
- type TTMLInHeader
- type TTMLInItem
- type TTMLInItems
- type TTMLInMetadata
- type TTMLInRegion
- type TTMLInStyle
- type TTMLInStyleAttributes
- type TTMLInSubtitle
- type TTMLOut
- type TTMLOutDuration
- type TTMLOutHeader
- type TTMLOutItem
- type TTMLOutMetadata
- type TTMLOutRegion
- type TTMLOutStyle
- type TTMLOutStyleAttributes
- type TTMLOutSubtitle
- type TeletextOptions
Constants ¶
const ( LanguageEnglish = "english" LanguageFrench = "french" )
Languages
Variables ¶
var ( ColorBlack = &Color{} ColorBlue = &Color{Blue: 255} ColorCyan = &Color{Blue: 255, Green: 255} ColorGray = &Color{Blue: 128, Green: 128, Red: 128} ColorGreen = &Color{Green: 128} ColorLime = &Color{Green: 255} ColorMagenta = &Color{Blue: 255, Red: 255} ColorMaroon = &Color{Red: 128} ColorOlive = &Color{Green: 128, Red: 128} ColorPurple = &Color{Blue: 128, Red: 128} ColorRed = &Color{Red: 255} ColorSilver = &Color{Blue: 192, Green: 192, Red: 192} ColorTeal = &Color{Blue: 128, Green: 128} ColorYellow = &Color{Green: 255, Red: 255} ColorWhite = &Color{Blue: 255, Green: 255, Red: 255} )
Colors
var ( ErrInvalidExtension = errors.New("astisub: invalid extension") ErrNoSubtitlesToWrite = errors.New("astisub: no subtitles to write") )
Errors
var (
BytesBOM = []byte{239, 187, 191}
)
Bytes
var (
ErrNoValidTeletextPID = errors.New("astisub: no valid teletext PID")
)
Errors
var Now = func() time.Time { return time.Now() }
Now allows testing functions using it
Functions ¶
This section is empty.
Types ¶
type Color ¶
type Color struct {
Alpha, Blue, Green, Red uint8
}
Color represents a color
func (*Color) TTMLString ¶
TTMLString expresses the color as a TTML string
type Item ¶
type Item struct {
Comments []string
EndAt time.Duration
InlineStyle *StyleAttributes
Lines []Line
Region *Region
StartAt time.Duration
Style *Style
}
Item represents a text to show between 2 time boundaries with formatting
type LineItem ¶
type LineItem struct {
InlineStyle *StyleAttributes
Style *Style
Text string
}
LineItem represents a formatted line item
type Metadata ¶
type Metadata struct {
Comments []string
Framerate int
Language string
SSACollisions string
SSAOriginalEditing string
SSAOriginalScript string
SSAOriginalTiming string
SSAOriginalTranslation string
SSAPlayDepth *int
SSAPlayResX, SSAPlayResY *int
SSAScriptType string
SSAScriptUpdatedBy string
SSASynchPoint string
SSATimer *float64
SSAUpdateDetails string
SSAWrapStyle string
STLPublisher string
Title string
TTMLCopyright string
}
Metadata represents metadata TODO Merge attributes
type Options ¶
type Options struct {
Filename string
Teletext TeletextOptions
}
Options represents open or write options
type Region ¶
type Region struct {
ID string
InlineStyle *StyleAttributes
Style *Style
}
Region represents a subtitle's region
type Style ¶
type Style struct {
ID string
InlineStyle *StyleAttributes
Style *Style
}
Style represents a subtitle's style
type StyleAttributes ¶
type StyleAttributes struct {
SSAAlignment *int
SSAAlphaLevel *float64
SSAAngle *float64 // degrees
SSABackColour *Color
SSABold *bool
SSABorderStyle *int
SSAEffect string
SSAEncoding *int
SSAFontName string
SSAFontSize *float64
SSAItalic *bool
SSALayer *int
SSAMarginLeft *int // pixels
SSAMarginRight *int // pixels
SSAMarginVertical *int // pixels
SSAMarked *bool
SSAOutline *float64 // pixels
SSAOutlineColour *Color
SSAPrimaryColour *Color
SSAScaleX *float64 // %
SSAScaleY *float64 // %
SSASecondaryColour *Color
SSAShadow *float64 // pixels
SSASpacing *float64 // pixels
SSAStrikeout *bool
SSAUnderline *bool
STLBoxing *bool
STLItalics *bool
STLUnderline *bool
TeletextColor *Color
TeletextDoubleHeight *bool
TeletextDoubleSize *bool
TeletextDoubleWidth *bool
TeletextSpacesAfter *int
TeletextSpacesBefore *int
// TODO Use pointers with real types below
TTMLBackgroundColor string // https://htmlcolorcodes.com/fr/
TTMLColor string
TTMLDirection string
TTMLDisplay string
TTMLDisplayAlign string
TTMLExtent string
TTMLFontFamily string
TTMLFontSize string
TTMLFontStyle string
TTMLFontWeight string
TTMLLineHeight string
TTMLOpacity string
TTMLOrigin string
TTMLOverflow string
TTMLPadding string
TTMLShowBackground string
TTMLTextAlign string
TTMLTextDecoration string
TTMLTextOutline string
TTMLUnicodeBidi string
TTMLVisibility string
TTMLWrapOption string
TTMLWritingMode string
TTMLZIndex int
WebVTTAlign string
WebVTTLine string
WebVTTLines int
WebVTTPosition string
WebVTTRegionAnchor string
WebVTTScroll string
WebVTTSize string
WebVTTVertical string
WebVTTViewportAnchor string
WebVTTWidth string
}
StyleAttributes represents style attributes
type Subtitles ¶
type Subtitles struct {
Items []*Item
Metadata *Metadata
Regions map[string]*Region
Styles map[string]*Style
}
Subtitles represents an ordered list of items with formatting
func ReadFromSRT ¶
ReadFromSRT parses an .srt content
func ReadFromSSA ¶
ReadFromSSA parses an .ssa content
func ReadFromSTL ¶
ReadFromSTL parses an .stl content
func ReadFromTTML ¶
ReadFromTTML parses a .ttml content
func ReadFromTeletext ¶
func ReadFromTeletext(r io.Reader, o TeletextOptions) (s *Subtitles, err error)
ReadFromTeletext parses a teletext content http://www.etsi.org/deliver/etsi_en/300400_300499/300472/01.03.01_60/en_300472v010301p.pdf http://www.etsi.org/deliver/etsi_i_ets/300700_300799/300706/01_60/ets_300706e01p.pdf TODO Update README TODO Add tests
func ReadFromWebVTT ¶
ReadFromWebVTT parses a .vtt content TODO Tags (u, i, b) TODO Class TODO Speaker name
func (*Subtitles) Add ¶
Add adds a duration to each time boundaries. As in the time package, duration can be negative.
func (*Subtitles) ForceDuration ¶
ForceDuration updates the subtitles duration. If requested duration is bigger, then we create a dummy item. If requested duration is smaller, then we remove useless items and we cut the last item or add a dummy item.
func (*Subtitles) RemoveStyling ¶
func (s *Subtitles) RemoveStyling()
RemoveStyling removes the styling from the subtitles
func (*Subtitles) Sync ¶
Sync adds time.Duration increments to each time boundaries whose low boundary lies within the increment's interval, i.e. interval.start <= item.StartAt < interval.end. Arguments are given in this order: increment, {interval.start, increment,} [interval.start]. Interval.start of the first increment is assumed to be time.Duration(0). Interval.end of each increment is equal to next interval.start if there is one. And if there isn't, then interval.end of that last increment is considered to be (*Subtitles).Duration()+1.
func (Subtitles) WriteToAudacityTXT ¶
func (Subtitles) WriteToSRT ¶
WriteToSRT writes subtitles in .srt format
func (Subtitles) WriteToSSA ¶
WriteToSSA writes subtitles in .ssa format
func (Subtitles) WriteToSTL ¶
WriteToSTL writes subtitles in .stl format
func (Subtitles) WriteToTTML ¶
WriteToTTML writes subtitles in .ttml format
type TTMLIn ¶
type TTMLIn struct {
Framerate int `xml:"frameRate,attr"`
Lang string `xml:"lang,attr"`
Metadata TTMLInMetadata `xml:"head>metadata"`
Regions []TTMLInRegion `xml:"head>layout>region"`
Styles []TTMLInStyle `xml:"head>styling>style"`
Subtitles []TTMLInSubtitle `xml:"body>div>p"`
XMLName xml.Name `xml:"tt"`
}
TTMLIn represents an input TTML that must be unmarshaled We split it from the output TTML as we can't add strict namespace without breaking retrocompatibility
type TTMLInDuration ¶
type TTMLInDuration struct {
// contains filtered or unexported fields
}
TTMLInDuration represents an input TTML duration
func (*TTMLInDuration) UnmarshalText ¶
func (d *TTMLInDuration) UnmarshalText(i []byte) (err error)
UnmarshalText implements the TextUnmarshaler interface Possible formats are: - hh:mm:ss.mmm - hh:mm:ss:fff (fff being frames)
type TTMLInHeader ¶
type TTMLInHeader struct {
ID string `xml:"id,attr,omitempty"`
Style string `xml:"style,attr,omitempty"`
TTMLInStyleAttributes
}
TTMLInHeader represents an input TTML header
type TTMLInItem ¶
type TTMLInItem struct {
Style string `xml:"style,attr,omitempty"`
Text string `xml:",chardata"`
TTMLInStyleAttributes
XMLName xml.Name
}
TTMLInItem represents an input TTML item
type TTMLInItems ¶
type TTMLInItems []TTMLInItem
TTMLInItems represents input TTML items
func (*TTMLInItems) UnmarshalXML ¶
func (i *TTMLInItems) UnmarshalXML(d *xml.Decoder, start xml.StartElement) (err error)
UnmarshalXML implements the XML unmarshaler interface
type TTMLInMetadata ¶
type TTMLInMetadata struct {
Copyright string `xml:"copyright"`
Title string `xml:"title"`
}
TTMLInMetadata represents an input TTML Metadata
type TTMLInRegion ¶
type TTMLInRegion struct {
TTMLInHeader
XMLName xml.Name `xml:"region"`
}
TTMLInRegion represents an input TTML region
type TTMLInStyle ¶
type TTMLInStyle struct {
TTMLInHeader
XMLName xml.Name `xml:"style"`
}
TTMLInStyle represents an input TTML style
type TTMLInStyleAttributes ¶
type TTMLInStyleAttributes struct {
BackgroundColor string `xml:"backgroundColor,attr,omitempty"`
Color string `xml:"color,attr,omitempty"`
Direction string `xml:"direction,attr,omitempty"`
Display string `xml:"display,attr,omitempty"`
DisplayAlign string `xml:"displayAlign,attr,omitempty"`
Extent string `xml:"extent,attr,omitempty"`
FontFamily string `xml:"fontFamily,attr,omitempty"`
FontSize string `xml:"fontSize,attr,omitempty"`
FontStyle string `xml:"fontStyle,attr,omitempty"`
FontWeight string `xml:"fontWeight,attr,omitempty"`
LineHeight string `xml:"lineHeight,attr,omitempty"`
Opacity string `xml:"opacity,attr,omitempty"`
Origin string `xml:"origin,attr,omitempty"`
Overflow string `xml:"overflow,attr,omitempty"`
Padding string `xml:"padding,attr,omitempty"`
ShowBackground string `xml:"showBackground,attr,omitempty"`
TextAlign string `xml:"textAlign,attr,omitempty"`
TextDecoration string `xml:"textDecoration,attr,omitempty"`
TextOutline string `xml:"textOutline,attr,omitempty"`
UnicodeBidi string `xml:"unicodeBidi,attr,omitempty"`
Visibility string `xml:"visibility,attr,omitempty"`
WrapOption string `xml:"wrapOption,attr,omitempty"`
WritingMode string `xml:"writingMode,attr,omitempty"`
ZIndex int `xml:"zIndex,attr,omitempty"`
}
TTMLInStyleAttributes represents input TTML style attributes
type TTMLInSubtitle ¶
type TTMLInSubtitle struct {
Begin *TTMLInDuration `xml:"begin,attr,omitempty"`
End *TTMLInDuration `xml:"end,attr,omitempty"`
ID string `xml:"id,attr,omitempty"`
Items string `xml:",innerxml"` // We must store inner XML here since there's no tag to describe both any tag and chardata
Region string `xml:"region,attr,omitempty"`
Style string `xml:"style,attr,omitempty"`
TTMLInStyleAttributes
}
TTMLInSubtitle represents an input TTML subtitle
type TTMLOut ¶
type TTMLOut struct {
Lang string `xml:"xml:lang,attr,omitempty"`
Metadata *TTMLOutMetadata `xml:"head>metadata,omitempty"`
Styles []TTMLOutStyle `xml:"head>styling>style,omitempty"` //!\\ Order is important! Keep Styling above Layout
Regions []TTMLOutRegion `xml:"head>layout>region,omitempty"`
Subtitles []TTMLOutSubtitle `xml:"body>div>p,omitempty"`
XMLName xml.Name `xml:"http://www.w3.org/ns/ttml tt"`
XMLNamespaceTTM string `xml:"xmlns:ttm,attr"`
XMLNamespaceTTS string `xml:"xmlns:tts,attr"`
}
TTMLOut represents an output TTML that must be marshaled We split it from the input TTML as this time we'll add strict namespaces
type TTMLOutDuration ¶
TTMLOutDuration represents an output TTML duration
func (TTMLOutDuration) MarshalText ¶
func (t TTMLOutDuration) MarshalText() ([]byte, error)
MarshalText implements the TextMarshaler interface
type TTMLOutHeader ¶
type TTMLOutHeader struct {
ID string `xml:"xml:id,attr,omitempty"`
Style string `xml:"style,attr,omitempty"`
TTMLOutStyleAttributes
}
TTMLOutHeader represents an output TTML header
type TTMLOutItem ¶
type TTMLOutItem struct {
Style string `xml:"style,attr,omitempty"`
Text string `xml:",chardata"`
TTMLOutStyleAttributes
XMLName xml.Name
}
TTMLOutItem represents an output TTML Item
type TTMLOutMetadata ¶
type TTMLOutMetadata struct {
Copyright string `xml:"ttm:copyright,omitempty"`
Title string `xml:"ttm:title,omitempty"`
}
TTMLOutMetadata represents an output TTML Metadata
type TTMLOutRegion ¶
type TTMLOutRegion struct {
TTMLOutHeader
XMLName xml.Name `xml:"region"`
}
TTMLOutRegion represents an output TTML region
type TTMLOutStyle ¶
type TTMLOutStyle struct {
TTMLOutHeader
XMLName xml.Name `xml:"style"`
}
TTMLOutStyle represents an output TTML style
type TTMLOutStyleAttributes ¶
type TTMLOutStyleAttributes struct {
BackgroundColor string `xml:"tts:backgroundColor,attr,omitempty"`
Color string `xml:"tts:color,attr,omitempty"`
Direction string `xml:"tts:direction,attr,omitempty"`
Display string `xml:"tts:display,attr,omitempty"`
DisplayAlign string `xml:"tts:displayAlign,attr,omitempty"`
Extent string `xml:"tts:extent,attr,omitempty"`
FontFamily string `xml:"tts:fontFamily,attr,omitempty"`
FontSize string `xml:"tts:fontSize,attr,omitempty"`
FontStyle string `xml:"tts:fontStyle,attr,omitempty"`
FontWeight string `xml:"tts:fontWeight,attr,omitempty"`
LineHeight string `xml:"tts:lineHeight,attr,omitempty"`
Opacity string `xml:"tts:opacity,attr,omitempty"`
Origin string `xml:"tts:origin,attr,omitempty"`
Overflow string `xml:"tts:overflow,attr,omitempty"`
Padding string `xml:"tts:padding,attr,omitempty"`
ShowBackground string `xml:"tts:showBackground,attr,omitempty"`
TextAlign string `xml:"tts:textAlign,attr,omitempty"`
TextDecoration string `xml:"tts:textDecoration,attr,omitempty"`
TextOutline string `xml:"tts:textOutline,attr,omitempty"`
UnicodeBidi string `xml:"tts:unicodeBidi,attr,omitempty"`
Visibility string `xml:"tts:visibility,attr,omitempty"`
WrapOption string `xml:"tts:wrapOption,attr,omitempty"`
WritingMode string `xml:"tts:writingMode,attr,omitempty"`
ZIndex int `xml:"tts:zIndex,attr,omitempty"`
}
TTMLOutStyleAttributes represents output TTML style attributes
type TTMLOutSubtitle ¶
type TTMLOutSubtitle struct {
Begin TTMLOutDuration `xml:"begin,attr"`
End TTMLOutDuration `xml:"end,attr"`
ID string `xml:"id,attr,omitempty"`
Items []TTMLOutItem
Region string `xml:"region,attr,omitempty"`
Style string `xml:"style,attr,omitempty"`
TTMLOutStyleAttributes
}
TTMLOutSubtitle represents an output TTML subtitle
type TeletextOptions ¶
TeletextOptions represents teletext options