@@ -6,6 +6,9 @@ import dev.brahmkshatriya.echo.common.MusicExtension
66import dev.brahmkshatriya.echo.common.clients.ExtensionClient
77import dev.brahmkshatriya.echo.common.clients.LyricsClient
88import dev.brahmkshatriya.echo.common.helpers.PagedData
9+ import dev.brahmkshatriya.echo.common.models.Feed
10+ import dev.brahmkshatriya.echo.common.models.Feed.Companion.loadAll
11+ import dev.brahmkshatriya.echo.common.models.Feed.Companion.toFeed
912import dev.brahmkshatriya.echo.common.models.Lyrics
1013import dev.brahmkshatriya.echo.common.models.Track
1114import dev.brahmkshatriya.echo.common.providers.LyricsExtensionsProvider
@@ -26,13 +29,18 @@ class LyricsTranslator : ExtensionClient, LyricsClient, LyricsExtensionsProvider
2629
2730 // //--------------------------------------------------------------------------------------------
2831 // ExtensionClient
29- override val settingItems : List <Setting > by lazy {
30- listOf (
32+ override suspend fun getSettingItems () : List <Setting > {
33+ return listOf (
3134 SettingSwitch (
3235 title = " Translate Lyrics" ,
3336 key = " translateLyrics" ,
3437 defaultValue = true
3538 ),
39+ SettingSwitch (
40+ title = " Romanize Translated Lyrics" ,
41+ key = " romanizeTranslatedLyrics" ,
42+ defaultValue = false
43+ ),
3644 SettingList (
3745 title = " Translation Language" ,
3846 key = " translationLanguage" ,
@@ -74,12 +82,16 @@ class LyricsTranslator : ExtensionClient, LyricsClient, LyricsExtensionsProvider
7482 return settings.getString(" preferLyricsFrom" )
7583 }
7684
85+ private fun romanizeTranslatedLyrics (): Boolean {
86+ return settings.getBoolean(" romanizeTranslatedLyrics" ) == true
87+ }
88+
7789 // //--------------------------------------------------------------------------------------------
7890 // LyricsClient
7991
8092 override suspend fun loadLyrics (lyrics : Lyrics ): Lyrics {
8193 if (lyrics.lyrics != null ) {
82- return lyrics.translate(selectedLanguage())
94+ return lyrics.translate(selectedLanguage(), romanizeTranslatedLyrics() )
8395 } else {
8496 val id = lyrics.getIdFromLyric()!!
8597 val extension =
@@ -89,7 +101,7 @@ class LyricsTranslator : ExtensionClient, LyricsClient, LyricsExtensionsProvider
89101 val client: LyricsClient ? = extension.instance.value().getOrThrow() as ? LyricsClient
90102 return runMutatedCatching(extension) {
91103 client?.loadLyrics(lyrics)
92- ?.translate(selectedLanguage()) ? : lyrics
104+ ?.translate(selectedLanguage(), romanizeTranslatedLyrics() ) ? : lyrics
93105 }
94106 }
95107 }
@@ -108,7 +120,7 @@ class LyricsTranslator : ExtensionClient, LyricsClient, LyricsExtensionsProvider
108120 return @mapNotNull null
109121 }
110122 runMutatedCatching(lyricsExtension) {
111- client.searchTrackLyrics(clientId, track).loadList( null ).data
123+ client.searchTrackLyrics(clientId, track).loadAll()
112124 .map { it.updateMetadata(lyricsExtension) }
113125 }
114126 } catch (e: Exception ) {
@@ -126,7 +138,7 @@ class LyricsTranslator : ExtensionClient, LyricsClient, LyricsExtensionsProvider
126138 client.searchTrackLyrics(
127139 clientId,
128140 track
129- ).loadList( null ).data .map { it.updateMetadata(musicExtension) }
141+ ).loadAll() .map { it.updateMetadata(musicExtension) }
130142 }
131143 } catch (e: Exception ) {
132144 null
@@ -144,10 +156,10 @@ class LyricsTranslator : ExtensionClient, LyricsClient, LyricsExtensionsProvider
144156 return preferredLyrics + currentClient + otherLyrics
145157 }
146158
147- override fun searchTrackLyrics (clientId : String , track : Track ): PagedData <Lyrics > =
159+ override suspend fun searchTrackLyrics (clientId : String , track : Track ): Feed <Lyrics > =
148160 PagedData .Single {
149161 getAllLyrics(clientId, track)
150- }
162+ }.toFeed()
151163
152164 // //--------------------------------------------------------------------------------------------
153165 // LyricsExtensionsProvider
0 commit comments