Skip to content

Commit 31a7490

Browse files
committed
update to echo v3 & romanization
1 parent f274cd7 commit 31a7490

File tree

7 files changed

+47
-34
lines changed

7 files changed

+47
-34
lines changed

app/build.gradle.kts

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,8 @@ plugins {
77

88
dependencies {
99
implementation(project(":ext"))
10-
val libVersion: String by project
11-
compileOnly("com.github.brahmkshatriya:echo:$libVersion")
12-
compileOnly("org.jetbrains.kotlin:kotlin-stdlib:2.1.0")
10+
compileOnly("dev.brahmkshatriya.echo:common:1.0")
11+
compileOnly("org.jetbrains.kotlin:kotlin-stdlib:2.2.10")
1312
}
1413

1514
val extType: String by project
@@ -58,11 +57,11 @@ tasks.register("uninstall") {
5857

5958
android {
6059
namespace = "dev.brahmkshatriya.echo.extension"
61-
compileSdk = 35
60+
compileSdk = 36
6261
defaultConfig {
6362
applicationId = "dev.brahmkshatriya.echo.extension.$extId"
6463
minSdk = 24
65-
targetSdk = 35
64+
targetSdk = 36
6665

6766
manifestPlaceholders.apply {
6867
put("type", "dev.brahmkshatriya.echo.${extType}")

build.gradle.kts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
plugins {
2-
id("com.android.application") version "8.10.0" apply false
3-
id("org.jetbrains.kotlin.android") version "2.1.0" apply false
4-
id("org.jetbrains.kotlin.jvm") version "2.0.0" apply false
2+
id("com.android.application") version "8.13.0" apply false
3+
id("org.jetbrains.kotlin.android") version "2.2.10" apply false
4+
id("org.jetbrains.kotlin.jvm") version "2.2.10" apply false
55
}

ext/build.gradle.kts

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import java.io.IOException
44
plugins {
55
id("java-library")
66
id("org.jetbrains.kotlin.jvm")
7-
id("com.gradleup.shadow") version "8.3.0"
7+
id("com.gradleup.shadow") version "9.1.0"
88
kotlin("plugin.serialization") version "2.1.0"
99
}
1010

@@ -18,18 +18,17 @@ kotlin {
1818
}
1919

2020
dependencies {
21-
val libVersion: String by project
2221
implementation("com.github.rebelonion:translator:1.1.2") {
2322
exclude("org.jetbrains.kotlin", "kotlin-stdlib")
2423
exclude("org.jetbrains.kotlinx", "kotlinx-coroutines-core")
2524
exclude("org.jetbrains.kotlinx", "kotlinx-serialization-json")
2625
exclude("com.squareup.okhttp3", "okhttp")
2726
}
28-
compileOnly("com.github.brahmkshatriya:echo:$libVersion")
29-
compileOnly("org.jetbrains.kotlin:kotlin-stdlib:2.1.0")
27+
compileOnly("dev.brahmkshatriya.echo:common:1.0")
28+
compileOnly("org.jetbrains.kotlin:kotlin-stdlib:2.2.10")
3029
//compile only kotlinx serialization
31-
compileOnly("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3")
32-
compileOnly("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.1")
30+
compileOnly("org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0")
31+
compileOnly("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2")
3332
}
3433

3534
// Extension properties goto `gradle.properties` to set values

ext/src/main/java/dev/brahmkshatriya/echo/extension/LyricsTranslator.kt

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ import dev.brahmkshatriya.echo.common.MusicExtension
66
import dev.brahmkshatriya.echo.common.clients.ExtensionClient
77
import dev.brahmkshatriya.echo.common.clients.LyricsClient
88
import 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
912
import dev.brahmkshatriya.echo.common.models.Lyrics
1013
import dev.brahmkshatriya.echo.common.models.Track
1114
import 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

ext/src/main/java/dev/brahmkshatriya/echo/extension/lyricsTranslator/helpers/Translation.kt

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import kotlinx.coroutines.withContext
99
import dev.rebelonion.translator.Language
1010
import dev.rebelonion.translator.Translator
1111

12-
suspend fun Lyrics.translate(language: Language?): Lyrics {
12+
suspend fun Lyrics.translate(language: Language?, romanize: Boolean): Lyrics {
1313
if (language == null) {
1414
return this
1515
}
@@ -18,17 +18,17 @@ suspend fun Lyrics.translate(language: Language?): Lyrics {
1818
title = title,
1919
subtitle = subtitle,
2020
lyrics = when (val lyr = this.lyrics) {
21-
is Lyrics.Timed -> translate(lyr, language)
22-
is Lyrics.Simple -> translate(lyr, language)
21+
is Lyrics.Timed -> translate(lyr, language, romanize)
22+
is Lyrics.Simple -> translate(lyr, language, romanize)
2323
else -> lyr
2424
},
2525
extras = extras
2626
)
2727
}
2828

29-
suspend fun translate(lyrics: Lyrics.Timed, language: Language): Lyrics.Timed {
29+
suspend fun translate(lyrics: Lyrics.Timed, language: Language, romanize: Boolean): Lyrics.Timed {
3030
val stings = lyrics.list.map { it.text }
31-
val translationMap = translateList(stings, language, hardFail = true) ?: return lyrics
31+
val translationMap = translateList(stings, language, hardFail = true, romanize) ?: return lyrics
3232
val items = mutableListOf<Lyrics.Item>()
3333
lyrics.list.forEach {
3434
val translatedText = translationMap[it.text] ?: it.text
@@ -37,8 +37,8 @@ suspend fun translate(lyrics: Lyrics.Timed, language: Language): Lyrics.Timed {
3737
return Lyrics.Timed(items)
3838
}
3939

40-
suspend fun translate(lyrics: Lyrics.Simple, language: Language): Lyrics.Simple {
41-
val translationMap = translateList(listOf(lyrics.text), language, hardFail = true) ?: return lyrics
40+
suspend fun translate(lyrics: Lyrics.Simple, language: Language, romanize: Boolean): Lyrics.Simple {
41+
val translationMap = translateList(listOf(lyrics.text), language, hardFail = true, romanize) ?: return lyrics
4242
val translatedText = translationMap[lyrics.text] ?: lyrics.text
4343
return Lyrics.Simple(translatedText)
4444
}
@@ -48,7 +48,8 @@ private val translationCache = TimeBasedLRUCache<Map<String, String>>(1000)
4848
private suspend fun translateList(
4949
list: List<String>,
5050
language: Language,
51-
hardFail: Boolean = false
51+
hardFail: Boolean = false,
52+
romanize: Boolean
5253
): Map<String, String>? {
5354
if (list.isEmpty()) {
5455
return emptyMap()
@@ -87,7 +88,11 @@ private suspend fun translateList(
8788
}
8889

8990
val translated = translatedCatch.getOrNull() ?: return@async null
90-
translated.translatedText.split("\n")
91+
if (romanize) {
92+
(translated.translatedPronunciation ?: translated.translatedText).split("\n")
93+
} else {
94+
translated.translatedText.split("\n")
95+
}
9196
}
9297
}.awaitAll()
9398

gradle.properties

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@ android.useAndroidX=true
33
kotlin.code.style=official
44
android.nonTransitiveRClass=true
55

6-
libVersion=e0f9973799
7-
86
extType=lyrics
97
extId=lyricstranslator
108
extClass=LyricsTranslator
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#Mon Feb 19 15:14:17 IST 2024
22
distributionBase=GRADLE_USER_HOME
33
distributionPath=wrapper/dists
4-
distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip
4+
distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip
55
zipStoreBase=GRADLE_USER_HOME
66
zipStorePath=wrapper/dists

0 commit comments

Comments
 (0)