用于解析 WebVTT 字幕的 Swift 包。
您可以通过将 swift-webvtt-parser
作为包添加到您的 Xcode 项目中。
如果您想在 SwiftPM 项目中使用 swift-webvtt-parser
,只需将其添加到您的 Package.swift
中即可。
dependencies: [
.package(url: "https://github.com/mihai8804858/swift-webvtt-parser", from: "1.0.0")
]
然后将产品添加到任何需要访问该库的目标。
.product(name: "WebVTTParser", package: "swift-webvtt-parser"),
WebVTTParser
的一个实例private let parser = WebVTTParser()
let contents = ...
let vtt = try parser.parse(contents)
WebVTT
模型打印回原始内容let contents = try parser.print(vtt)
let contents = """
WEBVTT
1
00:02:17.440 --> 00:02:20.375
Senator, we're making
our <b>final</b> approach into <u>Coruscant</u>.
2
00:02:20.476 --> 00:02:22.501 line:5 line:80% position:50% size:60% align:center
<b>Very good, <i>Lieutenant</i></b>.
"""
dump(try WebVTTParser().parse(contents))
▿ WebVTTParser.WebVTT
▿ header: WebVTTParser.WebVTT.Header
- text: nil
- metadata: 0 elements
▿ elements: 2 elements
▿ WebVTTParser.WebVTT.Element.cue
▿ cue: WebVTTParser.WebVTT.Cue
▿ metadata: WebVTTParser.WebVTT.CueMetadata
▿ identifier: Optional("1")
- some: "1"
▿ timing: WebVTTParser.WebVTT.Timing
▿ start: WebVTTParser.WebVTT.Time
- hours: 0
- minutes: 2
- seconds: 17
- milliseconds: 440
▿ end: WebVTTParser.WebVTT.Time
- hours: 0
- minutes: 2
- seconds: 20
- milliseconds: 375
- settings: 0 elements
▿ payload: WebVTTParser.WebVTT.CuePayload
▿ components: 5 elements
▿ WebVTTParser.WebVTT.CuePayload.Component.plain
▿ plain: (1 element)
- text: "Senator, we\'re making\nour "
▿ WebVTTParser.WebVTT.CuePayload.Component.bold
▿ bold: (2 elements)
- classes: 0 elements
▿ children: 1 element
▿ WebVTTParser.WebVTT.CuePayload.Component.plain
▿ plain: (1 element)
- text: "final"
▿ WebVTTParser.WebVTT.CuePayload.Component.plain
▿ plain: (1 element)
- text: " approach into "
▿ WebVTTParser.WebVTT.CuePayload.Component.underline
▿ underline: (2 elements)
- classes: 0 elements
▿ children: 1 element
▿ WebVTTParser.WebVTT.CuePayload.Component.plain
▿ plain: (1 element)
- text: "Coruscant"
▿ WebVTTParser.WebVTT.CuePayload.Component.plain
▿ plain: (1 element)
- text: "."
▿ WebVTTParser.WebVTT.Element.cue
▿ cue: WebVTTParser.WebVTT.Cue
▿ metadata: WebVTTParser.WebVTT.CueMetadata
▿ identifier: Optional("2")
- some: "2"
▿ timing: WebVTTParser.WebVTT.Timing
▿ start: WebVTTParser.WebVTT.Time
- hours: 0
- minutes: 2
- seconds: 20
- milliseconds: 476
▿ end: WebVTTParser.WebVTT.Time
- hours: 0
- minutes: 2
- seconds: 22
- milliseconds: 501
▿ settings: 5 elements
▿ WebVTTParser.WebVTT.Setting.lineNumber
- lineNumber: 5
▿ WebVTTParser.WebVTT.Setting.linePercentage
- linePercentage: 80
▿ WebVTTParser.WebVTT.Setting.position
- position: 50
▿ WebVTTParser.WebVTT.Setting.size
- size: 60
▿ WebVTTParser.WebVTT.Setting.align
- align: WebVTTParser.WebVTT.Setting.Alignment.center
▿ payload: WebVTTParser.WebVTT.CuePayload
▿ components: 2 elements
▿ WebVTTParser.WebVTT.CuePayload.Component.bold
▿ bold: (2 elements)
- classes: 0 elements
▿ children: 2 elements
▿ WebVTTParser.WebVTT.CuePayload.Component.plain
▿ plain: (1 element)
- text: "Very good, "
▿ WebVTTParser.WebVTT.CuePayload.Component.italic
▿ italic: (2 elements)
- classes: 0 elements
▿ children: 1 element
▿ WebVTTParser.WebVTT.CuePayload.Component.plain
▿ plain: (1 element)
- text: "Lieutenant"
▿ WebVTTParser.WebVTT.CuePayload.Component.plain
▿ plain: (1 element)
- text: "."
let vtt = WebVTT {
cue(identifier: "1", timing: 137.44...140.375) {
plain("Senator, we're making\nour ")
bold {
plain("final")
}
plain(" approach into ")
underline {
plain("Coruscant")
}
plain(".")
}
cue(identifier: "2", timing: 140.476...142.501) {
bold {
plain("Very good, ")
italic {
plain("Lieutenant")
}
}
plain(".")
}
}
print(try WebVTTParser().print(vtt))
WEBVTT
1
02:17.440 --> 02:20.375
Senator, we're making
our <b>final</b> approach into <u>Coruscant</u>.
2
02:20.476 --> 02:22.501
<b>Very good, <i>Lieutenant</i></b>.
本库采用 MIT 许可证发布。 详细信息请参阅LICENSE。