diff --git a/src/main/kotlin/dev/typetype/server/services/NicoVideoProxyService.kt b/src/main/kotlin/dev/typetype/server/services/NicoVideoProxyService.kt index b6e3b102..6131c3ac 100644 --- a/src/main/kotlin/dev/typetype/server/services/NicoVideoProxyService.kt +++ b/src/main/kotlin/dev/typetype/server/services/NicoVideoProxyService.kt @@ -23,7 +23,7 @@ internal fun parseNicoCookie(fragment: String): String? { return cookieParam.substring(eqIdx + 1) } -internal fun rewriteNicoManifest(manifest: String, baseUrl: String, domandBid: String? = null, proxyPath: String = "/proxy/nicovideo"): String { +internal fun rewriteNicoManifest(manifest: String, baseUrl: String, domandBid: String? = null, proxyPath: String = "nicovideo"): String { val base = URI(baseUrl) val uriAttr = Regex("""URI="([^"]+)"""") val bidSuffix = if (domandBid != null) "&domand_bid=${URLEncoder.encode(domandBid, StandardCharsets.UTF_8)}" else "" diff --git a/src/main/kotlin/dev/typetype/server/services/OkHttpProxyService.kt b/src/main/kotlin/dev/typetype/server/services/OkHttpProxyService.kt index 48084557..f6d546f8 100644 --- a/src/main/kotlin/dev/typetype/server/services/OkHttpProxyService.kt +++ b/src/main/kotlin/dev/typetype/server/services/OkHttpProxyService.kt @@ -99,7 +99,7 @@ class OkHttpProxyService(private val client: OkHttpClient) : ProxyService { companion object { private const val BILIBILI_REFERER = "https://www.bilibili.com" - private const val PROXY_PATH = "/proxy" + private const val PROXY_PATH = "proxy" const val BROWSER_USER_AGENT = "Mozilla/5.0 (Linux; Android 13; Pixel 7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Mobile Safari/537.36" } diff --git a/src/test/kotlin/dev/typetype/server/NicoVideoProxyServiceTest.kt b/src/test/kotlin/dev/typetype/server/NicoVideoProxyServiceTest.kt index 3415a177..3a3e9796 100644 --- a/src/test/kotlin/dev/typetype/server/NicoVideoProxyServiceTest.kt +++ b/src/test/kotlin/dev/typetype/server/NicoVideoProxyServiceTest.kt @@ -43,7 +43,7 @@ class NicoVideoProxyServiceTest { """.trimIndent() val result = rewriteNicoManifest(manifest, base) val lines = result.lines() - val segLines = lines.filter { it.contains("/proxy/nicovideo?url=") } + val segLines = lines.filter { it.contains("nicovideo?url=") } assertEquals(2, segLines.size) assert(segLines[0].contains("seg-000001.ts")) assert(segLines[1].contains("seg-000002.ts")) @@ -58,7 +58,7 @@ class NicoVideoProxyServiceTest { https://delivery.domand.nicovideo.jp/hlsbid/abc/seg-000001.ts """.trimIndent() val result = rewriteNicoManifest(manifest, base) - val segLine = result.lines().first { it.contains("/proxy/nicovideo?url=") } + val segLine = result.lines().first { it.contains("nicovideo?url=") } assert(segLine.contains("delivery.domand.nicovideo.jp")) } @@ -70,7 +70,7 @@ class NicoVideoProxyServiceTest { val lines = result.lines() assert(lines[0] == "#EXTM3U") assert(lines[1] == "#EXT-X-VERSION:3") - assert(lines[2].startsWith("/proxy/nicovideo?url=")) + assert(lines[2].startsWith("nicovideo?url=")) } @Test @@ -79,7 +79,7 @@ class NicoVideoProxyServiceTest { val manifest = "#EXTM3U\n#EXT-X-MAP:URI=\"https://asset.domand.nicovideo.jp/init01.cmfv\"\nseg-001.ts" val result = rewriteNicoManifest(manifest, base) val mapLine = result.lines().first { it.startsWith("#EXT-X-MAP") } - assert(mapLine.contains("/proxy/nicovideo?url=")) { "Expected proxied URI in EXT-X-MAP: $mapLine" } + assert(mapLine.contains("nicovideo?url=")) { "Expected proxied URI in EXT-X-MAP: $mapLine" } assert(mapLine.contains("asset.domand.nicovideo.jp")) { "Expected asset domain in proxied URI: $mapLine" } } @@ -88,15 +88,15 @@ class NicoVideoProxyServiceTest { val base = "https://delivery.domand.nicovideo.jp/hlsbid/abc/video.m3u8" val manifest = "#EXTM3U\nseg-001.ts" val result = rewriteNicoManifest(manifest, base, domandBid = "abc123") - val segLine = result.lines().first { it.contains("/proxy/nicovideo?url=") } + val segLine = result.lines().first { it.contains("nicovideo?url=") } assert(segLine.contains("domand_bid=abc123")) { "Expected domand_bid in rewritten URL: $segLine" } } @Test fun `rewriteNicoManifest can use generic proxy path`() { val base = "https://delivery.domand.nicovideo.jp/hlsbid/abc/video.m3u8" - val result = rewriteNicoManifest("#EXTM3U\nseg-001.ts", base, domandBid = "abc123", proxyPath = "/proxy") - val segLine = result.lines().first { it.contains("/proxy?url=") } + val result = rewriteNicoManifest("#EXTM3U\nseg-001.ts", base, domandBid = "abc123", proxyPath = "proxy") + val segLine = result.lines().first { it.contains("proxy?url=") } assert(segLine.contains("domand_bid=abc123")) { "Expected domand_bid in generic proxy URL: $segLine" } }