@@ -134,32 +134,58 @@ const Utils = {
134
134
} ,
135
135
processTranslatedLyrics ( result , lyricsToTranslate , { state, stateName } ) {
136
136
const translatedLines = result . split ( "\n" ) ;
137
-
138
137
state [ stateName ] = [ ] ;
139
-
140
- for ( let i = 0 ; i < lyricsToTranslate . length ; i ++ )
141
- state [ stateName ] . push ( {
138
+ for ( let i = 0 ; i < lyricsToTranslate . length ; i ++ ) {
139
+ const lyric = {
142
140
startTime : lyricsToTranslate [ i ] . startTime || 0 ,
143
141
text : this . rubyTextToReact ( translatedLines [ i ] )
144
- } ) ;
142
+ } ;
143
+ state [ stateName ] . push ( lyric ) ;
144
+ }
145
+ } ,
146
+ processTranslatedOriginalLyrics ( lyrics , synced ) {
147
+ const data = [ ] ;
148
+ const dataSouce = { } ;
149
+
150
+ for ( const item of lyrics ) {
151
+ dataSouce [ item . startTime ] = { translate : item . text } ;
152
+ }
153
+
154
+ for ( const time in synced ) {
155
+ dataSouce [ item . startTime ] = {
156
+ ...dataSouce [ item . startTime ] ,
157
+ text : item . text
158
+ } ;
159
+ }
160
+
161
+ for ( const time in dataSouce ) {
162
+ const item = dataSouce [ time ] ;
163
+ const lyric = {
164
+ startTime : time || 0 ,
165
+ text : this . rubyTextToOriginalReact ( item . translate || item . text , item . text || item . translate )
166
+ } ;
167
+ data . push ( lyric ) ;
168
+ }
169
+
170
+ return data ;
171
+ } ,
172
+ rubyTextToOriginalReact ( translated , syncedText ) {
173
+ const react = Spicetify . React ;
174
+ return react . createElement ( "p1" , null , [ react . createElement ( "ruby" , { } , syncedText , react . createElement ( "rt" , null , translated ) ) ] ) ;
145
175
} ,
146
176
rubyTextToReact ( s ) {
147
177
const react = Spicetify . React ;
148
-
149
178
const rubyElems = s . split ( "<ruby>" ) ;
150
179
const reactChildren = [ ] ;
151
180
152
181
reactChildren . push ( rubyElems [ 0 ] ) ;
153
-
154
182
for ( let i = 1 ; i < rubyElems . length ; i ++ ) {
155
183
const kanji = rubyElems [ i ] . split ( "<rp>" ) [ 0 ] ;
156
184
const furigana = rubyElems [ i ] . split ( "<rt>" ) [ 1 ] . split ( "</rt>" ) [ 0 ] ;
157
-
158
185
reactChildren . push ( react . createElement ( "ruby" , null , kanji , react . createElement ( "rt" , null , furigana ) ) ) ;
159
186
160
187
reactChildren . push ( rubyElems [ i ] . split ( "</ruby>" ) [ 1 ] ) ;
161
188
}
162
-
163
189
return react . createElement ( "p1" , null , reactChildren ) ;
164
190
} ,
165
191
formatTime ( timestamp ) {
0 commit comments