{"record":{"id":"4e5cce05e4084054","repo":"SubtitleEdit/subtitleedit","slug":"unknown-type-of-event-i-1-type","errorCode":null,"errorMessage":"Unknown type of event #{i + 1}: '{type}'","messagePattern":"Unknown type of event #(.+?): '(.+?)'","errorType":"exception","errorClass":"InvalidOperationException","httpStatus":null,"severity":"error","filePath":"src/libse/SubtitleFormats/ClqttJson.cs","lineNumber":96,"sourceCode":"                    }\n                }\n            }\n\n            var eventsElement = rootElements.Find(element => element.Name.Equals(\"events\", StringComparison.InvariantCultureIgnoreCase));\n            if (eventsElement != null)\n            {\n                var eventElements = parser.GetRootElements(eventsElement.Json);\n\n                for (var i = 0; i < eventElements.Count; i++)\n                {\n                    try\n                    {\n                        var eventJson = eventElements[i].Json;\n\n                        var type = parser.GetFirstObject(eventJson, \"eventType\");\n                        if (!type.Equals(\"TIMED_TEXT_EVENT\", StringComparison.InvariantCultureIgnoreCase))\n                        {\n                            throw new InvalidOperationException($\"Unknown type of event #{i + 1}: '{type}'\");\n                        }\n\n                        var startString = parser.GetFirstObject(eventJson, \"start\");\n                        var endString = parser.GetFirstObject(eventJson, \"end\");\n                        var textString = parser.GetFirstObject(eventJson, \"txt\");\n                        var region = parser.GetFirstObject(eventJson, \"rgn\");\n                        var styles = parser.GetArrayElementsByName(eventJson, \"styles\");\n\n                        var annotations = new List<string>();\n                        var eventRootElements = parser.GetRootElements(eventJson);\n                        var annotationsElement = eventRootElements.Find(element => element.Name.Equals(\"annotations\", StringComparison.InvariantCultureIgnoreCase));\n                        if (annotationsElement != null)\n                        {\n                            var annotationElements = parser.GetRootElements(annotationsElement.Json);\n                            if (annotationElements != null && annotationElements.Count > 0)\n                            {\n                                foreach (var annotationElement in annotationElements)\n                                {","sourceCodeStart":78,"sourceCodeEnd":114,"githubUrl":"https://github.com/SubtitleEdit/subtitleedit/blob/17a9f0748781032255db3526b7215d2fb891e3af/src/libse/SubtitleFormats/ClqttJson.cs#L78-L114","documentation":"Thrown by ClqttJson.LoadSubtitle when an entry in the events array has an eventType other than 'TIMED_TEXT_EVENT'. The importer only knows how to handle timed text events, so any other event type (or a missing/empty eventType field) aborts processing of that file.","triggerScenarios":"A .clqtt events array containing entries with eventType set to something like 'NOTE', 'COMMENT', 'IMAGE', or an empty string. The check is case-insensitive but exact on the string value.","commonSituations":"CLQTT files that embed non-text events (images, styling notes); files from a newer spec revision; producer tools that emit a different event taxonomy.","solutions":["Open the .clqtt file and ensure every element in events[] has \"eventType\": \"TIMED_TEXT_EVENT\".","Remove or filter out non-text events before import.","Convert the file with its source tool to a format SubtitleEdit fully supports.","Upgrade SubtitleEdit for broader event-type coverage."],"exampleFix":"// before\n{ \"eventType\": \"NOTE\", \"txt\": \"...\" }\n// after\n{ \"eventType\": \"TIMED_TEXT_EVENT\", \"txt\": \"...\" }","handlingStrategy":"validation","validationCode":"// Pre-filter events to only TIMED_TEXT_EVENT entries\nforeach (var evt in eventElements)\n{\n    var type = parser.GetFirstObject(evt.Json, \"eventType\");\n    if (!type.Equals(\"TIMED_TEXT_EVENT\", StringComparison.OrdinalIgnoreCase))\n    {\n        // skip or log non-text events instead of failing the whole import\n        continue;\n    }\n    // process evt\n}","typeGuard":null,"tryCatchPattern":"try\n{\n    new ClqttJson().LoadSubtitle(sub, lines, fileName);\n}\ncatch (InvalidOperationException ex) when (ex.Message.Contains(\"Unknown type of event\"))\n{\n    logger.Warning(ex.Message); // report and skip the file\n}","preventionTips":["Strip non-text events from CLQTT files before import.","Validate the eventType of each entry in a pre-pass.","Upgrade SubtitleEdit when new event types are added."],"tags":["subtitle-format","clqtt","json","event-type","parsing"],"backgroundTag":null,"analyzedSha":"17a9f0748781032255db3526b7215d2fb891e3af","analyzedAt":"2026-08-13T18:11:43.374Z","schemaVersion":2},"datasetVersion":"2026-08-13T19:17:28.613Z"}