Skip to content

Commit 5bd0fbe

Browse files
committed
feat: 完善anime变量提供
1 parent f770cdd commit 5bd0fbe

File tree

3 files changed

+23
-12
lines changed

3 files changed

+23
-12
lines changed

plugins/common-plugin/src/main/kotlin/io/github/shoaky/sourcedownloader/common/anime/AnimeVariableProvider.kt

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,13 @@ import io.github.shoaky.sourcedownloader.sdk.component.VariableProvider
1717
import io.github.shoaky.sourcedownloader.sdk.util.TextClear
1818
import me.xdrop.fuzzywuzzy.FuzzySearch
1919
import org.slf4j.LoggerFactory
20-
import kotlin.io.path.Path
20+
import kotlin.io.path.name
2121

2222
/**
2323
* 从SourceItem.title中提取和清洗标题给anilist或bgmtv进行搜索获取对应元数据,
2424
* 会自动根据title中的语言来决定用哪个网站进行搜索
2525
*/
26-
@Deprecated("需要拆分")
26+
// TODO 重构成可扩展的
2727
class AnimeVariableProvider(
2828
private val bgmTvApiClient: BgmTvApiClient,
2929
private val anilistClient: AnilistClient,
@@ -59,13 +59,24 @@ class AnimeVariableProvider(
5959
if (sourceFile.path.isAbsolute) {
6060
return PatternVariables.EMPTY
6161
}
62-
63-
sourceFile.path
64-
return PatternVariables.EMPTY
62+
// 获取第二级,并且还要进行一些过滤
63+
val targetPathIndex = 1
64+
val subPath = sourceFile.path.toList().getOrNull(targetPathIndex)
65+
if (subPath == sourceFile.path.fileName || subPath == null) {
66+
return PatternVariables.EMPTY
67+
}
68+
val name = subPath.name
69+
// 先简单过滤后面根据情况添加
70+
if (name.length < 10) {
71+
return PatternVariables.EMPTY
72+
}
73+
74+
val title = extractTitle(name)
75+
return searchCache[title]
6576
}
6677

6778
private fun create(sourceItem: SourceItem): Anime {
68-
val title = extractTitle(sourceItem)
79+
val title = extractTitle(sourceItem.title)
6980
return searchCache[title]
7081
}
7182

@@ -175,8 +186,8 @@ class AnimeVariableProvider(
175186
)
176187
private val bracketsRegex = Regex("\\[.*?]")
177188

178-
fun extractTitle(sourceItem: SourceItem): String {
179-
val text = textClear.input(sourceItem.title)
189+
fun extractTitle(rawTitle: String): String {
190+
val text = textClear.input(rawTitle)
180191
val removedBucket = text.replace(bracketsRegex, "").trim()
181192
if (removedBucket.length > 12) {
182193
val sp = listOf("/", "|").firstOrNull {

plugins/common-plugin/src/main/kotlin/io/github/shoaky/sourcedownloader/common/anime/BgmTvVariableProvider.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ class BgmTvVariableProvider(
3838
}
3939

4040
override fun itemVariables(sourceItem: SourceItem): PatternVariables {
41-
val title = AnimeVariableProvider.extractTitle(sourceItem)
41+
val title = AnimeVariableProvider.extractTitle(sourceItem.title)
4242
return searchCache.get(title)
4343
}
4444

plugins/common-plugin/src/test/kotlin/io/github/shoaky/sourcedownloader/common/anime/AnimeVariableProviderTest.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package io.github.shoaky.sourcedownloader.common.anime
22

3-
import com.sun.jdi.Value
43
import io.github.shoaky.sourcedownloader.external.anilist.AnilistClient
54
import io.github.shoaky.sourcedownloader.external.bangumi.BgmTvApiClient
65
import io.github.shoaky.sourcedownloader.sdk.PatternVariables
@@ -48,11 +47,12 @@ class AnimeVariableProviderTest {
4847
}
4948
}
5049

51-
@Test
50+
//@Test
5251
fun test_file() {
5352
val provider = AnimeVariableProvider(
5453
BgmTvApiClient(),
55-
AnilistClient()
54+
AnilistClient(),
55+
true
5656
)
5757
val path = Path(
5858
"[VCB-Studio] Yama no Susume",

0 commit comments

Comments
 (0)