feat: play resolved Miruro HLS with external VTT and stable episode progress

This commit is contained in:
2026-10-12 19:17:22 +02:00
parent 1f12660936
commit 470d8feec2
23 changed files with 1528 additions and 38 deletions
+10 -1
View File
@@ -18,6 +18,13 @@ enum TerebiCLI {
case .printDefaultConfig:
print(PlayerConfiguration.defaultTOML, terminator: "")
case .launch(let url, let newInstance, let noConfig, let progressFile):
await launch(url: url, sourceFile: nil, newInstance: newInstance, noConfig: noConfig, progressFile: progressFile)
case .launchSource(let sourceFile, let newInstance, let noConfig, let progressFile):
await launch(url: nil, sourceFile: sourceFile, newInstance: newInstance, noConfig: noConfig, progressFile: progressFile)
}
}
private static func launch(url: URL?, sourceFile: URL?, newInstance: Bool, noConfig: Bool, progressFile: URL?) async {
if let progressFile {
var existing = stat()
guard lstat(progressFile.path, &existing) != 0 else {
@@ -62,6 +69,9 @@ enum TerebiCLI {
if let progressFile {
configuration.arguments += ["--progress-file", progressFile.path]
}
if let sourceFile {
configuration.arguments += ["--source-file", sourceFile.path]
}
if newInstance, let url {
configuration.arguments += ["--open-media", url.absoluteString]
}
@@ -75,7 +85,6 @@ enum TerebiCLI {
fail("Could not launch the player: \(error.localizedDescription)", code: 69)
}
}
}
private static func fail(_ message: String, code: Int32) -> Never {
FileHandle.standardError.write(Data("terebi: \(message)\n".utf8))