From d6a32c013ea16345e3b3c3a16755bea1c486eb7b Mon Sep 17 00:00:00 2001 From: itouakirai Date: Wed, 12 Feb 2025 22:28:07 +0800 Subject: [PATCH] fix: lrc trans panic --- main.go | 37 ++++++++++++++++++++++--------------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/main.go b/main.go index 3bb36cc..3069139 100644 --- a/main.go +++ b/main.go @@ -1437,16 +1437,19 @@ func conventSyllableTTMLToLRC(ttml string) (string, error) { } divs := parsedTTML.FindElement("tt").FindElement("body").FindElements("div") //get trans - Metadata := parsedTTML.FindElement("tt").FindElement("head").FindElement("metadata") - if len(Metadata.FindElements("iTunesMetadata")) > 0 { - iTunesMetadata := Metadata.FindElement("iTunesMetadata") - if len(iTunesMetadata.FindElements("translations")) > 0 { - if len(iTunesMetadata.FindElement("translations").FindElements("translation")) > 0 { - divs = iTunesMetadata.FindElement("translations").FindElements("translation") + if len(parsedTTML.FindElement("tt").FindElements("head")) > 0 { + if len(parsedTTML.FindElement("tt").FindElement("head").FindElements("metadata")) > 0 { + Metadata := parsedTTML.FindElement("tt").FindElement("head").FindElement("metadata") + if len(Metadata.FindElements("iTunesMetadata")) > 0 { + iTunesMetadata := Metadata.FindElement("iTunesMetadata") + if len(iTunesMetadata.FindElements("translations")) > 0 { + if len(iTunesMetadata.FindElement("translations").FindElements("translation")) > 0 { + divs = iTunesMetadata.FindElement("translations").FindElements("translation") + } + } } } } - for _, div := range divs { for _, item := range div.ChildElements() { var lrcSyllables []string @@ -1549,14 +1552,18 @@ func conventTTMLToLRC(ttml string) (string, error) { } var text string //GET trans - Metadata := parsedTTML.FindElement("tt").FindElement("head").FindElement("metadata") - if len(Metadata.FindElements("iTunesMetadata")) > 0 { - iTunesMetadata := Metadata.FindElement("iTunesMetadata") - if len(iTunesMetadata.FindElements("translations")) > 0 { - if len(iTunesMetadata.FindElement("translations").FindElements("translation")) > 0 { - xpath := fmt.Sprintf("//text[@for='%s']", lyric.SelectAttr("itunes:key").Value) - trans := iTunesMetadata.FindElement("translations").FindElement("translation").FindElement(xpath) - lyric = trans + if len(parsedTTML.FindElement("tt").FindElements("head")) > 0 { + if len(parsedTTML.FindElement("tt").FindElement("head").FindElements("metadata")) > 0 { + Metadata := parsedTTML.FindElement("tt").FindElement("head").FindElement("metadata") + if len(Metadata.FindElements("iTunesMetadata")) > 0 { + iTunesMetadata := Metadata.FindElement("iTunesMetadata") + if len(iTunesMetadata.FindElements("translations")) > 0 { + if len(iTunesMetadata.FindElement("translations").FindElements("translation")) > 0 { + xpath := fmt.Sprintf("//text[@for='%s']", lyric.SelectAttr("itunes:key").Value) + trans := iTunesMetadata.FindElement("translations").FindElement("translation").FindElement(xpath) + lyric = trans + } + } } } }